Switch to unified view

a/MatLib.mod.m2pp b/MatLib.mod.m2pp
...
...
64
  (* 25.10.17, MRi: Einfuegen von TransposeMN aus Testumgebung              *)
64
  (* 25.10.17, MRi: Einfuegen von TransposeMN aus Testumgebung              *)
65
  (* 07.12.17, MRi: Einfuegen von StuerzMN,NeumaierSum & NeumaierProdSum    *)
65
  (* 07.12.17, MRi: Einfuegen von StuerzMN,NeumaierSum & NeumaierProdSum    *)
66
  (*                aus Testumgebung                                        *)
66
  (*                aus Testumgebung                                        *)
67
  (* 30.05.18, MRi: Einfuegen von TriInfNorm                                *)
67
  (* 30.05.18, MRi: Einfuegen von TriInfNorm                                *)
68
  (* 10.06.18, MRi: ZufallMat um den nicht-quadratischen Fall ergaenzt      *)
68
  (* 10.06.18, MRi: ZufallMat um den nicht-quadratischen Fall ergaenzt      *)
69
  (* 12.09.18, MRi: CMatVekProd erweitert und an MatVekProd angepasst       *)
69
  (*------------------------------------------------------------------------*)
70
  (*------------------------------------------------------------------------*)
70
  (* Offene Punkte                                                          *)
71
  (* Offene Punkte                                                          *)
71
  (*                                                                        *)
72
  (*                                                                        *)
72
  (* - Nachsehen ob InitMat nicht "gelitten" hat                            *)
73
  (* - Nachsehen ob InitMat nicht "gelitten" hat                            *)
73
  (* - Komplexe Typen auf ISO M2 umstellen                                  *)
74
  (* - Komplexe Typen auf ISO M2 umstellen                                  *)
...
...
940
          END;
941
          END;
941
        END;
942
        END;
942
      END;
943
      END;
943
END MatVekProd;
944
END MatVekProd;
944
945
945
PROCEDURE CMatVekProd(VAR X   : ARRAY OF LONGCOMPLEX;
946
PROCEDURE CMatVekProd(VAR Y     : ARRAY OF LONGCOMPLEX;
946
                      VAR Mat : ARRAY OF ARRAY OF LONGCOMPLEX;
947
                      VAR A     : ARRAY OF ARRAY OF LONGCOMPLEX;
947
                          Vek : ARRAY OF LONGCOMPLEX;
948
                          X     : ARRAY OF LONGCOMPLEX;
948
                          dim : CARDINAL); (* Dim d. Matrix *)
949
                          M,N   : CARDINAL;
950
                          trans : CHAR);
949
951
950
          VAR  i,j  : CARDINAL;
952
          VAR  i,j   : CARDINAL;
951
               CSum : LONGCOMPLEX;
953
               Xi,Yi : LONGCOMPLEX;
952
BEGIN
954
BEGIN
953
      FOR i:=0 TO dim-1 DO
955
      IF (CAP(trans) = "N") THEN (* y = A*x *)
954
        CSum:=CMPLX(0.0,0.0);
955
        FOR j:=0 TO dim-1 DO
956
        FOR i:=0 TO M-1 DO
956
          CSum:=CSum + Mat[i,j]*Vek[j];
957
          Yi := zero;
958
          FOR j:=0 TO N-1 DO Yi:=Yi + A[i,j]*X[j]; END;
959
          Y[i]:=Yi;
960
        END;
961
      ELSIF (CAP(trans) = "T") THEN (* y = A^{tr}*x *)
962
        FOR j:=0 TO N-1 DO Y[j]:=zero; END;
963
        FOR i:=0 TO M-1 DO
964
          IF (X[i] # zero) THEN
965
            Xi := X[i];
966
            FOR j:=0 TO N-1 DO Y[j]:=Y[j] + A[i,j]*Xi; END;
957
        END;
967
          END;
958
        X[i]:=CSum;
968
        END;
959
      END; (* FOR i *)
969
      ELSIF (CAP(trans) = "C") THEN (* y = conj(A^{tr})*x *)
970
        FOR j:=0 TO N-1 DO Y[j]:=zero; END;
971
        FOR i:=0 TO M-1 DO
972
          IF (X[i] # zero) THEN
973
            Xi := X[i];
974
            FOR j:=0 TO N-1 DO
975
              Y[j]:=Y[j] + LongComplexMath.conj(A[i,j])*Xi; 
976
            END;
977
          END;
978
        END;
979
      ELSE
980
        Errors.FatalError("trans # CAP({N|T|C}) (CMatVekProd)");
981
      END;
960
END CMatVekProd;
982
END CMatVekProd;
961
983
962
PROCEDURE SvVekProd(VAR Y   : ARRAY OF LONGREAL; (*  ==> *)
984
PROCEDURE SvVekProd(VAR Y   : ARRAY OF LONGREAL; (*  ==> *)
963
                    VAR A   : ARRAY OF LONGREAL; (* <==  SUPERVEKTOR *)
985
                    VAR A   : ARRAY OF LONGREAL; (* <==  SUPERVEKTOR *)
964
                    VAR X   : ARRAY OF LONGREAL; (* <==  *)
986
                    VAR X   : ARRAY OF LONGREAL; (* <==  *)