int main(){vsip_init((void*)0); { vsip_vview_d *a = vsip_vcreate_d(N,0), *r = vsip_vcreate_d(P,0); vsip_mview_d *B = vsip_mcreate_d(P,N,VSIP_ROW,0); int i, j; vsip_vramp_d(1.0,1.0,a); for(i=0;i<P;i++) for(j=0;j<N;j++) vsip_mput_d(B,i,j,1 + i * j); printf("\n vector input \n"); vsip_mvprod_d(B,a,r); for(j=0;j<N;j++){ printf(" %6.2f ",vsip_vget_d(a,j)); } printf("\n"); printf("\n matrix input \n"); {for(i=0; i<P; i++) {for(j=0;j<N;j++){ printf(" %6.2f ",vsip_mget_d(B,i,j)); } printf(";\n"); } } printf("\n vector output \n"); for(j=0;j<P;j++){ printf("%6.2f ",vsip_vget_d(r,j)); } printf("\n"); vsip_valldestroy_d(a); vsip_valldestroy_d(r); vsip_malldestroy_d(B); }vsip_finalize((void*)0);return 0; }
int main(){vsip_init((void*)0); { FILE *fptr = fopen("tm.data","r"); vsip_mview_d *M = vsip_mcreate_d(2,3,VSIP_ROW,0); VU_mreadf_d(fptr,M); VU_mprintm_d("6.4",M); }vsip_finalize((void*)0);return 0; }
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); }
int main(){vsip_init((void*)0); { void VU_mprint_d(vsip_mview_d*); void VU_mfill_d(vsip_mview_d*, vsip_scalar_d); void VU_vprint_d(vsip_vview_d*); vsip_mview_d *A = vsip_mcreate_d(M,N,VSIP_ROW,0); vsip_mview_d *ATA = vsip_mcreate_d(N,N,VSIP_ROW,0); vsip_vview_d *b = vsip_vcreate_d(M,0); vsip_mview_d *ATB = vsip_mcreate_d(N,1,VSIP_COL,0); vsip_vview_d *ATb = vsip_mcolview_d(ATB,0); { /* store data */ vsip_mput_d(A,0,0,1); vsip_mput_d(A,0,1,2); vsip_mput_d(A,0,2,1); vsip_mput_d(A,1,0,3); vsip_mput_d(A,1,1,-1); vsip_mput_d(A,1,2,0); vsip_mput_d(A,2,0,2); vsip_mput_d(A,2,1,1); vsip_mput_d(A,2,2,-1); vsip_mput_d(A,3,0,1); vsip_mput_d(A,3,1,2); vsip_mput_d(A,3,2,2); vsip_vput_d(b,0,1); vsip_vput_d(b,1,2); vsip_vput_d(b,2,2); vsip_vput_d(b,3,1); } printf("b = \n");VU_vprint_d(b); printf("A = \n");VU_mprint_d(A); VU_mfill_d(ATA,0); vsip_gemp_d(1,A,VSIP_MAT_TRANS,A,VSIP_MAT_NTRANS,1,ATA); printf("ATA = \n");VU_mprint_d(ATA); vsip_vmprod_d(b,A,ATb); printf("ATb = \n"); VU_vprint_d(ATb); { vsip_lu_d* luAop = vsip_lud_create_d(N); vsip_lud_d(luAop,ATA); vsip_lusol_d(luAop,VSIP_MAT_NTRANS,ATB); printf("solve ATA x = ATb\n"); printf("x = \n"); VU_mprint_d(ATB); vsip_lud_destroy_d(luAop); } vsip_valldestroy_d(b); vsip_vdestroy_d(ATb); vsip_mdestroy_d(A); vsip_mdestroy_d(ATA); vsip_mdestroy_d(ATB); }vsip_finalize((void*)0);return 0; }
int main(){vsip_init((void*)0); { vsip_mview_d *A = vsip_mcreate_d(M,P,VSIP_ROW,0), *B = vsip_mcreate_d(P,N,VSIP_ROW,0), *R = vsip_mcreate_d(M,N,VSIP_ROW,0); int i, j; for(i=0;i<M;i++) for(j=0;j<P;j++) vsip_mput_d(A,i,j,1 + sqrt(i*j)); for(i=0;i<P;i++) for(j=0;j<N;j++) vsip_mput_d(B,i,j,1 + i * j); printf("\n A input \n"); vsip_mprod_d(A,B,R); {for(i=0;i<M;i++) {for(j=0;j<P;j++){ printf(": %6.2f ",vsip_mget_d(A,i,j)); } printf(":\n"); } } printf("\n B input \n"); {for(i=0;i<P;i++) {for(j=0;j<N;j++){ printf(": %6.2f ",vsip_mget_d(B,i,j)); } printf(":\n"); } } printf("\n R output \n"); {for(i=0;i<M;i++) {for(j=0;j<N;j++){ printf(": %6.2f ",vsip_mget_d(R,i,j)); } printf(":\n"); } } vsip_malldestroy_d(A); vsip_malldestroy_d(B); vsip_malldestroy_d(R); }vsip_finalize((void*)0);return 0; }
vsip_mview_d* VU_I_d(vsip_length M) { vsip_mview_d *I = vsip_mcreate_d(M,M,VSIP_ROW,VSIP_MEM_NONE); if(I != NULL){ vsip_vview_d *row = vsip_mrowview_d(I,0); if(row != NULL){ vsip_vputlength_d(row,(vsip_length)(M * M)); vsip_vfill_d((vsip_scalar_d)0.0,row); vsip_vputlength_d(row,M); vsip_vputstride_d(row,(vsip_stride) (M + 1)); vsip_vfill_d((vsip_scalar_d)1.0,row); vsip_vdestroy_d(row); } else { vsip_mdestroy_d(I); return (vsip_mview_d*) NULL; } } else { return (vsip_mview_d*) NULL; } return I; }
int main(){vsip_init((void*)0); { vsip_mview_d *A = vsip_mcreate_d(N,N,VSIP_COL,0); vsip_vview_d *x0 = vsip_vcreate_d(N,0); vsip_vview_d *b = vsip_vcreate_d(N,0); vsip_mview_d *X = vsip_mcreate_d(N,3,VSIP_ROW,0); vsip_mview_d *XT = vsip_mcreate_d(N,3,VSIP_COL,0); vsip_vramp_d(1,1,x0); vsip_vmul_d(x0,x0,x0); vsip_mput_d(A,0,0,-3); vsip_mput_d(A,0,1,7); vsip_mput_d(A,0,2,10); vsip_mput_d(A,0,3,12); vsip_mput_d(A,1,0,0); vsip_mput_d(A,1,1,13); vsip_mput_d(A,1,2,18); vsip_mput_d(A,1,3,6); vsip_mput_d(A,2,0,2); vsip_mput_d(A,2,1,-9); vsip_mput_d(A,2,2,6); vsip_mput_d(A,2,3,3); vsip_mput_d(A,3,0,1); vsip_mput_d(A,3,1,2); vsip_mput_d(A,3,2,3); vsip_mput_d(A,3,3,4); {int i,j; printf("A = [\n"); for(i=0; i<N; i++){ for(j=0; j<N; j++) printf("%9.2f%s",vsip_mget_d(A,i,j),(j == N-1) ? "":","); printf(";\n"); } printf("]\n"); } { int k; vsip_vview_d *x; vsip_length L = vsip_mgetrowlength_d(X); for(k=0; k<L; k++){ x = vsip_mcolview_d(X,k); vsip_mvprod_d(A,x0,b); vsip_vcopy_d_d(b,x); vsip_svmul_d(2.0,x0,x0); vsip_vdestroy_d(x); } {int i,j; printf("X = [\n");for(i=0; i<N; i++){ for(j=0; j<3; j++) printf("%9.2f%s",vsip_mget_d(X,i,j),(j == 2) ? "":","); printf(";\n"); } printf("]\n"); } { vsip_lu_d* luAop = vsip_lud_create_d(N); vsip_mcopy_d_d(X,XT); if(luAop == NULL) exit(1); vsip_lud_d(luAop,A); vsip_lusol_d(luAop,0,X); vsip_lusol_d(luAop,1,XT); vsip_lud_destroy_d(luAop); } } {int i,j; printf("A\\X\n"); for(i=0; i<N; i++){ for(j=0; j<3; j++) printf("%9.2f%s",vsip_mget_d(X,i,j),(j == 2) ? "":","); printf(";\n"); } } {int i,j; printf("A'\\X\n"); for(i=0; i<N; i++){ for(j=0; j<3; j++) printf("%9.2f%s",vsip_mget_d(XT,i,j),(j == 2) ? "":","); printf(";\n"); } } { vsip_valldestroy_d(b); vsip_valldestroy_d(x0); vsip_malldestroy_d(X); vsip_malldestroy_d(A); } }vsip_finalize((void*)0);return 1; }
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_mview_d *A = vsip_mcreate_d(M,N,VSIP_COL,VSIP_MEM_NONE), *A0 = vsip_mcreate_d(M,N,VSIP_COL,VSIP_MEM_NONE); /* get data */ FILE *fptr = fopen(argv[3],"r"); VU_mreadf_d(fptr,A); fclose(fptr); vsip_mcopy_d_d(A,A0); /* will use A, original data in A0 */ { /* test prodq for Q1 */ /* create a QRD object */ vsip_qr_d *qrd = vsip_qrd_create_d(M,N,VSIP_QRD_SAVEQ1); /* create a matrix to hold Q */ vsip_mview_d *I = VU_I_d(M); vsip_mview_d *Q = vsip_msubview_d(I,0,0,M,N); vsip_mview_d *Qt = vsip_mtransview_d(Q); /* create a matrix to hold R */ vsip_mview_d *A1 = vsip_mcreate_d(M,N,VSIP_ROW,VSIP_MEM_NONE); vsip_mview_d *R1 = vsip_msubview_d(A1,0,0,N,N); vsip_mview_d *R = vsip_mcreate_d(N,N,VSIP_ROW,VSIP_MEM_NONE); /* create a matrix to hold Q Q^t */ vsip_mview_d *I1 = vsip_mcreate_d(M,M,VSIP_ROW,VSIP_MEM_NONE); vsip_mview_d *I_1NN = vsip_msubview_d(I1,0,0,N,N); vsip_mview_d *I_1MN = vsip_msubview_d(I1,0,0,M,N); vsip_mview_d *I_1NM = vsip_msubview_d(I1,0,0,N,M); /* create a matrix to hold Q^t Q */ vsip_mview_d *I2 = vsip_mcreate_d(M,M,VSIP_ROW,VSIP_MEM_NONE); vsip_mview_d *I_2NN = vsip_msubview_d(I2,0,0,N,N); vsip_mview_d *I_2MN = vsip_msubview_d(I2,0,0,M,N); vsip_mview_d *I_2NM = vsip_msubview_d(I2,0,0,N,M); /* do decomposition */ vsip_qrd_d(qrd,A); /* find Q */ vsip_qrdprodq_d(qrd,VSIP_MAT_NTRANS,VSIP_MAT_RSIDE,I); printf("A = \n"); VU_mprintm_d("6.4",A0); printf("Q = \n"); VU_mprintm_d("6.4",Q); /* find R */ vsip_mcopy_d_d(A0,A1); vsip_mprod_d(Qt,A1,R); printf("From mprod R = \n"); VU_mprintm_d("6.4",R); vsip_qrdprodq_d(qrd,VSIP_MAT_TRANS,VSIP_MAT_LSIDE,A1); printf("From qrdprod R = \n"); VU_mprintm_d("6.4",R1); /* find A from Q and R */ vsip_mprod_d(Q,R,A1); printf("Q R = \n");VU_mprintm_d("6.4",A1); /* find Q^t Q using mprod */ VU_mfillz_d(I1); VU_mfillz_d(I2); vsip_mcopy_d_d(Qt,I_1NM); vsip_mprod_d(I_1NM,Q,I_2NN); printf("directly using mprod Q^t Q = \n"); VU_mprintm_d("6.4",I_2NN); /* find Q^t Q using matprod on Rside */ VU_mfillz_d(I1); vsip_mcopy_d_d(Qt,I_1NM); vsip_qrdprodq_d(qrd,VSIP_MAT_NTRANS,VSIP_MAT_RSIDE,I_1NM); printf("using qrdprodq Q^t Q Rside = \n"); VU_mprintm_d("6.4",I_1NN); /* find Q^t Q using matprod on Lside */ VU_mfillz_d(I2); vsip_mcopy_d_d(Q,I_2MN); vsip_qrdprodq_d(qrd,VSIP_MAT_TRANS,VSIP_MAT_LSIDE,I2); printf("using qrdprodq Q^t Q Lside = \n"); VU_mprintm_d("6.4",I_2NN); /* find Q Q^t using Mprod */ VU_mfillz_d(I1); VU_mfillz_d(I2); vsip_mcopy_d_d(Qt,I_1NM); vsip_mprod_d(Q,I_1NM,I2); printf("directly using mprod Q Q^t = \n"); VU_mprintm_d("6.4",I2); /* find Q Q^t using matprod on Rside */ VU_mfillz_d(I1); vsip_mcopy_d_d(Q,I_1MN); vsip_qrdprodq_d(qrd,VSIP_MAT_TRANS,VSIP_MAT_RSIDE,I1); printf("using qrdprodq Q Q^t Rside = \n"); VU_mprintm_d("6.4",I1); /* find Q Q^t using matprod on Lside */ VU_mfillz_d(I2); vsip_mcopy_d_d(Qt,I_2NM); vsip_qrdprodq_d(qrd,VSIP_MAT_NTRANS,VSIP_MAT_LSIDE,I2); printf("using qrdprodq Q Q^t Lside = \n"); VU_mprintm_d("6.4",I2); } } }vsip_finalize((void*)0);return 0; }
int main(){vsip_init((void*)0); { vsip_mview_d *A = vsip_mcreate_d(N,N,VSIP_ROW,0); vsip_vview_d *x0 = vsip_vcreate_d(N,0); vsip_vview_d *b = vsip_vcreate_d(N,0); vsip_mview_d *X = vsip_mcreate_d(N,3,VSIP_ROW,0); vsip_mview_d *XT = vsip_mcreate_d(N,3,VSIP_ROW,0); vsip_vramp_d(1,1,x0); vsip_vmul_d(x0,x0,x0); { int i; vsip_vview_d *r = vsip_mrowview_d(A,0); vsip_offset o = vsip_vgetoffset_d(r); for(i=0; i<N; i++){ vsip_vputoffset_d(r,o); vsip_vramp_d(i,1,r); o +=N; } vsip_vdestroy_d(r); } { vsip_vview_d *r = vsip_mdiagview_d(A,0); vsip_vfill_d(0,r); vsip_vdestroy_d(r); } {int i,j; printf("A = [\n"); for(i=0; i<N; i++){ for(j=0; j<N; j++) printf("%9.2f%s",vsip_mget_d(A,i,j),(j == N-1) ? "":","); printf(";\n"); } printf("]\n"); } { int k; vsip_vview_d *x; vsip_length L = vsip_mgetrowlength_d(X); for(k=0; k<L; k++){ x = vsip_mcolview_d(X,k); vsip_mvprod_d(A,x0,b); vsip_vcopy_d_d(b,x); vsip_svmul_d(2.0,x0,x0); vsip_vdestroy_d(x); } {int i,j; printf("X = [\n"); for(i=0; i<N; i++){ for(j=0; j<3; j++) printf("%9.2f%s",vsip_mget_d(X,i,j),(j == 2) ? "":","); printf(";\n"); } printf("]\n"); } {vsip_lu_d* luAop = vsip_lud_create_d(N); vsip_mcopy_d_d(X,XT); if(luAop == NULL) exit(1); vsip_lud_d(luAop,A); vsip_lusol_d(luAop,0,X); vsip_lusol_d(luAop,1,XT); vsip_lud_destroy_d(luAop); } } {int i,j; printf("A\\X\n"); for(i=0; i<N; i++){ for(j=0; j<3; j++) printf("%9.2f%s",vsip_mget_d(X,i,j),(j == 2) ? "":","); printf(";\n"); } } {int i,j; printf("A'\\X\n"); for(i=0; i<N; i++){ for(j=0; j<3; j++) printf("%9.2f%s",vsip_mget_d(XT,i,j),(j == 2) ? "":","); printf(";\n"); } } { vsip_valldestroy_d(b); vsip_valldestroy_d(x0); vsip_malldestroy_d(X); vsip_malldestroy_d(A); } }vsip_finalize((void*)0);return 1; }