Switch to unified view

a/MatLib.def b/MatLib.def
...
...
372
PROCEDURE MatMatProdNN(    M,N,K : CARDINAL;
372
PROCEDURE MatMatProdNN(    M,N,K : CARDINAL;
373
                       VAR C     : ARRAY OF ARRAY OF LONGREAL;
373
                       VAR C     : ARRAY OF ARRAY OF LONGREAL;
374
                       VAR A,B   : ARRAY OF ARRAY OF LONGREAL);
374
                       VAR A,B   : ARRAY OF ARRAY OF LONGREAL);
375
375
376
          (*----------------------------------------------------------------*)
376
          (*----------------------------------------------------------------*)
377
          (* This procedure computes C = A*B using unrolled loops           *)
377
          (* MatMatProdNN calculates the product of matrix A times matrix   *)
378
          (*                                                                *)
378
          (* B, the resulting matrix is stored in C. The procedure uses     *)
379
          (* Input Paramaters                                               *)
379
          (* unrolled loops.                                                *)
380
          (*                                                                *)
381
          (*   M  : number of rows in C                                     *)
382
          (*   N  : no. of columns in C                                     *)
383
          (*   K  : no. of columns in A and no. of rows in B                *)
384
          (*   A  : first matrix,  M x K                                    *)
385
          (*   B  : second matrix, K x N                                    *)
386
          (*                                                                *)
387
          (* Output Parameter                                               *)
388
          (*                                                                *)
389
          (*   C  : A*B, M x N                                              *)
380
          (*                                                                *)
381
          (*  ==> M : row dimension of matix A and resulting matrix C       *)
382
          (*  ==> K : row dimension of matix B and length of a single       *)
383
          (*          vector in matrixs A                                   *)
384
          (*  ==> N : length of a single vector in matrixs B                *)
385
          (*  ==> A : is a M by K matrix A[0..M-1][0..K-1]                  *)
386
          (*  ==> B : is a K by N matrix B[0..K-1][0..N-1]                  *)
387
          (*                                                                *)
388
          (* <==  C : is a M by N matrix C[0..M-1][0..N-1] (result)         *)
389
          (*                                                                *)
390
          (*          (A11 A12 ... A1K)   (B11 B12 B13 B14 ... B1N)         *)
391
          (*  (C) =   (A21 A22 ... A2K) x (B21 B22 B23 B24 ... B2N)         *)
392
          (*          (A31 A32 ... A3K)   (BK1 BK2 BK3 BK4 ... BKN)         *)
393
          (*          (AM1 AM2 ... AMK)                                     *)
390
          (*----------------------------------------------------------------*)
394
          (*----------------------------------------------------------------*)
391
395
392
PROCEDURE MatMatProdTN(    M,N,K : CARDINAL;
396
PROCEDURE MatMatProdTN(    M,N,K : CARDINAL;
393
                       VAR C     : ARRAY OF ARRAY OF LONGREAL;
397
                       VAR C     : ARRAY OF ARRAY OF LONGREAL;
394
                       VAR A,B   : ARRAY OF ARRAY OF LONGREAL);
398
                       VAR A,B   : ARRAY OF ARRAY OF LONGREAL);
...
...
749
753
750
PROCEDURE ZufallVec(VAR V   : ARRAY OF LONGREAL;
754
PROCEDURE ZufallVec(VAR V   : ARRAY OF LONGREAL;
751
                        dim : CARDINAL);
755
                        dim : CARDINAL);
752
756
753
          (*----------------------------------------------------------------*)
757
          (*----------------------------------------------------------------*)
754
          (* Erzeugt einen Vektor mit Zufallszahlen im Berech [-1,1].        *)
758
          (* Erzeugt einen Vektor mit Zufallszahlen im Bereich [-1,1]       *)
759
          (*                                                                *)
760
          (* Generate a vector with random numbers in the interval [-1,1]   *)
755
          (*----------------------------------------------------------------*)
761
          (*----------------------------------------------------------------*)
756
762
757
PROCEDURE ZufallMat(VAR M   : ARRAY OF ARRAY OF LONGREAL;
763
PROCEDURE ZufallMat(VAR A   : ARRAY OF ARRAY OF LONGREAL;
758
                        dim : CARDINAL;
764
                        m,n : CARDINAL;
759
                        sym : BOOLEAN);
765
                        sym : BOOLEAN);
