|
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 |
(*---------------------------------------------------------------*)
|