Ejemplo n.º 1
0
vsip_qr_d *vsip_qrd_create_d(
            vsip_length M,
            vsip_length N,
            vsip_qrd_qopt qopt)
{
  vsip_qr_d *qr = (vsip_qr_d*) malloc(sizeof(vsip_qr_d));
  if(( qr != NULL)){
     if((qr->v = VI_vcreate_d(M,VSIP_MEM_NONE))!= NULL){
        if((qr->w = VI_vcreate_d((vsip_length)10 * M,VSIP_MEM_NONE)) != NULL){
          if((qr->beta = (vsip_scalar_d*)malloc(N * sizeof(vsip_scalar_d)))!=NULL){
             /* everything is created all right */
             qr->M = M;
             qr->N = N;
             qr->qopt = qopt;
             qr->A = &(qr->AA);
          } else {
             VI_valldestroy_d(qr->w);
             VI_valldestroy_d(qr->v);
             free(qr);
             qr = (vsip_qr_d*) NULL;
          }
        } else {
             VI_valldestroy_d(qr->v);
             free(qr);
             qr = (vsip_qr_d*) NULL;
        }
     } else {
       free(qr);
       qr = (vsip_qr_d*) NULL;
     }
  } else {
     qr = (vsip_qr_d*) NULL;
  }
  return qr;
}
Ejemplo n.º 2
0
vsip_fir_d *vsip_fir_create_d(
              const vsip_vview_d *kernel,
              vsip_symmetry symm,
              vsip_length N,
              vsip_length D,
              vsip_obj_state state,
              unsigned int ntimes,
              vsip_alg_hint hint)
{
    vsip_length klength = 0;
    vsip_fir_d *fir = (vsip_fir_d*)malloc(sizeof(vsip_fir_d));
    if(fir == NULL){ return (vsip_fir_d*) NULL;
    } else {
        switch(symm){
           case 0: klength = kernel->length;
                   break;
           case 1: klength = 2 * kernel->length - 1;
                   break;
           case 2: klength = 2 * kernel->length;
                   break;
        }
        fir->h = VI_vcreate_d(klength,VSIP_MEM_NONE);
        fir->s = VI_vcreate_d(klength-1,VSIP_MEM_NONE);
    }
    if((fir->h == NULL) | (fir->s == NULL)){ 
        vsip_fir_destroy_d(fir);
        return (vsip_fir_d*) NULL;
    } else {
       fir->N = N;
       fir->M = klength;
       fir->D = D;
       fir->p = 0;
       fir->ntimes = ntimes;
       fir->symm = symm;
       fir->hint = hint;
       switch(symm){
           case 0:{
              fir->h->offset = fir->h->length - 1;
              fir->h->stride = -1;
              VI_vcopy_d_d(kernel,fir->h);
           }
           break;
           case 1: {
              fir->h->length = kernel->length;
              VI_vcopy_d_d(kernel,fir->h);
              fir->h->offset = klength - 1;
              fir->h->stride = -1;
              VI_vcopy_d_d(kernel,fir->h);
              fir->h->length = klength;
           }
           break;
           case 2: {
              fir->h->length = kernel->length;
              VI_vcopy_d_d(kernel,fir->h);
              fir->h->offset = klength - 1;
              fir->h->stride = -1;
              VI_vcopy_d_d(kernel,fir->h);
              fir->h->length = klength;
           }
           break;
       }
       fir->state = state;
       fir->h->offset = 0;
       fir->h->stride = 1;
       VI_vfill_d(0,fir->s);
       return fir;
    }
}