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; }
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; } }