vsip_qr_f *vsip_qrd_create_f( vsip_length M, vsip_length N, vsip_qrd_qopt qopt) { vsip_qr_f *qr = (vsip_qr_f*) malloc(sizeof(vsip_qr_f)); if(( qr != NULL)){ if((qr->v = VI_vcreate_f(M,VSIP_MEM_NONE))!= NULL){ if((qr->w = VI_vcreate_f((vsip_length)10 * M,VSIP_MEM_NONE)) != NULL){ if((qr->beta = (vsip_scalar_f*)malloc(N * sizeof(vsip_scalar_f)))!=NULL){ /* everything is created all right */ qr->M = M; qr->N = N; qr->qopt = qopt; qr->A = &(qr->AA); } else { VI_valldestroy_f(qr->w); VI_valldestroy_f(qr->v); free(qr); qr = (vsip_qr_f*) NULL; } } else { VI_valldestroy_f(qr->v); free(qr); qr = (vsip_qr_f*) NULL; } } else { free(qr); qr = (vsip_qr_f*) NULL; } } else { qr = (vsip_qr_f*) NULL; } return qr; }
int vsip_qrd_destroy_f( vsip_qr_f* qr) { if(qr != NULL){ VI_valldestroy_f(qr->w); VI_valldestroy_f(qr->v); free(qr->beta); free(qr); } return 0; }