예제 #1
0
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;
}
예제 #2
0
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;
}