comment  ================== 34010 =================
;
real procedure VECVEC(L, U, SHIFT, A, B); 
  value L, U, SHIFT;
  integer L, U, SHIFT;
  array A, B;
begin;
    integer K;
    real S;
    S := 0;
    for K := L step 1 until U do
      S := A[K] × B[SHIFT + K] + S;
    VECVEC := S;
end VECVEC;
comment  ================== 34011 =================
;
real procedure MATVEC(L, U, I, A, B); 
  value L, U, I;
  integer L, U, I;
  array A, B;
begin;
    integer K;
    real S;
    S := 0;
    for K := L step 1 until U do
      S := A[I, K] × B[K] + S;
    MATVEC := S;
end MATVEC;
comment  ================== 34012 =================
;
real procedure TAMVEC(L, U, I, A, B); 
  value L, U, I;
  integer L, U, I;
  array A, B;
begin;
    integer K;
    real S;
    S := 0;
    for K := L step 1 until U do
      S := A[K, I] × B[K] + S;
    TAMVEC := S;
end TAMVEC;
comment  ================== 34013 =================
;
real procedure MATMAT(L, U, I, J, A, B); 
  value L, U, I, J;
  integer L, U, I, J;
  array A, B;
begin;
    integer K;
    real S;
    S := 0;
    for K := L step 1 until U do
      S := A[I, K] × B[K, J] + S;
    MATMAT := S;
end MATMAT;
comment  ================== 34014 =================
;
real procedure TAMMAT(L, U, I, J, A, B); 
  value L, U, I, J;
  integer L, U, I, J;
  array A, B;
begin;
    integer K;
    real S;
    S := 0;
    for K := L step 1 until U do
      S := A[K, I] × B[K, J] + S;
    TAMMAT := S;
end TAMMAT;
comment  ================== 34015 =================
;
real procedure MATTAM(L, U, I, J, A, B); 
  value L, U, I, J;
  integer L, U, I, J;
  array A, B;
begin;
    integer K;
    real S;
    S := 0;
    for K := L step 1 until U do
      S := A[I, K] × B[J, K] + S;
    MATTAM := S;
end MATTAM;
comment  ================== 34016 =================
;
real procedure SEQVEC(L, U, IL, SHIFT, A, B); 
  value L, U, IL, SHIFT;
  integer L, U, IL, SHIFT;
  array A, B;
begin;
    real S;
    S := 0;
    for L := L step 1 until U do
      begin;
        S := A[IL] × B[L + SHIFT] + S;
        IL := IL + L;
    end;
    SEQVEC := S;
end SEQVEC;
comment  ================== 34017 =================
;
real procedure SCAPRD1(LA, SA, LB, SB, N, A, B); 
  value LA, SA, LB, SB, N;
  integer LA, SA, LB, SB, N;
  array A, B;
begin;
    real S;
    integer K;
    S := 0;
    for K := 1 step 1 until N do
      begin;
        S := A[LA] × B[LB] + S;
        LA := LA + SA;
        LB := LB + SB;
    end;
    SCAPRD1 := S;
end SCAPRD1;
comment  ================== 34018 =================
;
real procedure SYMMATVEC(L, U, I, A, B); 
  value L, U, I;
  integer L, U, I;
  array A, B;
begin;
    integer K, M;
    real procedure VECVEC(L, U, SHIFT, A, B); code 34010;
    
    real procedure SEQVEC(L, U, IL, SHIFT, A, B); code 34016;
    
    M := if L > I then L else I;
    K := M × (M - 1) // 2;
    SYMMATVEC := VECVEC(L, if I ≤ U then I - 1 else U, K, B, A) + SEQVEC(M, U, K + I, 0, A, B);
end SYMMATVEC;
comment  ================== 31500 =================
;
procedure FULMATVEC(LR, UR, LC, UC, A, B, C); 
  value LR, UR, LC, UC, B;
  integer LR, UR, LC, UC;
  array A, B, C;
begin;
    real procedure MATVEC(L, U, I, A, B); code 34011;
    
    for LR := LR step 1 until UR do
      C[LR] := MATVEC(LC, UC, LR, A, B);
    ;
end FULMATVEC;
comment  ================== 31501 =================
;
procedure FULTAMVEC(LR, UR, LC, UC, A, B, C); 
  value LR, UR, LC, UC, B;
  integer LR, UR, LC, UC;
  array A, B, C;
begin;
    real procedure TAMVEC(L, U, I, A, B); code 34012;
    
    for LC := LC step 1 until UC do
      C[LC] := TAMVEC(LR, UR, LC, A, B);
    ;
end FULTAMVEC;
comment  ================== 31502 =================
;
procedure FULSYMMATVEC(LR, UR, LC, UC, A, B, C); 
  value LR, UR, LC, UC, B;
  integer LR, UR, LC, UC;
  array A, B, C;
begin;
    real procedure SYMMATVEC(L, U, I, A, B); code 34018;
    
    for LR := LR step 1 until UR do
      C[LR] := SYMMATVEC(LC, UC, LR, A, B);
end FULSYMMATVEC;
comment  ================== 31503 =================
;
procedure RESVEC(LR, UR, LC, UC, A, B, C, X); 
  value LR, UR, LC, UC, X;
  integer LR, UR, LC, UC;
  real X;
  array A, B, C;
begin;
    real procedure MATVEC(L, U, I, A, B); code 34011;
    
    for LR := LR step 1 until UR do
      C[LR] := MATVEC(LC, UC, LR, A, B) + C[LR] × X;
end RESVEC;
comment  ================== 31504 =================
;
procedure SYMRESVEC(LR, UR, LC, UC, A, B, C, X); 
  value LR, UR, LC, UC, X;
  integer LR, UR, LC, UC;
  real X;
  array A, B, C;
begin;
    real procedure SYMMATVEC(L, U, I, A, B); code 34018;
    
    for LR := LR step 1 until UR do
      C[LR] := SYMMATVEC(LC, UC, LR, A, B) + C[LR] × X;
end SYMRESVEC;
comment  ================== 34214 =================
;
real procedure RNK1MIN(N, X, G, H, FUNCT, IN, OUT); 
  value N;
  integer N;
  array X, G, H, IN, OUT;
  real procedure FUNCT;
begin;
    integer I, IT, N2, CNTL, CNTE, EVL, EVLMAX;
    Boolean OK;
    real F, F0, FMIN, MU, DG, DG0, GHG, GS, NRMDELTA, ALFA, MACHEPS, RELTOL, ABSTOL, EPS, TOLG,