diff options
Diffstat (limited to 'lib/Numeric/LinearAlgebra')
-rw-r--r-- | lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c | 48 | ||||
-rw-r--r-- | lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h | 6 |
2 files changed, 54 insertions, 0 deletions
diff --git a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c index a8ccf5f..d7248d1 100644 --- a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c +++ b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c | |||
@@ -908,3 +908,51 @@ int multiplyC(int ta, int tb, KCMAT(a),KCMAT(b),CMAT(r)) { | |||
908 | (doublecomplex*)rp,&ldc); | 908 | (doublecomplex*)rp,&ldc); |
909 | OK | 909 | OK |
910 | } | 910 | } |
911 | |||
912 | //////////////////// transpose ///////////////////////// | ||
913 | |||
914 | int transR(KDMAT(x),DMAT(t)) { | ||
915 | REQUIRES(xr==tc && xc==tr,BAD_SIZE); | ||
916 | DEBUGMSG("transR"); | ||
917 | int i,j; | ||
918 | for (i=0; i<tr; i++) { | ||
919 | for (j=0; j<tc; j++) { | ||
920 | tp[i*tc+j] = xp[j*xc+i]; | ||
921 | } | ||
922 | } | ||
923 | OK | ||
924 | } | ||
925 | |||
926 | int transC(KCMAT(x),CMAT(t)) { | ||
927 | REQUIRES(xr==tc && xc==tr,BAD_SIZE); | ||
928 | DEBUGMSG("transC"); | ||
929 | int i,j; | ||
930 | for (i=0; i<tr; i++) { | ||
931 | for (j=0; j<tc; j++) { | ||
932 | ((doublecomplex*)tp)[i*tc+j] = ((doublecomplex*)xp)[j*xc+i]; | ||
933 | } | ||
934 | } | ||
935 | OK | ||
936 | } | ||
937 | |||
938 | //////////////////// constant ///////////////////////// | ||
939 | |||
940 | int constantR(double * pval, DVEC(r)) { | ||
941 | DEBUGMSG("constantR") | ||
942 | int k; | ||
943 | double val = *pval; | ||
944 | for(k=0;k<rn;k++) { | ||
945 | rp[k]=val; | ||
946 | } | ||
947 | OK | ||
948 | } | ||
949 | |||
950 | int constantC(doublecomplex* pval, CVEC(r)) { | ||
951 | DEBUGMSG("constantC") | ||
952 | int k; | ||
953 | doublecomplex val = *pval; | ||
954 | for(k=0;k<rn;k++) { | ||
955 | ((doublecomplex*)rp)[k]=val; | ||
956 | } | ||
957 | OK | ||
958 | } | ||
diff --git a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h index 3f58243..dc7a98f 100644 --- a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h +++ b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h | |||
@@ -55,6 +55,12 @@ typedef short ftnlen; | |||
55 | int multiplyR(int ta, int tb, KDMAT(a),KDMAT(b),DMAT(r)); | 55 | int multiplyR(int ta, int tb, KDMAT(a),KDMAT(b),DMAT(r)); |
56 | int multiplyC(int ta, int tb, KCMAT(a),KCMAT(b),CMAT(r)); | 56 | int multiplyC(int ta, int tb, KCMAT(a),KCMAT(b),CMAT(r)); |
57 | 57 | ||
58 | int transR(KDMAT(x),DMAT(t)); | ||
59 | int transC(KCMAT(x),CMAT(t)); | ||
60 | |||
61 | int constantR(double * pval, DVEC(r)); | ||
62 | int constantC(doublecomplex* pval, CVEC(r)); | ||
63 | |||
58 | int svd_l_R(KDMAT(x),DMAT(u),DVEC(s),DMAT(v)); | 64 | int svd_l_R(KDMAT(x),DMAT(u),DVEC(s),DMAT(v)); |
59 | int svd_l_Rdd(KDMAT(x),DMAT(u),DVEC(s),DMAT(v)); | 65 | int svd_l_Rdd(KDMAT(x),DMAT(u),DVEC(s),DMAT(v)); |
60 | int svd_l_C(KCMAT(a),CMAT(u),DVEC(s),CMAT(v)); | 66 | int svd_l_C(KCMAT(a),CMAT(u),DVEC(s),CMAT(v)); |