760
766
761
          (*----------------------------------------------------------------*)
767
          (*----------------------------------------------------------------*)
762
          (* Erzeugt eine Matrix mit Zufallszahlen im Berech [-1,1].        *)
768
          (* Erzeugt eine m x n Matrix mit Zufallszahlen im Bereich [-1,1]. *)
763
          (* Wenn der Parameter sym auf TRUE gesetzt wird, wird eine        *)
769
          (* Ist der Parameter sym auf wahr gesetzt wird, unter der Voraus- *)
764
          (* symmetrische Matrix erzeugt, sonst nicht.                      *)
770
          (* setzung dass m = n ist, eine symmetrische Matrix erzeugt.      *)
771
          (* Die Variable Errors.Fehler ist im Fehlerfall wahr.             *)
772
          (*                                                                *)
773
          (* Generate a m x n matrix A o with random numbers in the         *)
774
          (* interval [-1,1]. If the parameter sym is true a symmetric      *)
775
          (* matrix is generated under the condition that m is equal to n.  *)
776
          (* The variable Errors.Fehler will be set to true in case of an   *)
777
          (* error.                                                         *)
765
          (*----------------------------------------------------------------*)
778
          (*----------------------------------------------------------------*)
766
779
767
PROCEDURE ZufallSv(VAR SV  : ARRAY OF LONGREAL; (* SUPERVEKTOR *)
780
PROCEDURE ZufallSv(VAR SV  : ARRAY OF LONGREAL; (* SUPERVEKTOR *)
768
                       dim : CARDINAL);
781
                       dim : CARDINAL);
769
782
770
          (*----------------------------------------------------------------*)
783
          (*----------------------------------------------------------------*)
771
          (* Erzeugt einen Supervektor mit Zufallszahlen.                   *)
784
          (* Erzeugt einen Supervektor mit Zufallszahlen in [-1,1]          *)
785
          (*                                                                *)
786
          (* Generate a supervector with random numbers (interval [-1,1])   *)
772
          (*----------------------------------------------------------------*)
787
          (*----------------------------------------------------------------*)
773
788
774
PROCEDURE SumVek(VAR X   : ARRAY OF LONGREAL;
789
PROCEDURE SumVek(VAR X   : ARRAY OF LONGREAL;
775
                     s,e : CARDINAL) : LONGREAL;
790
                     s,e : CARDINAL) : LONGREAL;
776
791
...
...
794
          (*----------------------------------------------------------------*)
809
          (*----------------------------------------------------------------*)
795
810
796
PROCEDURE NeumaierSum(VAR X : ARRAY OF LONGREAL;
811
PROCEDURE NeumaierSum(VAR X : ARRAY OF LONGREAL;
797
                          N : CARDINAL) : LONGREAL;
812
                          N : CARDINAL) : LONGREAL;
798
813
799
          (*---------------------------------------------------------------*)
814
          (*----------------------------------------------------------------*)
800
          (* Summation des Vektors X nach der Neumaier Summationsformel.   *)
815
          (* Summation des Vektors X nach der Neumaier Summationsformel.    *)
801
          (* Sehr pr"aziser, aber aufwendiger Summationsalgorithmus.        *)
816
          (* Sehr pr"aziser, aber aufwendiger Summationsalgorithmus.        *)
802
          (* Vorsicht bei einigen Optimierer, es kann sein, da3 das berech- *)
817
          (* Vorsicht bei einigen Optimierer, es kann sein, da3 das berech- *)
803
          (* nete "gard-digit" (c) wegoptimiert wird !!!                    *)
818
          (* nete "gard-digit" (c) wegoptimiert wird !!!                    *)
804
          (*---------------------------------------------------------------*)
819
          (*----------------------------------------------------------------*)
805
820
806
PROCEDURE NeumaierProdSum(VAR X,Y : ARRAY OF LONGREAL;
821
PROCEDURE NeumaierProdSum(VAR X,Y : ARRAY OF LONGREAL;
807
                              N   : CARDINAL) : LONGREAL;
822
                              N   : CARDINAL) : LONGREAL;
808
823
809
          (*---------------------------------------------------------------*)
824
          (*---------------------------------------------------------------*)