За операцию возведения в квадрат методом «треугольника» отвечает процедура SquareTri./ Вычисление квадрата длинного числа С = А2 методом «треугольника»

void SquareTri(

DIGIT C[ ],   /* результат длины 2n цифр */

const DIGIT A[ ],   /* основание длины n цифр */

int n)      /* длина основания */

{

TWODIGIT t,f;

int i,j;

Zero (С, 2*n);

for (i=0; i<n; i++)

{              f=0;

for (j=0; j<n; j++)

{              t = (TWODIGIT)A[i]*(TWODIGIT)A[j];

f += (((TWODIGIT)LODIGIT(t))«1)+C[i+j];

C[i+j] = LODIGIT(f);

f= HIDIGIT(f);

f+= (((TWODIGlT)HIDIGIT(t))«1);

}

t = (TWODIGIT)A[i|*(TWODIGIT)A[i];

f += LODIGIT(t)+C[i+i];

C[i+i] = LODIGIT(i);

f = HIDIGIT(f)+C[i+i+1]+HIDIGIT(t);

C|i+i+1]= LODIGIT(f);

C[i+i+2] = HIDIGIT(f);

}

}

Сложность этого алгоритма O(n2).