summaryrefslogtreecommitdiff
path: root/src/c/linearAlgebra/svd/zsvda.c
diff options
context:
space:
mode:
authorSandeep Gupta2017-07-05 12:41:25 +0530
committerSandeep Gupta2017-07-05 12:41:25 +0530
commit06337f0dc8114c70fd0c7767083971a0d091750a (patch)
tree446481550ba88e6e0f7df2db7fdc66d2016ee2f1 /src/c/linearAlgebra/svd/zsvda.c
parentc2e305c3b82ed944d57402dd515b3d5839a31980 (diff)
downloadScilab2C_fossee_old-06337f0dc8114c70fd0c7767083971a0d091750a.tar.gz
Scilab2C_fossee_old-06337f0dc8114c70fd0c7767083971a0d091750a.tar.bz2
Scilab2C_fossee_old-06337f0dc8114c70fd0c7767083971a0d091750a.zip
LinearAlgebra and MatrixOperation Update
Diffstat (limited to 'src/c/linearAlgebra/svd/zsvda.c')
-rw-r--r--src/c/linearAlgebra/svd/zsvda.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/c/linearAlgebra/svd/zsvda.c b/src/c/linearAlgebra/svd/zsvda.c
index 0d36022..12a07aa 100644
--- a/src/c/linearAlgebra/svd/zsvda.c
+++ b/src/c/linearAlgebra/svd/zsvda.c
@@ -113,7 +113,16 @@ void zsvda(doubleComplex *in1,int row,int col,int in2,int nout, doubleComplex *o
out3[i+j*N] = zconjs(VT[j+i*N]);
out3[j+i*N] = zconjs(VT[i+j*N]);
}
- }
+ }
+ /* output from zgesvd is copied to out2 variables in required format*/
+ for(j=0;j<M;j++){
+ for(k=0;k<N;k++){
+ if(j == k)
+ out2[j*(Min(M,N))+k] = DoubleComplex(S[j],0);
+ else
+ out2[j*(Min(M,N))+k] = DoubleComplex(0,0);
+ }
+ }
//ztransposea(VT,LDVT,Min(M,N),out3);
/*for(i=0;i<N;i++){
for(j=0;j<N;j++){
@@ -124,7 +133,7 @@ void zsvda(doubleComplex *in1,int row,int col,int in2,int nout, doubleComplex *o
//free(U);
//free(VT);
}
- else{
+ else{ /*svd(x,'e')*/
LDA = M;
LDU = M;
if(M > N){
@@ -156,18 +165,18 @@ void zsvda(doubleComplex *in1,int row,int col,int in2,int nout, doubleComplex *o
for(j=0;j<N;j++){
out3[j+i*N] = zconjs(VT[i+j*Min(M,N)]);
}
- }
+ }
+ /* output from zgesvd is copied to out2 variables in required format*/
+ for(j=0;j<Min(M,N);j++){
+ for(k=0;k<Min(M,N);k++){
+ if(j == k)
+ out2[j*(Min(M,N))+k] = DoubleComplex(S[j],0);
+ else
+ out2[j*(Min(M,N))+k] = DoubleComplex(0,0);
+ }
+ }
//free(U);
//free(VT);
}
- /* output from zgesvd is copied to out2 variables in required format*/
- for(j=0;j<Min(M,N);j++){
- for(k=0;k<Min(M,N);k++){
- if(j == k)
- out2[j*(Min(M,N))+k] = DoubleComplex(S[j],0);
- else
- out2[j*(Min(M,N))+k] = DoubleComplex(0,0);
- }
- }
}
}