summaryrefslogtreecommitdiff
path: root/lib/Numeric/LinearAlgebra/LAPACK
diff options
context:
space:
mode:
authorAlberto Ruiz <aruiz@um.es>2010-09-11 10:35:56 +0000
committerAlberto Ruiz <aruiz@um.es>2010-09-11 10:35:56 +0000
commit84a5ee4fb1b2185eabf64b761279b4da313bd207 (patch)
tree90d3d831fad68d71c5f544eacb3315bed07443be /lib/Numeric/LinearAlgebra/LAPACK
parentec9965371be5b37234684ba392f55a1a1e24f053 (diff)
removed lapack-aux redundant casts
Diffstat (limited to 'lib/Numeric/LinearAlgebra/LAPACK')
-rw-r--r--lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c137
-rw-r--r--lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h22
2 files changed, 82 insertions, 77 deletions
diff --git a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c
index 2c4c647..09979cd 100644
--- a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c
+++ b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c
@@ -187,9 +187,9 @@ int svd_l_C(KCMAT(a),CMAT(u), DVEC(s),CMAT(v)) {
187 ldvt = q; 187 ldvt = q;
188 } 188 }
189 }DEBUGMSG("svd_l_C"); 189 }DEBUGMSG("svd_l_C");
190 double *B = (double*)malloc(2*m*n*sizeof(double)); 190 doublecomplex *B = (doublecomplex*)malloc(m*n*sizeof(doublecomplex));
191 CHECK(!B,MEM); 191 CHECK(!B,MEM);
192 memcpy(B,ap,m*n*2*sizeof(double)); 192 memcpy(B,ap,m*n*sizeof(doublecomplex));
193 193
194 double *rwork = (double*) malloc(5*q*sizeof(double)); 194 double *rwork = (double*) malloc(5*q*sizeof(double));
195 CHECK(!rwork,MEM); 195 CHECK(!rwork,MEM);
@@ -198,21 +198,21 @@ int svd_l_C(KCMAT(a),CMAT(u), DVEC(s),CMAT(v)) {
198 // ask for optimal lwork 198 // ask for optimal lwork
199 doublecomplex ans; 199 doublecomplex ans;
200 zgesvd_ (jobu,jobvt, 200 zgesvd_ (jobu,jobvt,
201 &m,&n,(doublecomplex*)B,&m, 201 &m,&n,B,&m,
202 sp, 202 sp,
203 (doublecomplex*)up,&m, 203 up,&m,
204 (doublecomplex*)vp,&ldvt, 204 vp,&ldvt,
205 &ans, &lwork, 205 &ans, &lwork,
206 rwork, 206 rwork,
207 &res); 207 &res);
208 lwork = ceil(ans.r); 208 lwork = ceil(ans.r);
209 doublecomplex * work = (doublecomplex*)malloc(lwork*2*sizeof(double)); 209 doublecomplex * work = (doublecomplex*)malloc(lwork*sizeof(doublecomplex));
210 CHECK(!work,MEM); 210 CHECK(!work,MEM);
211 zgesvd_ (jobu,jobvt, 211 zgesvd_ (jobu,jobvt,
212 &m,&n,(doublecomplex*)B,&m, 212 &m,&n,B,&m,
213 sp, 213 sp,
214 (doublecomplex*)up,&m, 214 up,&m,
215 (doublecomplex*)vp,&ldvt, 215 vp,&ldvt,
216 work, &lwork, 216 work, &lwork,
217 rwork, 217 rwork,
218 &res); 218 &res);
@@ -267,12 +267,12 @@ int svd_l_Cdd(KCMAT(a),CMAT(u), DVEC(s),CMAT(v)) {
267 integer res; 267 integer res;
268 // ask for optimal lwk 268 // ask for optimal lwk
269 doublecomplex ans; 269 doublecomplex ans;
270 zgesdd_ (jobz,&m,&n,B,&m,sp,(doublecomplex*)up,&m,(doublecomplex*)vp,&ldvt,&ans,&lwk,rwk,iwk,&res); 270 zgesdd_ (jobz,&m,&n,B,&m,sp,up,&m,vp,&ldvt,&ans,&lwk,rwk,iwk,&res);
271 lwk = ans.r; 271 lwk = ans.r;
272 //printf("lwk = %ld\n",lwk); 272 //printf("lwk = %ld\n",lwk);
273 doublecomplex * workv = (doublecomplex*)malloc(lwk*sizeof(doublecomplex)); 273 doublecomplex * workv = (doublecomplex*)malloc(lwk*sizeof(doublecomplex));
274 CHECK(!workv,MEM); 274 CHECK(!workv,MEM);
275 zgesdd_ (jobz,&m,&n,B,&m,sp,(doublecomplex*)up,&m,(doublecomplex*)vp,&ldvt,workv,&lwk,rwk,iwk,&res); 275 zgesdd_ (jobz,&m,&n,B,&m,sp,up,&m,vp,&ldvt,workv,&lwk,rwk,iwk,&res);
276 //printf("res = %ld\n",res); 276 //printf("res = %ld\n",res);
277 CHECK(res,res); 277 CHECK(res,res);
278 free(workv); // printf("freed workv\n"); 278 free(workv); // printf("freed workv\n");
@@ -303,10 +303,10 @@ int eig_l_C(KCMAT(a), CMAT(u), CVEC(s),CMAT(v)) {
303 doublecomplex ans; 303 doublecomplex ans;
304 //printf("ask zgeev\n"); 304 //printf("ask zgeev\n");
305 zgeev_ (&jobvl,&jobvr, 305 zgeev_ (&jobvl,&jobvr,
306 &n,(doublecomplex*)B,&n, 306 &n,B,&n,
307 (doublecomplex*)sp, 307 sp,
308 (doublecomplex*)up,&n, 308 up,&n,
309 (doublecomplex*)vp,&n, 309 vp,&n,
310 &ans, &lwork, 310 &ans, &lwork,
311 rwork, 311 rwork,
312 &res); 312 &res);
@@ -316,10 +316,10 @@ int eig_l_C(KCMAT(a), CMAT(u), CVEC(s),CMAT(v)) {
316 CHECK(!work,MEM); 316 CHECK(!work,MEM);
317 //printf("zgeev\n"); 317 //printf("zgeev\n");
318 zgeev_ (&jobvl,&jobvr, 318 zgeev_ (&jobvl,&jobvr,
319 &n,(doublecomplex*)B,&n, 319 &n,B,&n,
320 (doublecomplex*)sp, 320 sp,
321 (doublecomplex*)up,&n, 321 up,&n,
322 (doublecomplex*)vp,&n, 322 vp,&n,
323 work, &lwork, 323 work, &lwork,
324 rwork, 324 rwork,
325 &res); 325 &res);
@@ -352,7 +352,7 @@ int eig_l_R(KDMAT(a),DMAT(u), CVEC(s),DMAT(v)) {
352 //printf("ask dgeev\n"); 352 //printf("ask dgeev\n");
353 dgeev_ (&jobvl,&jobvr, 353 dgeev_ (&jobvl,&jobvr,
354 &n,B,&n, 354 &n,B,&n,
355 sp, sp+n, 355 (double*)sp, (double*)sp+n,
356 up,&n, 356 up,&n,
357 vp,&n, 357 vp,&n,
358 &ans, &lwork, 358 &ans, &lwork,
@@ -364,7 +364,7 @@ int eig_l_R(KDMAT(a),DMAT(u), CVEC(s),DMAT(v)) {
364 //printf("dgeev\n"); 364 //printf("dgeev\n");
365 dgeev_ (&jobvl,&jobvr, 365 dgeev_ (&jobvl,&jobvr,
366 &n,B,&n, 366 &n,B,&n,
367 sp, sp+n, 367 (double*)sp, (double*)sp+n,
368 up,&n, 368 up,&n,
369 vp,&n, 369 vp,&n,
370 work, &lwork, 370 work, &lwork,
@@ -429,7 +429,7 @@ int eig_l_H(int wantV,KCMAT(a),DVEC(s),CMAT(v)) {
429 doublecomplex ans; 429 doublecomplex ans;
430 //printf("ask zheev\n"); 430 //printf("ask zheev\n");
431 zheev_ (&jobz,&uplo, 431 zheev_ (&jobz,&uplo,
432 &n,(doublecomplex*)vp,&n, 432 &n,vp,&n,
433 sp, 433 sp,
434 &ans, &lwork, 434 &ans, &lwork,
435 rwork, 435 rwork,
@@ -439,7 +439,7 @@ int eig_l_H(int wantV,KCMAT(a),DVEC(s),CMAT(v)) {
439 doublecomplex * work = (doublecomplex*)malloc(lwork*sizeof(doublecomplex)); 439 doublecomplex * work = (doublecomplex*)malloc(lwork*sizeof(doublecomplex));
440 CHECK(!work,MEM); 440 CHECK(!work,MEM);
441 zheev_ (&jobz,&uplo, 441 zheev_ (&jobz,&uplo,
442 &n,(doublecomplex*)vp,&n, 442 &n,vp,&n,
443 sp, 443 sp,
444 work, &lwork, 444 work, &lwork,
445 rwork, 445 rwork,
@@ -483,15 +483,15 @@ int linearSolveC_l(KCMAT(a),KCMAT(b),CMAT(x)) {
483 integer nhrs = bc; 483 integer nhrs = bc;
484 REQUIRES(n>=1 && ar==ac && ar==br,BAD_SIZE); 484 REQUIRES(n>=1 && ar==ac && ar==br,BAD_SIZE);
485 DEBUGMSG("linearSolveC_l"); 485 DEBUGMSG("linearSolveC_l");
486 double*AC = (double*)malloc(2*n*n*sizeof(double)); 486 doublecomplex*AC = (doublecomplex*)malloc(n*n*sizeof(doublecomplex));
487 memcpy(AC,ap,2*n*n*sizeof(double)); 487 memcpy(AC,ap,n*n*sizeof(doublecomplex));
488 memcpy(xp,bp,2*n*nhrs*sizeof(double)); 488 memcpy(xp,bp,n*nhrs*sizeof(doublecomplex));
489 integer * ipiv = (integer*)malloc(n*sizeof(integer)); 489 integer * ipiv = (integer*)malloc(n*sizeof(integer));
490 integer res; 490 integer res;
491 zgesv_ (&n,&nhrs, 491 zgesv_ (&n,&nhrs,
492 (doublecomplex*)AC, &n, 492 AC, &n,
493 ipiv, 493 ipiv,
494 (doublecomplex*)xp, &n, 494 xp, &n,
495 &res); 495 &res);
496 if(res>0) { 496 if(res>0) {
497 return SINGULAR; 497 return SINGULAR;
@@ -527,12 +527,12 @@ int cholSolveC_l(KCMAT(a),KCMAT(b),CMAT(x)) {
527 integer nhrs = bc; 527 integer nhrs = bc;
528 REQUIRES(n>=1 && ar==ac && ar==br,BAD_SIZE); 528 REQUIRES(n>=1 && ar==ac && ar==br,BAD_SIZE);
529 DEBUGMSG("cholSolveC_l"); 529 DEBUGMSG("cholSolveC_l");
530 memcpy(xp,bp,2*n*nhrs*sizeof(double)); 530 memcpy(xp,bp,n*nhrs*sizeof(doublecomplex));
531 integer res; 531 integer res;
532 zpotrs_ ("U", 532 zpotrs_ ("U",
533 &n,&nhrs, 533 &n,&nhrs,
534 (doublecomplex*)ap, &n, 534 (doublecomplex*)ap, &n,
535 (doublecomplex*)xp, &n, 535 xp, &n,
536 &res); 536 &res);
537 CHECK(res,res); 537 CHECK(res,res);
538 OK 538 OK
@@ -591,31 +591,30 @@ int linearSolveLSC_l(KCMAT(a),KCMAT(b),CMAT(x)) {
591 integer ldb = xr; 591 integer ldb = xr;
592 REQUIRES(m>=1 && n>=1 && ar==br && xr==MAX(m,n) && xc == bc, BAD_SIZE); 592 REQUIRES(m>=1 && n>=1 && ar==br && xr==MAX(m,n) && xc == bc, BAD_SIZE);
593 DEBUGMSG("linearSolveLSC_l"); 593 DEBUGMSG("linearSolveLSC_l");
594 double*AC = (double*)malloc(2*m*n*sizeof(double)); 594 doublecomplex*AC = (doublecomplex*)malloc(m*n*sizeof(doublecomplex));
595 memcpy(AC,ap,2*m*n*sizeof(double)); 595 memcpy(AC,ap,m*n*sizeof(doublecomplex));
596 memcpy(AC,ap,2*m*n*sizeof(double));
597 if (m>=n) { 596 if (m>=n) {
598 memcpy(xp,bp,2*m*nrhs*sizeof(double)); 597 memcpy(xp,bp,m*nrhs*sizeof(doublecomplex));
599 } else { 598 } else {
600 int k; 599 int k;
601 for(k = 0; k<nrhs; k++) { 600 for(k = 0; k<nrhs; k++) {
602 memcpy(xp+2*ldb*k,bp+2*m*k,m*2*sizeof(double)); 601 memcpy(xp+ldb*k,bp+m*k,m*sizeof(doublecomplex));
603 } 602 }
604 } 603 }
605 integer res; 604 integer res;
606 integer lwork = -1; 605 integer lwork = -1;
607 doublecomplex ans; 606 doublecomplex ans;
608 zgels_ ("N",&m,&n,&nrhs, 607 zgels_ ("N",&m,&n,&nrhs,
609 (doublecomplex*)AC,&m, 608 AC,&m,
610 (doublecomplex*)xp,&ldb, 609 xp,&ldb,
611 &ans,&lwork, 610 &ans,&lwork,
612 &res); 611 &res);
613 lwork = ceil(ans.r); 612 lwork = ceil(ans.r);
614 //printf("ans = %d\n",lwork); 613 //printf("ans = %d\n",lwork);
615 doublecomplex * work = (doublecomplex*)malloc(lwork*sizeof(doublecomplex)); 614 doublecomplex * work = (doublecomplex*)malloc(lwork*sizeof(doublecomplex));
616 zgels_ ("N",&m,&n,&nrhs, 615 zgels_ ("N",&m,&n,&nrhs,
617 (doublecomplex*)AC,&m, 616 AC,&m,
618 (doublecomplex*)xp,&ldb, 617 xp,&ldb,
619 work,&lwork, 618 work,&lwork,
620 &res); 619 &res);
621 if(res>0) { 620 if(res>0) {
@@ -695,16 +694,16 @@ int linearSolveSVDC_l(double rcond, KCMAT(a),KCMAT(b),CMAT(x)) {
695 integer ldb = xr; 694 integer ldb = xr;
696 REQUIRES(m>=1 && n>=1 && ar==br && xr==MAX(m,n) && xc == bc, BAD_SIZE); 695 REQUIRES(m>=1 && n>=1 && ar==br && xr==MAX(m,n) && xc == bc, BAD_SIZE);
697 DEBUGMSG("linearSolveSVDC_l"); 696 DEBUGMSG("linearSolveSVDC_l");
698 double*AC = (double*)malloc(2*m*n*sizeof(double)); 697 doublecomplex*AC = (doublecomplex*)malloc(m*n*sizeof(doublecomplex));
699 double*S = (double*)malloc(MIN(m,n)*sizeof(double)); 698 double*S = (double*)malloc(MIN(m,n)*sizeof(double));
700 double*RWORK = (double*)malloc(5*MIN(m,n)*sizeof(double)); 699 double*RWORK = (double*)malloc(5*MIN(m,n)*sizeof(double));
701 memcpy(AC,ap,2*m*n*sizeof(double)); 700 memcpy(AC,ap,m*n*sizeof(doublecomplex));
702 if (m>=n) { 701 if (m>=n) {
703 memcpy(xp,bp,2*m*nrhs*sizeof(double)); 702 memcpy(xp,bp,m*nrhs*sizeof(doublecomplex));
704 } else { 703 } else {
705 int k; 704 int k;
706 for(k = 0; k<nrhs; k++) { 705 for(k = 0; k<nrhs; k++) {
707 memcpy(xp+2*ldb*k,bp+2*m*k,m*2*sizeof(double)); 706 memcpy(xp+ldb*k,bp+m*k,m*sizeof(doublecomplex));
708 } 707 }
709 } 708 }
710 integer res; 709 integer res;
@@ -712,8 +711,8 @@ int linearSolveSVDC_l(double rcond, KCMAT(a),KCMAT(b),CMAT(x)) {
712 integer rank; 711 integer rank;
713 doublecomplex ans; 712 doublecomplex ans;
714 zgelss_ (&m,&n,&nrhs, 713 zgelss_ (&m,&n,&nrhs,
715 (doublecomplex*)AC,&m, 714 AC,&m,
716 (doublecomplex*)xp,&ldb, 715 xp,&ldb,
717 S, 716 S,
718 &rcond,&rank, 717 &rcond,&rank,
719 &ans,&lwork, 718 &ans,&lwork,
@@ -723,8 +722,8 @@ int linearSolveSVDC_l(double rcond, KCMAT(a),KCMAT(b),CMAT(x)) {
723 //printf("ans = %d\n",lwork); 722 //printf("ans = %d\n",lwork);
724 doublecomplex * work = (doublecomplex*)malloc(lwork*sizeof(doublecomplex)); 723 doublecomplex * work = (doublecomplex*)malloc(lwork*sizeof(doublecomplex));
725 zgelss_ (&m,&n,&nrhs, 724 zgelss_ (&m,&n,&nrhs,
726 (doublecomplex*)AC,&m, 725 AC,&m,
727 (doublecomplex*)xp,&ldb, 726 xp,&ldb,
728 S, 727 S,
729 &rcond,&rank, 728 &rcond,&rank,
730 work,&lwork, 729 work,&lwork,
@@ -750,14 +749,14 @@ int chol_l_H(KCMAT(a),CMAT(l)) {
750 memcpy(lp,ap,n*n*sizeof(doublecomplex)); 749 memcpy(lp,ap,n*n*sizeof(doublecomplex));
751 char uplo = 'U'; 750 char uplo = 'U';
752 integer res; 751 integer res;
753 zpotrf_ (&uplo,&n,(doublecomplex*)lp,&n,&res); 752 zpotrf_ (&uplo,&n,lp,&n,&res);
754 CHECK(res>0,NODEFPOS); 753 CHECK(res>0,NODEFPOS);
755 CHECK(res,res); 754 CHECK(res,res);
756 doublecomplex zero = {0.,0.}; 755 doublecomplex zero = {0.,0.};
757 int r,c; 756 int r,c;
758 for (r=0; r<lr-1; r++) { 757 for (r=0; r<lr-1; r++) {
759 for(c=r+1; c<lc; c++) { 758 for(c=r+1; c<lc; c++) {
760 ((doublecomplex*)lp)[r*lc+c] = zero; 759 lp[r*lc+c] = zero;
761 } 760 }
762 } 761 }
763 OK 762 OK
@@ -810,7 +809,7 @@ int qr_l_C(KCMAT(a), CVEC(tau), CMAT(r)) {
810 CHECK(!WORK,MEM); 809 CHECK(!WORK,MEM);
811 memcpy(rp,ap,m*n*sizeof(doublecomplex)); 810 memcpy(rp,ap,m*n*sizeof(doublecomplex));
812 integer res; 811 integer res;
813 zgeqr2_ (&m,&n,(doublecomplex*)rp,&m,(doublecomplex*)taup,WORK,&res); 812 zgeqr2_ (&m,&n,rp,&m,taup,WORK,&res);
814 CHECK(res,res); 813 CHECK(res,res);
815 free(WORK); 814 free(WORK);
816 OK 815 OK
@@ -848,7 +847,7 @@ int hess_l_C(KCMAT(a), CVEC(tau), CMAT(r)) {
848 memcpy(rp,ap,m*n*sizeof(doublecomplex)); 847 memcpy(rp,ap,m*n*sizeof(doublecomplex));
849 integer res; 848 integer res;
850 integer one = 1; 849 integer one = 1;
851 zgehrd_ (&n,&one,&n,(doublecomplex*)rp,&n,(doublecomplex*)taup,WORK,&lwork,&res); 850 zgehrd_ (&n,&one,&n,rp,&n,taup,WORK,&lwork,&res);
852 CHECK(res,res); 851 CHECK(res,res);
853 free(WORK); 852 free(WORK);
854 OK 853 OK
@@ -904,8 +903,8 @@ int schur_l_C(KCMAT(a), CMAT(u), CMAT(s)) {
904 double *RWORK = (double*)malloc(n*sizeof(double)); 903 double *RWORK = (double*)malloc(n*sizeof(double));
905 integer res; 904 integer res;
906 integer sdim; 905 integer sdim;
907 zgees_ ("V","N",NULL,&n,(doublecomplex*)sp,&n,&sdim,W, 906 zgees_ ("V","N",NULL,&n,sp,&n,&sdim,W,
908 (doublecomplex*)up,&n, 907 up,&n,
909 WORK,&lwork,RWORK,BWORK,&res); 908 WORK,&lwork,RWORK,BWORK,&res);
910 if(res>0) { 909 if(res>0) {
911 return NOCONVER; 910 return NOCONVER;
@@ -950,7 +949,7 @@ int lu_l_C(KCMAT(a), DVEC(ipiv), CMAT(r)) {
950 integer* auxipiv = (integer*)malloc(mn*sizeof(integer)); 949 integer* auxipiv = (integer*)malloc(mn*sizeof(integer));
951 memcpy(rp,ap,m*n*sizeof(doublecomplex)); 950 memcpy(rp,ap,m*n*sizeof(doublecomplex));
952 integer res; 951 integer res;
953 zgetrf_ (&m,&n,(doublecomplex*)rp,&m,auxipiv,&res); 952 zgetrf_ (&m,&n,rp,&m,auxipiv,&res);
954 if(res>0) { 953 if(res>0) {
955 res = 0; // fixme 954 res = 0; // fixme
956 } 955 }
@@ -1000,7 +999,7 @@ int luS_l_C(KCMAT(a), KDVEC(ipiv), KCMAT(b), CMAT(x)) {
1000 } 999 }
1001 integer res; 1000 integer res;
1002 memcpy(xp,bp,mrhs*nrhs*sizeof(doublecomplex)); 1001 memcpy(xp,bp,mrhs*nrhs*sizeof(doublecomplex));
1003 zgetrs_ ("N",&n,&nrhs,(doublecomplex*)ap,&m,auxipiv,(doublecomplex*)xp,&mrhs,&res); 1002 zgetrs_ ("N",&n,&nrhs,(doublecomplex*)ap,&m,auxipiv,xp,&mrhs,&res);
1004 CHECK(res,res); 1003 CHECK(res,res);
1005 free(auxipiv); 1004 free(auxipiv);
1006 OK 1005 OK
@@ -1043,9 +1042,9 @@ int multiplyC(int ta, int tb, KCMAT(a),KCMAT(b),CMAT(r)) {
1043 doublecomplex alpha = {1,0}; 1042 doublecomplex alpha = {1,0};
1044 doublecomplex beta = {0,0}; 1043 doublecomplex beta = {0,0};
1045 zgemm_(ta?"T":"N",tb?"T":"N",&m,&n,&k,&alpha, 1044 zgemm_(ta?"T":"N",tb?"T":"N",&m,&n,&k,&alpha,
1046 (doublecomplex*)ap,&lda, 1045 ap,&lda,
1047 (doublecomplex*)bp,&ldb,&beta, 1046 bp,&ldb,&beta,
1048 (doublecomplex*)rp,&ldc); 1047 rp,&ldc);
1049 OK 1048 OK
1050} 1049}
1051 1050
@@ -1084,9 +1083,9 @@ int multiplyQ(int ta, int tb, KQMAT(a),KQMAT(b),QMAT(r)) {
1084 complex alpha = {1,0}; 1083 complex alpha = {1,0};
1085 complex beta = {0,0}; 1084 complex beta = {0,0};
1086 cgemm_(ta?"T":"N",tb?"T":"N",&m,&n,&k,&alpha, 1085 cgemm_(ta?"T":"N",tb?"T":"N",&m,&n,&k,&alpha,
1087 (complex*)ap,&lda, 1086 ap,&lda,
1088 (complex*)bp,&ldb,&beta, 1087 bp,&ldb,&beta,
1089 (complex*)rp,&ldc); 1088 rp,&ldc);
1090 OK 1089 OK
1091} 1090}
1092 1091
@@ -1122,7 +1121,7 @@ int transQ(KQMAT(x),QMAT(t)) {
1122 int i,j; 1121 int i,j;
1123 for (i=0; i<tr; i++) { 1122 for (i=0; i<tr; i++) {
1124 for (j=0; j<tc; j++) { 1123 for (j=0; j<tc; j++) {
1125 ((complex*)tp)[i*tc+j] = ((complex*)xp)[j*xc+i]; 1124 tp[i*tc+j] = xp[j*xc+i];
1126 } 1125 }
1127 } 1126 }
1128 OK 1127 OK
@@ -1134,7 +1133,7 @@ int transC(KCMAT(x),CMAT(t)) {
1134 int i,j; 1133 int i,j;
1135 for (i=0; i<tr; i++) { 1134 for (i=0; i<tr; i++) {
1136 for (j=0; j<tc; j++) { 1135 for (j=0; j<tc; j++) {
1137 ((doublecomplex*)tp)[i*tc+j] = ((doublecomplex*)xp)[j*xc+i]; 1136 tp[i*tc+j] = xp[j*xc+i];
1138 } 1137 }
1139 } 1138 }
1140 OK 1139 OK
@@ -1167,7 +1166,7 @@ int constantQ(complex* pval, QVEC(r)) {
1167 int k; 1166 int k;
1168 complex val = *pval; 1167 complex val = *pval;
1169 for(k=0;k<rn;k++) { 1168 for(k=0;k<rn;k++) {
1170 ((complex*)rp)[k]=val; 1169 rp[k]=val;
1171 } 1170 }
1172 OK 1171 OK
1173} 1172}
@@ -1177,7 +1176,7 @@ int constantC(doublecomplex* pval, CVEC(r)) {
1177 int k; 1176 int k;
1178 doublecomplex val = *pval; 1177 doublecomplex val = *pval;
1179 for(k=0;k<rn;k++) { 1178 for(k=0;k<rn;k++) {
1180 ((doublecomplex*)rp)[k]=val; 1179 rp[k]=val;
1181 } 1180 }
1182 OK 1181 OK
1183} 1182}
@@ -1209,8 +1208,8 @@ int conjugateQ(KQVEC(x),QVEC(t)) {
1209 DEBUGMSG("conjugateQ"); 1208 DEBUGMSG("conjugateQ");
1210 int k; 1209 int k;
1211 for(k=0;k<xn;k++) { 1210 for(k=0;k<xn;k++) {
1212 ((complex*)tp)[k].r=((complex*)xp)[k].r; 1211 tp[k].r = xp[k].r;
1213 ((complex*)tp)[k].i=-((complex*)xp)[k].i; 1212 tp[k].i = -xp[k].i;
1214 } 1213 }
1215 OK 1214 OK
1216} 1215}
@@ -1220,8 +1219,8 @@ int conjugateC(KCVEC(x),CVEC(t)) {
1220 DEBUGMSG("conjugateC"); 1219 DEBUGMSG("conjugateC");
1221 int k; 1220 int k;
1222 for(k=0;k<xn;k++) { 1221 for(k=0;k<xn;k++) {
1223 ((doublecomplex*)tp)[k].r=((doublecomplex*)xp)[k].r; 1222 tp[k].r = xp[k].r;
1224 ((doublecomplex*)tp)[k].i=-((doublecomplex*)xp)[k].i; 1223 tp[k].i = -xp[k].i;
1225 } 1224 }
1226 OK 1225 OK
1227} 1226}
diff --git a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h
index d01d9e5..3de5b19 100644
--- a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h
+++ b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h
@@ -42,21 +42,21 @@ typedef short ftnlen;
42 42
43#define FVEC(A) int A##n, float*A##p 43#define FVEC(A) int A##n, float*A##p
44#define DVEC(A) int A##n, double*A##p 44#define DVEC(A) int A##n, double*A##p
45#define QVEC(A) int A##n, float*A##p 45#define QVEC(A) int A##n, complex*A##p
46#define CVEC(A) int A##n, double*A##p 46#define CVEC(A) int A##n, doublecomplex*A##p
47#define FMAT(A) int A##r, int A##c, float* A##p 47#define FMAT(A) int A##r, int A##c, float* A##p
48#define DMAT(A) int A##r, int A##c, double* A##p 48#define DMAT(A) int A##r, int A##c, double* A##p
49#define QMAT(A) int A##r, int A##c, float* A##p 49#define QMAT(A) int A##r, int A##c, complex* A##p
50#define CMAT(A) int A##r, int A##c, double* A##p 50#define CMAT(A) int A##r, int A##c, doublecomplex* A##p
51 51
52#define KFVEC(A) int A##n, const float*A##p 52#define KFVEC(A) int A##n, const float*A##p
53#define KDVEC(A) int A##n, const double*A##p 53#define KDVEC(A) int A##n, const double*A##p
54#define KQVEC(A) int A##n, const float*A##p 54#define KQVEC(A) int A##n, const complex*A##p
55#define KCVEC(A) int A##n, const double*A##p 55#define KCVEC(A) int A##n, const doublecomplex*A##p
56#define KFMAT(A) int A##r, int A##c, const float* A##p 56#define KFMAT(A) int A##r, int A##c, const float* A##p
57#define KDMAT(A) int A##r, int A##c, const double* A##p 57#define KDMAT(A) int A##r, int A##c, const double* A##p
58#define KQMAT(A) int A##r, int A##c, const float* A##p 58#define KQMAT(A) int A##r, int A##c, const complex* A##p
59#define KCMAT(A) int A##r, int A##c, const double* A##p 59#define KCMAT(A) int A##r, int A##c, const doublecomplex* A##p
60 60
61/********************************************************/ 61/********************************************************/
62 62
@@ -73,6 +73,12 @@ int constantR(double * pval, DVEC(r));
73int constantQ(complex* pval, QVEC(r)); 73int constantQ(complex* pval, QVEC(r));
74int constantC(doublecomplex* pval, CVEC(r)); 74int constantC(doublecomplex* pval, CVEC(r));
75 75
76int float2double(FVEC(x),DVEC(y));
77int double2float(DVEC(x),FVEC(y));
78
79int conjugateQ(KQVEC(x),QVEC(t));
80int conjugateC(KCVEC(x),CVEC(t));
81
76int svd_l_R(KDMAT(x),DMAT(u),DVEC(s),DMAT(v)); 82int svd_l_R(KDMAT(x),DMAT(u),DVEC(s),DMAT(v));
77int svd_l_Rdd(KDMAT(x),DMAT(u),DVEC(s),DMAT(v)); 83int svd_l_Rdd(KDMAT(x),DMAT(u),DVEC(s),DMAT(v));
78int svd_l_C(KCMAT(a),CMAT(u),DVEC(s),CMAT(v)); 84int svd_l_C(KCMAT(a),CMAT(u),DVEC(s),CMAT(v));