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; }
vsip_vview_f* (vsip_vcreate_hanning_f)( vsip_length N, vsip_memory_hint h) { vsip_vview_f *a; a = VI_vcreate_f(N,h); if(a == NULL) return (vsip_vview_f*)NULL; { /*define variables*/ vsip_length n = 0; vsip_scalar_f *ap = (a->block->array) + a->offset, temp = (vsip_scalar_f)twoPI/(N+1); /*end define*/ /* Note this is always unit stride */ while(n++ < N ){ *ap++ = (vsip_scalar_f)0.5 * ((vsip_scalar_f)1. - (vsip_scalar_f)VSIP_COS_F(temp * (vsip_scalar_f) n)); } } return a; }
vsip_vview_f* vsip_vcreate_kaiser_f( vsip_length N, vsip_scalar_f beta, vsip_memory_hint h) { vsip_vview_f *a; a = VI_vcreate_f(N,h); if(a == NULL) return (vsip_vview_f*)NULL; { vsip_length n = 0; vsip_scalar_f *ap = (a->block->array) + a->offset, Ibeta, x = beta, c1 = (vsip_scalar_f)2.0 / (N -1 ); if((vsip_scalar_f)fabs(x) <= 3.0){ x /= 3.0; x *= x; Ibeta = (vsip_scalar_f)1 + x * (a1 + x * (a2 + x * (a3 + x * (a4 + x * (a5 + x * a6))))); } else { Ibeta = VI_Io_f(x); } /* Note this is always unit stride */ while(n < N){ vsip_scalar_f c3 = c1 * n - 1; if(c3 > 1.0) c3 = 1.0; x = beta * (vsip_scalar_f)sqrt(1 - (c3 * c3)); if((vsip_scalar_f)fabs(x) <= 3.0){ x /= 3.0; x *= x; *ap++ = ((vsip_scalar_f)1 + x * (a1 + x * (a2 + x * (a3 + x * (a4 + x * (a5 + x * a6)))))) / Ibeta; } else { *ap++ = VI_Io_f(x)/ Ibeta; } n++; } } return a; }