Запись разложения Холецкого на языке Сигма
Перейти к навигации
Перейти к поиску
Для старой программы, использующей компактную укладку нижнего треугольника исходной матрицы в одномерный массив
subroutine AFCER (a,n)
integer n,ip,iq,ir,ip1,j,i,k
real a,x,sqrt
dimension a(1)
do 50 i=1,n
do 50 j=1,i
x = a( (i**2-i)/2+j )
if (j.eq.1) goto 20
do 10 k=1,j-1
x = x - a( (i**2-i)/2+k ) * a( (j**2-j)/2+k )
10 continue
20 if (i.ne.j) goto 30
a( (i**2+i)/2 ) = sqrt(x)
goto 50
30 a( (i**2-i)/2+j ) = x / a( (j**2+j)/2 )
50 continue
return
end
выполнена запись графа алгоритма на языке Сигма в сжатом виде:
AFCER (A: R, N: II)
1| I, J | I: 1..N, J: 1..I
2 = { A @ (I**2-I)/2+J }
3| I, J, K | I: 2..N, J: 2..I, K: 1..J-1
4 = { K=1 : 2 @ I, J !: 4 @ I, J, K-1 } + { 8 @ I, K } * { 8 @ J, K }
5| I, J | 1#1, I=J
6 = SQRT ({ I=1 : 2 @ I, J !: 4 @ I, I, I-1 })
7| I, J | 3#1, J: 1..I-1
8 = { J=1 : 2 @ I, 1 !: 4 @ I, J, J-1 } / { 6 @ J, J }
.