int main(){vsip_init((void*)0); { vsip_cscalar_d alpha = vsip_cmplx_d(alpha_r,alpha_i); vsip_cscalar_d beta = vsip_cmplx_d(beta_r,beta_i); void VU_cmprint_d(vsip_cmview_d*); void VU_cmfill_d(vsip_cmview_d*, vsip_cscalar_d); vsip_cmview_d *A = vsip_cmcreate_d(M,N,VSIP_ROW,0), *C = vsip_cmcreate_d(N,M,VSIP_ROW,0); int row, col,i; for(row=0;row<M;row++) for(col=0;col<N;col++) vsip_cmput_d(A,row,col,vsip_cmplx_d(col,-row - sqrt(col*row))); printf("\n A input \n"); VU_cmprint_d(A); VU_cmfill_d(C,vsip_cmplx_d(0,0)); printf("\n C input \n"); VU_cmprint_d(C); printf("alpha= %f %+fi, beta= %f %+fi,\n", alpha_r,alpha_i, beta_r,beta_i); { vsip_mat_op OpA = VSIP_MAT_HERM; printf("OpA %i\n",OpA); for(i=0; i<L; i++){ vsip_cgems_d(alpha,A,OpA,beta,C); printf("C number %i\n",i); VU_cmprint_d(C); } } vsip_cmalldestroy_d(A); vsip_cmalldestroy_d(C); }vsip_finalize((void*)0);return 0; }
int main(){vsip_init((void*)0); { vsip_cmview_d *A = vsip_cmcreate_d(M,P,VSIP_ROW,0), *B = vsip_cmcreate_d(P,N,VSIP_ROW,0), *R = vsip_cmcreate_d(M,N,VSIP_ROW,0); int i, j; for(i=0;i<M;i++) for(j=0;j<P;j++) vsip_cmput_d(A,i,j,vsip_cmplx_d(i,1 + sqrt(i*j))); for(i=0;i<P;i++) for(j=0;j<N;j++) vsip_cmput_d(B,i,j,vsip_cmplx_d(1 , i * j)); printf("\n A input \n"); vsip_cmprodj_d(A,B,R); {for(i=0;i<M;i++) {for(j=0;j<P;j++){ printf("%5.2f + %5.2fi%s ", vsip_real_d(vsip_cmget_d(A,i,j)), vsip_imag_d(vsip_cmget_d(A,i,j)), (j == P-1) ? ";":","); } printf("\n"); } } printf("\n B input \n"); {for(i=0;i<P;i++) {for(j=0;j<N;j++){ printf("%5.2f + %5.2fi%s ", vsip_real_d(vsip_cmget_d(B,i,j)), vsip_imag_d(vsip_cmget_d(B,i,j)), (j == N-1) ? ";":","); } printf("\n"); } } printf("\n R output = A * conj(B)\n"); {for(i=0;i<M;i++) {for(j=0;j<N;j++){ printf("%5.2f + %5.2fi%s ", vsip_real_d(vsip_cmget_d(R,i,j)), vsip_imag_d(vsip_cmget_d(R,i,j)), (j == N-1) ? ";":","); } printf("\n"); } } vsip_cmalldestroy_d(A); vsip_cmalldestroy_d(B); vsip_cmalldestroy_d(R); }vsip_finalize((void*)0);return 0; }
int main(){vsip_init((void*)0); { vsip_cmview_d *A = vsip_cmcreate_d(M,P,VSIP_ROW,0), *B = vsip_cmcreate_d(N,P,VSIP_ROW,0), *R = vsip_cmcreate_d(M,N,VSIP_ROW,0); int i, j; for(i=0;i<M;i++) for(j=0;j<P;j++) vsip_cmput_d(A,i,j,vsip_cmplx_d(i,1 + sqrt(i*j))); for(i=0;i<N;i++) for(j=0;j<P;j++) vsip_cmput_d(B,i,j,vsip_cmplx_d(1 , i * j)); printf("\n A input \n"); vsip_cmprodh_d(A,B,R); {for(i=0;i<M;i++) {for(j=0;j<P;j++){ printf(": (%5.2f, %5.2f) ", vsip_real_d(vsip_cmget_d(A,i,j)), vsip_imag_d(vsip_cmget_d(A,i,j))); } printf(":\n"); } } printf("\n B input \n"); {for(i=0;i<N;i++) {for(j=0;j<P;j++){ printf(": (%5.2f, %5.2f) ", vsip_real_d(vsip_cmget_d(B,i,j)), vsip_imag_d(vsip_cmget_d(B,i,j))); } printf(":\n"); } } printf("\n R output \n"); {for(i=0;i<M;i++) {for(j=0;j<N;j++){ printf(": (%5.2f, %5.2f) ", vsip_real_d(vsip_cmget_d(R,i,j)), vsip_imag_d(vsip_cmget_d(R,i,j))); } printf(":\n"); } } vsip_cmalldestroy_d(A); vsip_cmalldestroy_d(B); vsip_cmalldestroy_d(R); }vsip_finalize((void*)0);return 0; }
int main() { int i; vsip_randstate *state; vsip_cmview_d *xy; vsip_cvview_d *xy_row; vsip_length stride; vsip_cvview_d *sum; vsip_fftm_d *ccfftmip; vsip_length seed =0, num_procs=1, id=1; vsip_init((void *)0); /* Initialize Random Number Generator */ state = vsip_randcreate(seed, num_procs, id, VSIP_PRNG); /* Row major, 64 (ROWS) of 16 point data vectors */ xy = vsip_cmcreate_d(ROWS, 16, VSIP_ROW, VSIP_MEM_NONE); /* Bind xy_row view initially to row 0 of xy */ xy_row = vsip_cmrowview_d(xy, 0); /* Stride between column elements of xy */ stride = vsip_cmgetcolstride_d(xy); sum = vsip_cvcreate_d(N, VSIP_MEM_NONE); /* Create an in-place Cmplx->Cmplx Multiple N-pt FFT */ ccfftmip = vsip_ccfftmip_create_d(ROWS, N, 1.0, VSIP_FFT_FWD, VSIP_ROW, 1, VSIP_ALG_TIME); /* Initialize xy by rows with complex Gaussian noise N(0,1) */ for (i=0; i<ROWS; i++) { vsip_cvputoffset_d(xy_row, i*stride); /* view of row i of xy */ vsip_cvrand_d(state,xy_row); /* Initialize row i of xy */ } /* Compute an in-place Cmplx->Cmplx Multiple N-pt FFT using the ccfftmip object*/ vsip_ccfftmip_d(ccfftmip, xy); /* Coherently sum the rows together (in the Freq domain) */ vsip_cvputoffset_d(xy_row, 0); vsip_cvcopy_d_d(xy_row, sum); /* sum = row 0 of xy */ for (i=1; i<ROWS; i++) { vsip_cvputoffset_d(xy_row, i*stride); /* view of row i of xy */ vsip_cvadd_d(xy_row, sum, sum); /* sum += row i of xy */ } /* Print it */ printf("\nComplex Output Vector (Real, Imag)\n"); for(i=0; i<N; i++) printf("%d:\t" SCMPLX "\n", i, ACMPLX(vsip_cvget_d(sum,i))); printf("\n"); /* Destroy all the objects */ vsip_fftm_destroy_d(ccfftmip); vsip_cvdestroy(xy_row); vsip_cvdestroy(sum); vsip_cmalldestroy_d(xy); vsip_randdestroy(state); vsip_finalize((void *)0); return(0); }
int main() { vsip_init((void*)0); { vsip_cscalar_d alpha = vsip_cmplx_d(alpha_r,alpha_i), beta = vsip_cmplx_d(beta_r,beta_i); void VU_cmprint_d(vsip_cmview_d*); void VU_cmfill_d(vsip_cmview_d*, vsip_cscalar_d); vsip_cmview_d *A = vsip_cmcreate_d(M,N,VSIP_ROW,0), *B = vsip_cmcreate_d(M,P,VSIP_ROW,0), *C = vsip_cmcreate_d(N,P,VSIP_ROW,0); int row, col,i; for(row=0; row<M; row++) for(col=0; col<N; col++) vsip_cmput_d(A,row,col,vsip_cmplx_d(col,-row)); for(row=0; row<M; row++) for(col=0; col<P; col++) vsip_cmput_d(B,row,col,vsip_cmplx_d(row, 2*col)); printf("\n A input \n"); VU_cmprint_d(A); printf("\n B input \n"); VU_cmprint_d(B); VU_cmfill_d(C,vsip_cmplx_d(0,0)); printf("alpha= (%f %+fi), beta= (%f %+fi),\n", vsip_real_d(alpha),vsip_imag_d(alpha), vsip_real_d(beta),vsip_imag_d(beta)); { vsip_mat_op OpA = VSIP_MAT_HERM; vsip_mat_op OpB = VSIP_MAT_NTRANS; printf("OpA %i OpB %i\n",OpA,OpB); for(i=0; i<L; i++) { vsip_cgemp_d(alpha,A,OpA,B,OpB,beta,C); printf("C number %i\n",i); VU_cmprint_d(C); } } vsip_cmalldestroy_d(A); vsip_cmalldestroy_d(B); vsip_cmalldestroy_d(C); } vsip_finalize((void*)0); return 0; }
void test_complex_d(vsip_length N, vsip_major axis) { vsip_length rows = 5; vsip_length cols = N; if (axis == VSIP_COL) { rows = N; cols = 5; } vsip_fftm_d *f_fftm = vsip_ccfftmop_create_d(rows, cols, 1.0, VSIP_FFT_FWD, axis, 0, VSIP_ALG_SPACE); vsip_fftm_d *i_fftm = vsip_ccfftmop_create_d(rows, cols, 1.0/N, VSIP_FFT_INV, axis, 0, VSIP_ALG_SPACE); vsip_fftm_attr_d attr; vsip_fftm_getattr_d(f_fftm, &attr); test_assert(attr.input.r == rows && attr.input.c == cols); test_assert(attr.output.r == rows && attr.output.c == cols); vsip_fftm_getattr_d(i_fftm, &attr); test_assert(attr.input.r == rows && attr.input.c == cols); test_assert(attr.output.r == rows && attr.output.c == cols); vsip_cmview_d *in = vsip_cmcreate_d(rows, cols, VSIP_ROW, VSIP_MEM_NONE); vsip_randstate *rng = vsip_randcreate(0, 1, 1, VSIP_PRNG); vsip_cmrandu_d(rng, in); vsip_randdestroy(rng); vsip_cmview_d *out = vsip_cmcreate_d(rows, cols, VSIP_ROW, VSIP_MEM_NONE); vsip_cmview_d *inv = vsip_cmcreate_d(rows, cols, VSIP_ROW, VSIP_MEM_NONE); vsip_ccfftmop_d(f_fftm, in, out); vsip_ccfftmop_d(i_fftm, out, inv); test_assert(cmequal_d(inv, in)); vsip_cmalldestroy_d(inv); vsip_cmalldestroy_d(out); vsip_cmalldestroy_d(in); vsip_fftm_destroy_d(i_fftm); vsip_fftm_destroy_d(f_fftm); }
void test_real_d(vsip_length N, vsip_major axis) { vsip_length rows = 5; vsip_length cols = N; vsip_length rows2 = 5; vsip_length cols2 = N/2 + 1; if (axis == VSIP_COL) { rows = N; cols = 5; rows2 = N/2 + 1; cols2 = 5; } vsip_fftm_d *f_fftm = vsip_rcfftmop_create_d(rows, cols, 1.0, axis, 0, VSIP_ALG_SPACE); vsip_fftm_d *i_fftm = vsip_crfftmop_create_d(rows, cols, 1.0/N, axis, 0, VSIP_ALG_SPACE); vsip_fftm_attr_d attr; vsip_fftm_getattr_d(f_fftm, &attr); test_assert(attr.input.r == rows && attr.input.c == cols); test_assert(attr.output.r == rows2 && attr.output.c == cols2); vsip_fftm_getattr_d(i_fftm, &attr); test_assert(attr.input.r == rows2 && attr.input.c == cols2); test_assert(attr.output.r == rows && attr.output.c == cols); vsip_mview_d *in = vsip_mcreate_d(rows, cols, VSIP_ROW, VSIP_MEM_NONE); vsip_randstate *rng = vsip_randcreate(0, 1, 1, VSIP_PRNG); vsip_mrandu_d(rng, in); vsip_randdestroy(rng); vsip_mview_d *inv = vsip_mcreate_d(rows, cols, VSIP_ROW, VSIP_MEM_NONE); vsip_cmview_d *out = vsip_cmcreate_d(rows2, cols2, VSIP_ROW, VSIP_MEM_NONE); vsip_rcfftmop_d(f_fftm, in, out); vsip_crfftmop_d(i_fftm, out, inv); test_assert(merror_db_d(inv, in) < -100.); vsip_malldestroy_d(inv); vsip_cmalldestroy_d(out); vsip_malldestroy_d(in); vsip_fftm_destroy_d(i_fftm); vsip_fftm_destroy_d(f_fftm); }
static vsip_cmview_d* VU_cI_d(vsip_length M) { vsip_cmview_d *I = vsip_cmcreate_d(M,M,VSIP_ROW,VSIP_MEM_NONE); if(I != NULL){ vsip_cvview_d *row = vsip_cmrowview_d(I,0); if(row != NULL){ vsip_cvputlength_d(row,(vsip_length)(M * M)); vsip_cvfill_d(vsip_cmplx_d(0.0,0.0),row); vsip_cvputlength_d(row,M); vsip_cvputstride_d(row,(vsip_stride) (M + 1)); vsip_cvfill_d(vsip_cmplx_d(1.0,0.0),row); vsip_cvdestroy_d(row); } else { vsip_cmdestroy_d(I); return (vsip_cmview_d*) NULL; } } else { return (vsip_cmview_d*) NULL; } return I; }
int main(int argc, char *argv[]){vsip_init((void*)0); { if(argc < 3){ printf("usage\nqrdex M N FileName\n"); } else { /* matrix size */ vsip_length M = (vsip_length)atoi(argv[1]), N = (vsip_length)atoi(argv[2]); /* Create some space to hold the matrix */ vsip_cmview_d *A = vsip_cmcreate_d(M,N,VSIP_COL,VSIP_MEM_NONE), *A0 = vsip_cmcreate_d(M,N,VSIP_COL,VSIP_MEM_NONE); /* get data */ FILE *fptr = fopen(argv[3],"r"); VU_cmreadf_d(fptr,A); fclose(fptr); vsip_cmcopy_d_d(A,A0); /* will use A, original data in A0 */ { /* test prodq for Q1 */ /* create a QRD object */ vsip_cqr_d *qrd = vsip_cqrd_create_d(M,N,VSIP_QRD_SAVEQ); /* create a matrix to hold Q */ vsip_cmview_d *I = VU_cI_d(M); vsip_cmview_d *Q = vsip_cmsubview_d(I,0,0,M,M); vsip_cmview_d *Qt = vsip_cmtransview_d(Q); /* create a matrix to hold R */ vsip_cmview_d *A1 = vsip_cmcreate_d(M,N,VSIP_ROW,VSIP_MEM_NONE); vsip_cmview_d *R1 = vsip_cmsubview_d(A1,0,0,M,N); vsip_cmview_d *R = vsip_cmcreate_d(M,N,VSIP_ROW,VSIP_MEM_NONE); /* create a matrix to hold Q Q^h */ vsip_cmview_d *I1 = vsip_cmcreate_d(M,M,VSIP_ROW,VSIP_MEM_NONE); /* create a matrix to hold Q^h Q */ vsip_cmview_d *I2 = vsip_cmcreate_d(M,M,VSIP_ROW,VSIP_MEM_NONE); /* do decomposition */ vsip_cqrd_d(qrd,A); printf("A decomposed = "); VU_cmprintm_d("6.4",A); /* find Q */ vsip_cqrdprodq_d(qrd,VSIP_MAT_NTRANS,VSIP_MAT_RSIDE,I); printf("A = "); VU_cmprintm_d("6.4",A0); printf("Q = "); VU_cmprintm_d("6.4",Q); /* find R */ vsip_cmcopy_d_d(A0,A1); VU_cmconjIP_d(Qt); vsip_cmprod_d(Qt,A1,R); VU_cmconjIP_d(Qt); printf("From mprod R = "); VU_cmprintm_d("6.4",R); vsip_cqrdprodq_d(qrd,VSIP_MAT_HERM,VSIP_MAT_LSIDE,A1); printf("From qrdprod R = "); VU_cmprintm_d("6.4",R1); /* find A from Q and R */ vsip_cmprod_d(Q,R,A1); printf("Q R = ");VU_cmprintm_d("6.4",A1); /* find Q^h Q using mprod */ VU_cmfillz_d(I1); VU_cmfillz_d(I2); vsip_cmherm_d(Q,I1); vsip_cmprod_d(I1,Q,I2); printf("directly using mprod Q^h Q = "); VU_cmprintm_d("6.4",I2); /* find Q^h Q using matprod on Rside */ VU_cmfillz_d(I1); vsip_cmherm_d(Q,I1); vsip_cqrdprodq_d(qrd,VSIP_MAT_NTRANS,VSIP_MAT_RSIDE,I1); printf("using qrdprodq Q^h Q Rside = "); VU_cmprintm_d("6.4",I1); /* find Q^h Q using matprod on Lside */ VU_cmfillz_d(I2); vsip_cmcopy_d_d(Q,I2); vsip_cqrdprodq_d(qrd,VSIP_MAT_HERM,VSIP_MAT_LSIDE,I2); printf("using qrdprodq Q^h Q Lside = "); VU_cmprintm_d("6.4",I2); /* find Q Q^h using Mprod */ VU_cmfillz_d(I1); VU_cmfillz_d(I2); vsip_cmherm_d(Q,I1); vsip_cmprod_d(Q,I1,I2); printf("directly using mprod Q Q^h = "); VU_cmprintm_d("6.4",I2); /* find Q Q^h using matprod on Rside */ VU_cmfillz_d(I1); vsip_cmcopy_d_d(Q,I1); vsip_cqrdprodq_d(qrd,VSIP_MAT_HERM,VSIP_MAT_RSIDE,I1); printf("using qrdprodq Q Q^h Rside = "); VU_cmprintm_d("6.4",I1); /* find Q Q^h using matprod on Lside */ VU_cmfillz_d(I2); vsip_cmherm_d(Q,I2); vsip_cqrdprodq_d(qrd,VSIP_MAT_NTRANS,VSIP_MAT_LSIDE,I2); printf("using qrdprodq Q Q^h Lside = "); VU_cmprintm_d("6.4",I2); } } }vsip_finalize((void*)0);return 0; }
int main(){vsip_init((void*)0); { void VU_cmprint_d(vsip_cmview_d*); /* int i;*/ vsip_cmview_d *w = vsip_cmcreate_d(5,L+1,VSIP_ROW,0); vsip_cmview_d *W = vsip_cmcreate_d(5,L+1,VSIP_ROW,0); vsip_cmview_d *IW = vsip_cmcreate_d(5,L+1,VSIP_ROW,0); vsip_vview_d *blackman = vsip_vcreate_blackman_d(L,0), *hanning = vsip_vcreate_hanning_d(L,0), *kaiser = vsip_vcreate_kaiser_d(L,beta,0), *cheby = vsip_vcreate_cheby_d(L,ripple,0); vsip_fftm_d *fft = vsip_ccfftmop_create_d(4,L,1,VSIP_FFT_FWD,VSIP_ROW,0,0); vsip_fftm_d *ifft = vsip_ccfftmop_create_d(4, L, 1.0/L, VSIP_FFT_INV, VSIP_ROW,0,0); /*printf(" blackman "); printf(" hanning kaiser chebyshev\n"); for(i=0; i < L; i++) printf("%11.8f; %11.8f; %11.8f; %11.8f\n", vsip_vget_d(blackman,i), vsip_vget_d(hanning,i), vsip_vget_d(kaiser,i), vsip_vget_d(cheby,i)); */ vsip_cmputcollength_d(w,4); vsip_cmputcollength_d(W,4); vsip_cmputcollength_d(IW,4); vsip_cmputrowlength_d(w,L); vsip_cmputrowlength_d(W,L); vsip_cmputrowlength_d(IW,L); { vsip_mview_d *wR = vsip_mrealview_d(w); vsip_mview_d *wI = vsip_mimagview_d(w); vsip_vview_d *v = vsip_mrowview_d(wR,0); vsip_vview_d *vi = vsip_mrowview_d(wI,0); vsip_offset o = (vsip_offset)vsip_mgetcolstride_d(wR); vsip_offset oi = (vsip_offset)vsip_mgetcolstride_d(wI); vsip_vcopy_d_d(blackman,v); vsip_vfill_d(0,vi); vsip_vputoffset_d(v,vsip_vgetoffset_d(v) + o); vsip_vputoffset_d(vi,vsip_vgetoffset_d(vi) + oi); vsip_vcopy_d_d(hanning,v); vsip_vfill_d(0,vi); vsip_vputoffset_d(v,vsip_vgetoffset_d(v) + o); vsip_vputoffset_d(vi,vsip_vgetoffset_d(vi) + oi); vsip_vcopy_d_d(kaiser,v); vsip_vfill_d(0,vi); vsip_vputoffset_d(v,vsip_vgetoffset_d(v) + o); vsip_vputoffset_d(vi,vsip_vgetoffset_d(vi) + oi); vsip_vcopy_d_d(cheby,v); vsip_vfill_d(0,vi); vsip_mdestroy_d(wR); vsip_vdestroy_d(v); vsip_mdestroy_d(wI); vsip_vdestroy_d(vi); } vsip_ccfftmop_d(fft,w,W); vsip_ccfftmop_d(ifft,W,IW); printf(" w = ");VU_cmprint_d(w); printf(" W = ");VU_cmprint_d(W); printf("IW = ");VU_cmprint_d(IW); {/* test vsip_fftm_getattr_d */ vsip_fftm_attr_d attr; vsip_fftm_getattr_d(fft, &attr); printf("%lu %lu %lu %lu %d %f %d %d\n", vsip_rowindex(attr.input), vsip_colindex(attr.input), vsip_rowindex(attr.output), vsip_colindex(attr.output), attr.place,attr.scale,attr.dir,attr.major); vsip_fftm_getattr_d(ifft, &attr); printf("%lu %lu %lu %lu %d %f %d %d\n", vsip_rowindex(attr.input), vsip_colindex(attr.input), vsip_rowindex(attr.output), vsip_colindex(attr.output), attr.place,attr.scale,attr.dir,attr.major); } vsip_fftm_destroy_d(fft); vsip_fftm_destroy_d(ifft); vsip_valldestroy_d(blackman); vsip_valldestroy_d(hanning); vsip_valldestroy_d(kaiser); vsip_valldestroy_d(cheby); vsip_cmalldestroy_d(w); vsip_cmalldestroy_d(W); vsip_cmalldestroy_d(IW); }vsip_finalize((void*)0);return 0; }
int main(){vsip_init((void*)0); { vsip_cmview_d *Adummy = vsip_cmcreate_d(5*NN,5*NN,VSIP_COL,0); vsip_cmview_d *A = vsip_cmsubview_d(Adummy,3,2,NN,NN); /* vsip_cmview_d *A= vsip_cmcreate_d(NN,NN,VSIP_COL,0); */ vsip_cvview_d *x0 = vsip_cvcreate_d(NN,0); vsip_vview_d *x0_r = vsip_vrealview_d(x0); vsip_vview_d *x0_i = vsip_vimagview_d(x0); vsip_cmview_d *X = vsip_cmcreate_d(NN,3,VSIP_ROW,0); vsip_cmview_d *XT = vsip_cmcreate_d(NN,3,VSIP_COL,0); vsip_cmputrowstride_d(A,2*vsip_cmgetrowstride_d(A)); vsip_cmputcolstride_d(A,3*vsip_cmgetcolstride_d(A)); /* matrix data */ vsip_cmput_d(A,0,0,vsip_cmplx_d(0.5,0.1)); vsip_cmput_d(A,0,1,vsip_cmplx_d(7,0.1)); vsip_cmput_d(A,0,2,vsip_cmplx_d(10,0.1)); vsip_cmput_d(A,0,3,vsip_cmplx_d(12,0.1)); vsip_cmput_d(A,0,4,vsip_cmplx_d(-3,0.1)); vsip_cmput_d(A,0,5,vsip_cmplx_d(0,0.1)); vsip_cmput_d(A,0,6,vsip_cmplx_d(.05,0.1)); vsip_cmput_d(A,1,0,vsip_cmplx_d(2,0.1)); vsip_cmput_d(A,1,1,vsip_cmplx_d(13,0.1)); vsip_cmput_d(A,1,2,vsip_cmplx_d(18,0.1)); vsip_cmput_d(A,1,3,vsip_cmplx_d(6,0.1)); vsip_cmput_d(A,1,4,vsip_cmplx_d(0,0.1)); vsip_cmput_d(A,1,5,vsip_cmplx_d(130,0.1)); vsip_cmput_d(A,1,6,vsip_cmplx_d(8,0.1)); vsip_cmput_d(A,2,0,vsip_cmplx_d(3,0.1)); vsip_cmput_d(A,2,1,vsip_cmplx_d(-9,0.1)); vsip_cmput_d(A,2,2,vsip_cmplx_d(2,0.1)); vsip_cmput_d(A,2,3,vsip_cmplx_d(3,0.2)); vsip_cmput_d(A,2,4,vsip_cmplx_d(2,0.2)); vsip_cmput_d(A,2,5,vsip_cmplx_d(-9,0.2)); vsip_cmput_d(A,2,6,vsip_cmplx_d(6,0.2)); vsip_cmput_d(A,3,0,vsip_cmplx_d(4,0.2)); vsip_cmput_d(A,3,1,vsip_cmplx_d(2,0.2)); vsip_cmput_d(A,3,2,vsip_cmplx_d(2,0.2)); vsip_cmput_d(A,3,3,vsip_cmplx_d(4,0.2)); vsip_cmput_d(A,3,4,vsip_cmplx_d(1,0.2)); vsip_cmput_d(A,3,5,vsip_cmplx_d(2,0.2)); vsip_cmput_d(A,3,6,vsip_cmplx_d(3,0.2)); vsip_cmput_d(A,4,0,vsip_cmplx_d(.2,0.3)); vsip_cmput_d(A,4,1,vsip_cmplx_d(2,0.3)); vsip_cmput_d(A,4,2,vsip_cmplx_d(9,0.3)); vsip_cmput_d(A,4,3,vsip_cmplx_d(4,0.3)); vsip_cmput_d(A,4,4,vsip_cmplx_d(1,0.3)); vsip_cmput_d(A,4,5,vsip_cmplx_d(2,0.3)); vsip_cmput_d(A,4,6,vsip_cmplx_d(3,0.3)); vsip_cmput_d(A,5,0,vsip_cmplx_d(.1,0.4)); vsip_cmput_d(A,5,1,vsip_cmplx_d(2,0.4)); vsip_cmput_d(A,5,2,vsip_cmplx_d(.3,0.4)); vsip_cmput_d(A,5,3,vsip_cmplx_d(4,0.4)); vsip_cmput_d(A,5,4,vsip_cmplx_d(1,0.4)); vsip_cmput_d(A,5,5,vsip_cmplx_d(2,0.4)); vsip_cmput_d(A,5,6,vsip_cmplx_d(3,0.4)); vsip_cmput_d(A,6,0,vsip_cmplx_d(.01,0.4)); vsip_cmput_d(A,6,1,vsip_cmplx_d(.2,0.4)); vsip_cmput_d(A,6,2,vsip_cmplx_d(3,0.4)); vsip_cmput_d(A,6,3,vsip_cmplx_d(4,0.4)); vsip_cmput_d(A,6,4,vsip_cmplx_d(1,0.4)); vsip_cmput_d(A,6,5,vsip_cmplx_d(2,0.4)); vsip_cmput_d(A,6,6,vsip_cmplx_d(3,0.4)); { /* were solving for NTRANS Ax = B */ /* use a known X, calculate B using Ax */ int k; vsip_cvview_d *x; vsip_cmview_d *AT = vsip_cmcreate_d(NN,NN,VSIP_ROW,VSIP_MEM_NONE); vsip_length L = vsip_cmgetrowlength_d(X); vsip_cmherm_d(A,AT); printf("A = "); VU_cmprintm_d("7.4",A); printf("AT = "); VU_cmprintm_d("7.4",AT); vsip_vramp_d(1,1,x0_r); vsip_vramp_d(1,-1,x0_i); for(k=0; k<L; k++){ x = vsip_cmcolview_d(X,k); vsip_cmvprod_d(A,x0,x); vsip_rscvmul_d(2.0,x0,x0); vsip_cvdestroy_d(x); } vsip_vramp_d(1,1,x0_r); vsip_vramp_d(1,-1,x0_i); for(k=0; k<L; k++){ x = vsip_cmcolview_d(XT,k); vsip_cmvprod_d(AT,x0,x); VU_cvprintm_d("7.4",x0); vsip_rscvmul_d(2.0,x0,x0); vsip_cvdestroy_d(x); } vsip_cmalldestroy_d(AT); printf("B = "); VU_cmprintm_d("7.4",X); printf("BT = "); VU_cmprintm_d("7.4",XT); { /* then solve to see if we get X back */ vsip_clu_d* luAop = vsip_clud_create_d(NN); if(luAop == NULL) exit(1); vsip_clud_d(luAop,A); { vsip_clu_attr_d attr; vsip_clud_getattr_d(luAop,&attr); printf("lud size %lu\n",attr.n); } vsip_clusol_d(luAop,VSIP_MAT_NTRANS,X); vsip_clusol_d(luAop,VSIP_MAT_HERM,XT); vsip_clud_destroy_d(luAop); } } printf("A\\X = "); VU_cmprintm_d("9.6",X); printf("A'\\X = "); VU_cmprintm_d("9.6",XT); { vsip_vdestroy_d(x0_r);vsip_vdestroy_d(x0_i); vsip_cvalldestroy_d(x0); vsip_cmalldestroy_d(X); vsip_cmalldestroy_d(A); } }vsip_finalize((void*)0);return 1; }