Ejemplo n.º 1
0
Archivo: svd_f.c Proyecto: rrjudd/jvsip
static vsip_vview_f *vsv_f(vsip_vview_f *v, vsip_vview_f *vs, vsip_index i)
{
     vsip_vattr_f attr;
     vsip_vgetattrib_f(v,&attr);
     attr.offset += i * attr.stride;
     attr.length -= i;
     vsip_vputattrib_f(vs,&attr);
     return vs;
}
Ejemplo n.º 2
0
void VU_mprodqt_f(
     vsip_mview_f *C,
     vsip_mview_f *H,
     vsip_scalar_f *beta)
{
     vsip_mattr_f attr_C,attr_C0;
     vsip_mattr_f attr_H0;
     vsip_vattr_f attr_h,attr_v0;
     vsip_vview_f *h = vsip_mcolview_f(H,0);
     vsip_length m,n;
     vsip_length j;
     vsip_stride k;
     vsip_vview_f *v, *w;
     vsip_mgetattrib_f(C,&attr_C);
     vsip_vgetattrib_f(h,&attr_h);
     vsip_mgetattrib_f(H,&attr_H0);
     attr_C0 = attr_C;
     m = attr_C.col_length;
     n = attr_C.row_length;
     v = vsip_vcreate_f(n,0);
     vsip_vgetattrib_f(v,&attr_v0);
     w = vsip_vcreate_f(m,0);
     vsip_vfill_f(0,v);
     for(k= attr_H0.row_length - 1; k >= 0; k--){
         j = (vsip_length)k;
         attr_h.offset = j * attr_H0.row_stride +
                         j * attr_H0.col_stride + attr_H0.offset;
         attr_h.length = attr_H0.col_length - j;
         vsip_vputlength_f(v,attr_h.length);
         vsip_vputoffset_f(v,n - attr_h.length);
         vsip_vputattrib_f(h,&attr_h);
         vsip_vcopy_f_f(h,v);
         vsip_vput_f(v,0,1);
         vsip_vputattrib_f(v,&attr_v0);
         VU_smvprod_f(-beta[j],C,v,w);
         VU_opu_f(C,w,v);              
     }
     printf("here 2\n");
     vsip_mputattrib_f(C,&attr_C0);
     vsip_vdestroy_f(h);
     vsip_valldestroy_f(v);
     vsip_valldestroy_f(w);
     return;
}
Ejemplo n.º 3
0
void VU_qtprodm_f(
     vsip_mview_f *C,
     vsip_mview_f *H,
     vsip_scalar_f *beta)
{
     vsip_mattr_f attr_C,attr_C0;
     vsip_mattr_f attr_H0;
     vsip_vattr_f attr_h,attr_v0;
     vsip_vview_f *h = vsip_mcolview_f(H,0);
     vsip_length m,n;
     vsip_length j;
     vsip_stride k;
     vsip_vview_f *v, *w;
     vsip_mgetattrib_f(C,&attr_C);
     vsip_vgetattrib_f(h,&attr_h);
     vsip_mgetattrib_f(H,&attr_H0);
     attr_C0 = attr_C;
     m = attr_C.col_length;
     n = attr_C.row_length;
     v = vsip_vcreate_f(m,0);
     vsip_vgetattrib_f(v,&attr_v0);
     w = vsip_vcreate_f(n,0);
     for(k= 0; k < attr_H0.row_length; k++){
         j = (vsip_length)k;
         attr_h.offset = j * attr_H0.row_stride +
                         j * attr_H0.col_stride + attr_H0.offset;
         attr_h.length = attr_H0.col_length -j;
         vsip_vputlength_f(v,attr_h.length);
         vsip_vputoffset_f(v,m - attr_h.length);
         vsip_vputattrib_f(h,&attr_h);
         vsip_vcopy_f_f(h,v);
         vsip_vput_f(v,0,1);
         vsip_vputattrib_f(v,&attr_v0);
         VU_svmprod_f(-beta[j],v,C,w);
         VU_opu_f(C,v,w);
         vsip_vput_f(v,k,0);
     }
     vsip_mputattrib_f(C,&attr_C0);
     vsip_vdestroy_f(h);
     vsip_valldestroy_f(v);
     vsip_valldestroy_f(w);
     return;
}
Ejemplo n.º 4
0
Archivo: svd_f.c Proyecto: rrjudd/jvsip
static vsip_vview_f *ivsv_f( vsip_vview_f *v, vsip_vview_f *vs, vsip_index i,vsip_index j)
{
     vsip_vattr_f attr;
     vsip_vgetattrib_f(v,&attr);
     if(j==0) j=attr.length;
     attr.offset += i * attr.stride;
     attr.length = j-i;
     vsip_vputattrib_f(vs,&attr);
     return vs;
} /* same */
Ejemplo n.º 5
0
Archivo: svd_f.c Proyecto: rrjudd/jvsip
static vsip_vview_f *diag_sv_f(vsip_mview_f* Am,vsip_vview_f* a, vsip_stride i)
{
    vsip_mattr_f A; vsip_vattr_f v;
    vsip_mgetattrib_f(Am,&A);
    vsip_vgetattrib_f(a,&v);
    v.stride=A.row_stride + A.col_stride;
    if(i==0){
       v.length = A.row_length;
       v.offset = A.offset;
    } else if (i == 1){
        v.offset = A.offset + A.row_stride;
        v.length = A.row_length - 1;
    } else {
        printf("Failed in diag_sv_f\n");
        exit(0);
    }
    vsip_vputattrib_f(a,&v);
    return a;
}