real procedure SYMDET1 (A,i,j,n); value n; integer i,j,n; real A; begin integer k; real d,r; array v[1:n]; d:= 1; for k:= 1 step 1 until n do begin j:= k; for i:= 1 step 1 until k do v[i]:= A; i:= k; A:= r:= sqrt (v[k] - SUM (i,1,k-1,v[i] ** 2)); d:= r * d; for j:= k+1 step 1 until n do begin i:= k; A:= (A - SUM (i,1,k-1,A * v[i])) / r end end LU; SYMDET1 := d ** 2 end SYMDET1 ; procedure SYMSOL1(A,i,j,n,b); value n; integer i,j,n; real A; array b; begin real r; for j:= 1 step 1 until n do begin i:= j; r:= A; b[j]:= (b[j] - SUM (i,1,j-1,A * b[i])) / r end; for i:= n step -1 until 1 do begin j:= i; r:= A; b[i]:= (b[i] - SUM (j,i+1,n,A * b[j])) / r end end SYMSOL1 ; procedure SYMINV1 (A,i,j,n); value n; integer i,j,n; real A; begin integer k; real r; array v[1:n]; for k:= 1 step 1 until n do begin i:= j:= k; A:= v[k]:= 1 / A; for j:= k+1 step 1 until n do begin i:= j; r:= A; i:= k; A:= v[j]:= - SUM (i,k,j-1,A * v[i]) / r end; for i:= 1 step 1 until k do begin j:= k; A:= SUM (j,k,n,A * v[j]) end end end SYMINV1 ; procedure syminv1(A,i,j,n,d); value n; integer i,j,n; real A; array d; begin integer k; real r; for k:= 1 step 1 until n do begin i:= j:= k; d[k]:= 1 / A; for j:= k+1 step 1 until n do begin i:= j; r:= A; d[j]:= - SUM (i,k,j-1,A * d[i]) / r end; d[k]:= SUM (j,k,n,d[j] ** 2) end end syminv1 ; real procedure SYMDET2 (A,n,alfa); value n,alfa; integer n; real alfa; integer array A; begin integer i,j,k,kk,kj; real d; d:= 1; kk:= 0; for k:= 1 step 1 until n do begin kk:= kk+k; A[kk]:= sqrt(A[kk] * alfa - INPROD(i,1-k,-1,A[kk+i],A[kk+i])); d:= A[kk] * d; kj:= kk; for j:= k+1 step 1 until n do begin kj:= kj+j-1; A[kj]:= (A[kj] * alfa - INPROD (i,1-k,-1,A[kj+i],A[kk+i])) / A[kk] end end LU; SYMDET2:= d ** 2 / alfa ** n end SYMDET2; procedure SYMSOL2 (A,n,alfa,b); value n,alfa; integer n; real alfa; integer array A; real array b; begin integer i,j,j0; integer array J[1:n]; j0:= 0; for j:= 1 step 1 until n do begin b[j]:= (b[j] * alfa - SUM (i,1,j-1,A[i+j0] * b[i]))/A[j+j0]; J[j]:= j0; j0:= j0+j end; for i:= n step -1 until 1 do b[i]:= (b[i] - SUM (j,i+1,n,A[i + J[j]] * b[j]))/A[i + J[i]] end SYMSOL2;