int main(){vsip_init((void*)0); { /* vsip_cmview_d *B = vsip_cmcreate_d(P,N,VSIP_ROW,0);*/ vsip_scalar_d Re[20], Im[20]; vsip_cblock_d *Bblock = vsip_cblockbind_d(Re,Im,20,0); vsip_cmview_d *B = vsip_cmbind_d(Bblock,0,4,5,1,4); vsip_cvview_d *a = vsip_cvcreate_d(P,0), *r = vsip_cvcreate_d(N,0); int i, j; for(i=0;i<P;i++) vsip_cvput_d(a,i,vsip_cmplx_d(i,1 + sqrt(i))); for(i=0;i<P;i++) for(j=0;j<N;j++) vsip_cmput_d(B,i,j,vsip_cmplx_d(1 , i * j)); vsip_cvmprod_d(a,B,r); printf("\n vector input \n v=["); for(i=0;i<P;i++) printf("(%5.2f %+5.2fi) ", vsip_real_d(vsip_cvget_d(a,i)), vsip_imag_d(vsip_cvget_d(a,i))); printf("]\n"); printf("\n B input \n B =[\n"); {for(i=0;i<P;i++) {for(j=0;j<N;j++){ printf(" (%5.2f %+5.2fi) ", vsip_real_d(vsip_cmget_d(B,i,j)), vsip_imag_d(vsip_cmget_d(B,i,j))); } printf(";\n"); } printf("]\n"); } printf("\n vector output \n"); for(i=0;i<N;i++) printf("(%5.2f, %5.2f) ", vsip_real_d(vsip_cvget_d(r,i)), vsip_imag_d(vsip_cvget_d(r,i))); printf("\n"); vsip_cvalldestroy_d(a); vsip_cmalldestroy_d(B); vsip_cvalldestroy_d(r); }vsip_finalize((void*)0);return 0; }
static void VU_cmconjIP_d(vsip_cmview_d *A) { vsip_length m = vsip_cmgetcollength_d(A); vsip_length n = vsip_cmgetrowlength_d(A); vsip_stride i,j; for(i=0; i<m; i++) for(j=0; j<n; j++) vsip_cmput_d(A,i,j,vsip_conj_d(vsip_cmget_d(A,i,j))); }
void VU_cmprint_d(vsip_cmview_d *X) { vsip_length RL = vsip_cmgetrowlength_d(X); vsip_length CL = vsip_cmgetcollength_d(X); vsip_length i,j; vsip_cscalar_d x; printf("[\n"); for(j=0; j<RL; j++){ for(i=0; i<CL; i++){ x=vsip_cmget_d(X,i,j); printf("(%6.4f%+6.4fi%s",vsip_real_d(x),vsip_imag_d(x),((i==(CL-1)) ? ");" : ")")); } printf("\n"); } printf("];\n"); return; }
void VU_cmprint_d(vsip_cmview_d *X) { vsip_length RL = vsip_cmgetrowlength_d(X); vsip_length CL = vsip_cmgetcollength_d(X); vsip_length row,col; vsip_cscalar_d x; printf("[\n"); for(row=0; row<CL; row++){ for(col=0; col<RL; col++){ x=vsip_cmget_d(X,row,col); printf("(%6.4f %+6.4fi%s ",vsip_real_d(x),vsip_imag_d(x),((col==(RL-1)) ? ");" : ")")); } printf("\n"); } printf("];\n"); return; }
PyObject *cmcopyToListByCol_d(vsip_cmview_d *v){ PyObject *cval; vsip_length M = vsip_cmgetcollength_d(v); vsip_length N = vsip_cmgetrowlength_d(v); PyObject *retval = PyList_New(M); vsip_index i,j; for(j=0; j<N; j++){ PyObject *col = PyList_New(M); for(i=0; i<M; i++){ vsip_cscalar_d x = vsip_cmget_d(v,i,j); double re = (double)x.r; double im = (double)x.i; cval = PyComplex_FromDoubles(re,im); PyList_SetItem(col,i,cval); } PyList_SetItem(retval,j,col); } return retval; }
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; }