Esempio n. 1
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;
}
Esempio n. 2
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;
}
Esempio n. 3
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);
}
Esempio n. 4
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;
}
Esempio n. 5
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;
}
Esempio n. 7
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;
}
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;
}
Esempio n. 9
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;
}