int main() { int i; vsip_scalar_d dataLeft; vsip_vview_d* dataRight; vsip_vview_d* dataSum; vsip_init((void *)0); dataRight = vsip_vcreate_d(L, VSIP_MEM_NONE); dataSum = vsip_vcreate_d(L, VSIP_MEM_NONE); /* Make up some data to find the magnitude of */ /* First set the scalar equal to 1*/ dataLeft = 1.0; /* Then compute a ramp from one to minus one */ vsip_vramp_d(1.0, -2.0/(double)(L-1), dataRight); /* Add the scalar and the vector */ vsip_svadd_d(dataLeft, dataRight, dataSum); /* now print out the data and its sum */ for(i=0; i < L; i++) printf("%7.4f = (%7.4f) + (%7.4f) \n", vsip_vget_d(dataSum,i), dataLeft, vsip_vget_d(dataRight,i)); /* destroy the vector views and any associated blocks */ vsip_blockdestroy_d(vsip_vdestroy_d(dataRight)); vsip_blockdestroy_d(vsip_vdestroy_d(dataSum)); vsip_finalize((void *)0); return 0; }
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(int argc, char *argv[]) { vsip_init((void*)0); { if(argc < 4) { printf("usage\nfirEx length decimation filterFile <indataFile >outputFile\n"); exit(0); } { vsip_length N = (vsip_length)atoi(argv[1]); int D = atoi(argv[2]); vsip_scalar_vi n = 0,k = 0; vsip_scalar_d hv; FILE *fh; vsip_fir_d *fir; vsip_vview_d *x = vsip_vcreate_d(N,0), *h,*y; fh = fopen(argv[3],"r"); while(fscanf(fh,"%lf",&hv) == 1) n++; rewind(fh); y = vsip_vcreate_d(N/D + 1,0); h = vsip_vcreate_d(n,0); n=0; while(fscanf(fh,"%lf",&hv) == 1) { vsip_vput_d(h,n,hv); n++; } fclose(fh); fir = vsip_fir_create_d(h,VSIP_NONSYM,N,D,STATE,0,0); n = VU_scanstdin_d(x); while(n == N) { k = vsip_firflt_d(fir,x,y); VU_printstdout_d(y,0,k); n = VU_scanstdin_d(x); } if(n != 0) { k = vsip_firflt_d(fir,x,y); VU_printstdout_d(y,0,k); } { /* test getattr */ vsip_fir_attr attr; vsip_fir_getattr_d(fir,&attr); printf("kernel %lu\n input %lu\n output %lu\ndecimation %d\n", attr.kernel_len,attr.in_len,attr.out_len, attr.decimation); } vsip_valldestroy_d(y); vsip_valldestroy_d(x); vsip_valldestroy_d(h); vsip_fir_destroy_d(fir); } vsip_finalize((void*)0); return 1; } }
int main() { vsip_vview_d *dataA; vsip_vview_d *dataB; vsip_vview_vi *Index; vsip_vview_bl *dataBl; int i; vsip_length N; vsip_init((void *)0); dataA = vsip_vcreate_d(L, VSIP_MEM_NONE); dataB = vsip_vcreate_d(L, VSIP_MEM_NONE); Index = vsip_vcreate_vi(L, VSIP_MEM_NONE); dataBl= vsip_vcreate_bl(L, VSIP_MEM_NONE); /* make up some data */ vsip_vramp_d(0,2 * PI/(L-1),dataA); vsip_vcos_d(dataA,dataB); /* find out where dataB is greater than zero */ vsip_vfill_d(0,dataA); vsip_vlgt_d(dataB,dataA,dataBl); /* find the index where dataB is greater than zero */ if((N = vsip_vindexbool(dataBl,Index))) { /* make a vector of those points where dataB is greater than zero*/ vsip_vgather_d(dataB,Index,vsip_vputlength_d(dataA,N)); /*print out the results */ printf("Index Value\n"); for(i=0; i<N; i++) printf("%li %6.3f\n", vsip_vget_vi(Index,i), vsip_vget_d(dataA,i)); } else { printf("Zero Length Index"); exit(0); } vsip_vfill_d(0,dataB); vsip_vscatter_d(dataA,dataB,Index); for(i=0; i<L; i++) printf("%6.3f\n",vsip_vget_d(dataB,i)); /*recover the data space*/ vsip_blockdestroy_d(vsip_vdestroy_d(dataA)); vsip_blockdestroy_d(vsip_vdestroy_d(dataB)); vsip_blockdestroy_vi(vsip_vdestroy_vi(Index)); vsip_blockdestroy_bl(vsip_vdestroy_bl(dataBl)); vsip_finalize((void *)0); return 0; }
int main() { int i; vsip_cvview_d* dataEuler; vsip_vview_d* data; vsip_init((void *)0); dataEuler = vsip_cvcreate_d(L, VSIP_MEM_NONE); data = vsip_vcreate_d(L, VSIP_MEM_NONE); /* Make up some data */ /* Compute a ramp from zero to 2pi */ vsip_vramp_d(0.0, (2.0 * PI / (double) (L - 1)), data); /* Compute Euler */ vsip_veuler_d(data,dataEuler); /* Now print out data and dataEuler */ for(i=0; i < L; i++) { printf(" %7.4f => (%7.4f, %7.4f)\n",vsip_vget_d(data,i), vsip_real_d(vsip_cvget_d(dataEuler,i)), vsip_imag_d(vsip_cvget_d(dataEuler,i))); } /* Destroy the vector views and any associated blocks */ vsip_blockdestroy_d(vsip_vdestroy_d(data)); vsip_cblockdestroy_d(vsip_cvdestroy_d(dataEuler)); vsip_finalize((void *)0); return 0; }
int main() { double data[N]; /* a user-created data space */ int i; vsip_vview_d* a; vsip_vview_d* x; vsip_init((void *)0); a = vsip_vbind_d(vsip_blockbind_d(data,N, VSIP_MEM_NONE),0,1,N); x = vsip_vcreate_d(N, VSIP_MEM_NONE); vsip_vramp_d(0.0, 1.0, x); /* admit the user block with no update */ vsip_blockadmit_d(vsip_vgetblock_d(a),VSIP_FALSE); /*compute the 10^x value */ vsip_vexp10_d(x, a); /* release the user block with update */ vsip_blockrelease_d(vsip_vgetblock_d(a),VSIP_TRUE); /*print it */ for(i=0; i<N; i++) printf("%f ",data[i]); printf("\n"); /*destroy the vector views and any associated blocks */ vsip_blockdestroy_d(vsip_vdestroy_d(x)); vsip_blockdestroy_d(vsip_vdestroy_d(a)); vsip_finalize((void *)0); return 0; }
void VU_vfreqswapIP_d(vsip_vview_d* b) { vsip_length N = vsip_vgetlength_d(b); if(N%2){/* odd */ vsip_vview_d *a1 = vsip_vsubview_d(b, (vsip_index)(N/2)+1, (vsip_length)(N/2)); vsip_vview_d *a2 = vsip_vsubview_d(b, (vsip_index)0, (vsip_length)(N/2)+1); vsip_vview_d *a3 = vsip_vcreate_d((vsip_length)(N/2)+1, VSIP_MEM_NONE); vsip_vcopy_d_d(a2,a3); vsip_vputlength_d(a2,(vsip_length)(N/2)); vsip_vcopy_d_d(a1,a2); vsip_vputlength_d(a2,(vsip_length)(N/2) + 1); vsip_vputoffset_d(a2,(vsip_offset)(N/2)); vsip_vcopy_d_d(a3,a2); vsip_vdestroy_d(a1); vsip_vdestroy_d(a2); vsip_valldestroy_d(a3); }else{ /* even */ vsip_vview_d *a1 = vsip_vsubview_d(b, (vsip_index)(N/2), (vsip_length)(N/2)); vsip_vputlength_d(b,(vsip_length)(N/2)); vsip_vswap_d(b,a1); vsip_vdestroy_d(a1); vsip_vputlength_d(b,N); } return; }
#include <stdio.h> #include "vsip.h" #define L 7 /* length */ int main() { double data[L]; /*a user-created data space */ int i; vsip_vview_d* ramp; vsip_vview_d* output; vsip_init((void *)0); ramp = vsip_vcreate_d(L, VSIP_MEM_NONE); output = vsip_vbind_d(vsip_blockbind_d(data,L, VSIP_MEM_NONE),0,1,L); /*compute a ramp from zero to L-1*/ vsip_vramp_d(0.0, 1.0, ramp); /* admit the user block with no update */ vsip_blockadmit_d(vsip_vgetblock_d(output),VSIP_FALSE); /*compute the hyperbolic cosine value */ vsip_vcosh_d(ramp, output); /* release the user block with update */ vsip_blockrelease_d(vsip_vgetblock_d(output),VSIP_TRUE); /*print it */ for(i=0; i<L; i++) printf("%f ",data[i]); printf("\n"); /*destroy the vector views and any associated blocks */ vsip_blockdestroy_d(vsip_vdestroy_d(ramp)); vsip_blockdestroy_d(vsip_vdestroy_d(output)); vsip_finalize((void *)0); return 0; }
int main() { int i; /* define some vectors */ vsip_vview_d* dataReOne; vsip_vview_d* dataReTwo; vsip_vview_d* dataReQuotient; vsip_cvview_d* dataComplex; vsip_cvview_d* dataComplexQuotient; vsip_init((void *)0); dataReOne = vsip_vcreate_d(L, VSIP_MEM_NONE); dataReTwo = vsip_vcreate_d(L, VSIP_MEM_NONE); dataReQuotient = vsip_vcreate_d(L, VSIP_MEM_NONE); dataComplex = vsip_cvcreate_d(L, VSIP_MEM_NONE); dataComplexQuotient = vsip_cvcreate_d(L, VSIP_MEM_NONE); /* make up some data */ vsip_vramp_d(1,1,dataReOne); vsip_vfill_d(2,dataReTwo); vsip_vcmplx_d(dataReTwo,dataReOne,dataComplex); /*divide one by two and print the input and output */ vsip_vdiv_d(dataReOne,dataReTwo,dataReQuotient); for(i=0; i<L; i++) printf("%7.4f / %7.4f = %7.4f\n", vsip_vget_d(dataReOne,i), vsip_vget_d(dataReTwo,i), vsip_vget_d(dataReQuotient,i)); printf("\n"); /*divide one by complex and print the input and output */ vsip_rcvdiv_d(dataReOne,dataComplex,dataComplexQuotient); for(i=0; i<L; i++) printf("%7.4f / (%7.4f + %7.4fi) = (%7.4f + %7.4fi)\n", vsip_vget_d(dataReOne,i), vsip_real_d(vsip_cvget_d(dataComplex,i)), vsip_imag_d(vsip_cvget_d(dataComplex,i)), vsip_real_d(vsip_cvget_d(dataComplexQuotient,i)), vsip_imag_d(vsip_cvget_d(dataComplexQuotient,i))); /* destroy created objects */ vsip_blockdestroy_d(vsip_vdestroy_d(dataReOne)); vsip_blockdestroy_d(vsip_vdestroy_d(dataReTwo)); vsip_blockdestroy_d(vsip_vdestroy_d(dataReQuotient)); vsip_cblockdestroy_d(vsip_cvdestroy_d(dataComplex)); vsip_cblockdestroy_d(vsip_cvdestroy_d(dataComplexQuotient)); vsip_finalize((void *)0); return 0; }
int main() { vsip_vview_d *dataIn, *dataClip; vsip_init((void *)0); dataIn = vsip_vcreate_d(L, VSIP_MEM_NONE); dataClip = vsip_vcreate_d(L, VSIP_MEM_NONE); /* make some data */ vsip_vramp_d(0.0, (2 * PI)/(L - 1.0), dataIn); vsip_vcos_d(dataIn,dataIn); vsip_vclip_d(dataIn,-.8,.8,-.8,.8,dataClip); printf("clip Cosine between -.8 and .8\n in => out\n "); { int i; for(i=0; i<L; i++) printf("%7.4f => %7.4f\n", vsip_vget_d(dataIn,i),vsip_vget_d(dataClip,i)); } vsip_finalize((void *)0); return 0; }
int main() { vsip_vview_d* data; vsip_init((void *)0); data = vsip_vcreate_d(L, VSIP_MEM_NONE); /* Make up some data to find the sum of squares of */ vsip_vramp_d(0.0, 1.0, data); printf("%f \n", vsip_vsumsqval_d(data)); vsip_blockdestroy_d(vsip_vdestroy_d(data)); vsip_finalize((void *)0); return 0; } /* output */
int main() { int i = 0; vsip_vview_d *dataA; vsip_vview_d *dataB; vsip_vview_d *dataMax; vsip_vview_d *dataMin; vsip_vview_d *dataRamp; vsip_init((void *)0); dataA = vsip_vcreate_d(L, VSIP_MEM_NONE); dataB = vsip_vcreate_d(L, VSIP_MEM_NONE); dataMax = vsip_vcreate_d(L, VSIP_MEM_NONE); dataMin = vsip_vcreate_d(L, VSIP_MEM_NONE); dataRamp = vsip_vcreate_d(L, VSIP_MEM_NONE); /* Make up some data */ vsip_vramp_d(0.0, (2 * PI)/((double)(L-1)), dataRamp); vsip_vsin_d(dataRamp, dataA); vsip_vcos_d(dataRamp, dataB); /* find the Maximum Magnitde dataA or dataB*/ vsip_vmaxmg_d(dataA,dataB,dataMax); vsip_vminmg_d(dataA,dataB,dataMin); /* print out the results */ printf("A B Max Mag Min Mag\n"); for(i = 0; i < L; i++) printf("%7.4f %7.4f %7.4f %7.4f\n", vsip_vget_d(dataA,i), vsip_vget_d(dataB,i), vsip_vget_d(dataMax,i), vsip_vget_d(dataMin,i)); /* recover allocated memory */ vsip_blockdestroy_d(vsip_vdestroy_d(dataA)); vsip_blockdestroy_d(vsip_vdestroy_d(dataB)); vsip_blockdestroy_d(vsip_vdestroy_d(dataMax)); vsip_blockdestroy_d(vsip_vdestroy_d(dataMin)); vsip_blockdestroy_d(vsip_vdestroy_d(dataRamp)); vsip_finalize((void *)0); return 0; }
int main() { vsip_vview_d* data; vsip_init((void *)0); data = vsip_vcreate_d(L, VSIP_MEM_NONE); /* Make up some data to find the mean square value of */ /* Compute a ramp from zero to L-1 */ vsip_vramp_d(0.0, 1.0, data); /* And find and print its mean square value */ printf("%f \n",vsip_vmeansqval_d(data)); /*destroy the vector views and any associated blocks */ vsip_blockdestroy_d(vsip_vdestroy_d(data)); vsip_finalize((void *)0); return 0; }
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(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; }
void ref_corr_d(vsip_bias bias, vsip_support_region sup, vsip_vview_d const *ref, vsip_vview_d const *in, vsip_vview_d const *out) { vsip_length M = vsip_vgetlength_d(ref); vsip_length N = vsip_vgetlength_d(in); vsip_length P = vsip_vgetlength_d(out); vsip_length expected_P = ref_corr_output_size(sup, M, N); vsip_stride shift = ref_expected_shift(sup, M); assert(expected_P == P); vsip_vview_d *sub = vsip_vcreate_d(M, VSIP_MEM_NONE); // compute correlation vsip_index i; for (i=0; i<P; ++i) { vsip_vfill_d(0, sub); vsip_stride pos = (vsip_stride)i + shift; double scale; if (pos < 0) { vsip_vview_d *subsub = vsip_vsubview_d(sub, -pos, M + pos); vsip_vview_d *insub = vsip_vsubview_d(in, 0, M + pos); vsip_vcopy_d_d(insub, subsub); vsip_vdestroy_d(subsub); vsip_vdestroy_d(insub); scale = M + pos; } else if (pos + M > N) { vsip_vview_d *subsub = vsip_vsubview_d(sub, 0, N - pos); vsip_vview_d *insub = vsip_vsubview_d(in, pos, N - pos); vsip_vcopy_d_d(insub, subsub); vsip_vdestroy_d(subsub); vsip_vdestroy_d(insub); scale = N - pos; } else { vsip_vview_d *insub = vsip_vsubview_d(in, pos, M); vsip_vcopy_d_d(insub, sub); vsip_vdestroy_d(insub); scale = M; } #if VSIP_IMPL_CORR_CORRECT_SAME_SUPPORT_SCALING #else if (sup == VSIP_SUPPORT_SAME) { if (i < (M/2)) scale = i + (M+1)/2; // i + ceil(M/2) else if (i < N - (M/2)) scale = M; // M else scale = N - 1 + (M+1)/2 - i; // N-1+ceil(M/2)-i } #endif double val = vsip_vdot_d(ref, sub); if (bias == VSIP_UNBIASED) val /= scale; vsip_vput_d(out, i, val); } }
void test_corr_d(vsip_support_region support, vsip_bias bias, vsip_length ref_size, vsip_length input_size) { vsip_length const n_loop = 3; vsip_length const output_size = ref_corr_output_size(support, ref_size, input_size); vsip_corr1d_d *corr = vsip_corr1d_create_d(ref_size, input_size, support, 0, VSIP_ALG_SPACE); vsip_corr1d_attr attr; vsip_corr1d_getattr_d(corr, &attr); test_assert(attr.support == support); test_assert(attr.ref_len == ref_size); test_assert(attr.data_len == input_size); test_assert(attr.lag_len == output_size); vsip_randstate *rand = vsip_randcreate(0, 1, 1, VSIP_PRNG); vsip_vview_d *ref = vsip_vcreate_d(ref_size, VSIP_MEM_NONE); vsip_vview_d *in = vsip_vcreate_d(input_size, VSIP_MEM_NONE); vsip_vview_d *out = vsip_vcreate_d(output_size, VSIP_MEM_NONE); vsip_vfill_d(100, out); vsip_vview_d *chk = vsip_vcreate_d(output_size, VSIP_MEM_NONE); vsip_vfill_d(101, chk); vsip_index loop; for (loop=0; loop<n_loop; ++loop) { if (loop == 0) { vsip_vfill_d(1, ref); vsip_vramp_d(0, 1, in); } else if (loop == 1) { vsip_vrandu_d(rand, ref); vsip_vramp_d(0, 1, in); } else { vsip_vrandu_d(rand, ref); vsip_vrandu_d(rand, in); } vsip_correlate1d_d(corr, bias, ref, in, out); ref_corr_d(bias, support, ref, in, chk); double error = verror_db_d(out, chk); #if VERBOSE if (error > -100) { vsip_index i; for (i=0; i<output_size; ++i) { printf("%d : out = %f, chk = %f\n", i, vsip_vget_d(out, i), vsip_vget_d(chk, i)); } printf("error = %f\n", error); } #endif test_assert(error < -100); } }
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; }