code 34286; procedure PSDINVSVD(U, VAL, V, M, N, EM); value M, N; integer M, N; array U, VAL, V, EM; begin integer I, J; real MIN, VALI; array X[1:N]; MIN:= EM[6]; for I:= 1 step 1 until N do if VAL[I] > MIN then begin VALI:= 1 / VAL[I]; for J:= 1 step 1 until M do U[J,I]:= U[J,I] * VALI end else for J:= 1 step 1 until M do U[J,I]:= 0; for I:= 1 step 1 until M do begin for J:= 1 step 1 until N do X[J]:= U[I,J]; for J:= 1 step 1 until N do U[I,J]:= MATVEC(1, N, J, V, X) end end PSDINVSVD; eop