Example #1
0
LTFAT_EXTERN void
LTFAT_NAME(gabdual_long)(const LTFAT_TYPE *g,
			 const int L, const int R, const int a,
			 const int M, LTFAT_TYPE *gd)
{

#ifdef LTFAT_COMPLEXTYPE
   const int wfs = L;
#else
   const int wfs = L; /* wfacreal_size(L,a,M); */
#endif

   LTFAT_COMPLEX *gf = ltfat_malloc(wfs*R*sizeof(LTFAT_COMPLEX));
   LTFAT_COMPLEX *gdf = ltfat_malloc(wfs*R*sizeof(LTFAT_COMPLEX));

#ifdef LTFAT_COMPLEXTYPE
  
   LTFAT_NAME_REAL(wfac)(g, L, R, a, M, gf);
   LTFAT_NAME_REAL(gabdual_fac)((const LTFAT_COMPLEX *)gf,L,R,a,M,gdf);
   LTFAT_NAME_REAL(iwfac)((const LTFAT_COMPLEX *)gdf,L,R,a,M,gd);

#else
    
   LTFAT_NAME_REAL(wfacreal)(g, L, R, a, M, gf);
   LTFAT_NAME_REAL(gabdualreal_fac)((const LTFAT_COMPLEX *)gf,L,R,a,M,gdf);
   LTFAT_NAME_REAL(iwfacreal)((const LTFAT_COMPLEX *)gdf,L,R,a,M,gd);

#endif

   ltfat_free(gdf);
   ltfat_free(gf);

}
Example #2
0
    CHECK(LTFATERR_CANNOTHAPPEN, ltfat_phaseconvention_is_valid(ptype),
          "Invalid ltfat_phaseconvention enum value." );

    CHECKMEM( p = LTFAT_NEW(LTFAT_NAME(idgt_fb_plan)) );

    p->ptype = ptype;
    p->a = a;
    p->M = M;
    p->gl = gl;

    CHECKMEM( p->cbuf  = LTFAT_NAME_COMPLEX(malloc)(M));
    CHECKMEM( p->gw    = LTFAT_NAME(malloc)(gl));
    CHECKMEM( p->ff    = LTFAT_NAME_COMPLEX(malloc)(gl > M ? gl : M));

    CHECKSTATUS(
        LTFAT_NAME_REAL(ifft_init)(M, 1, p->cbuf, p->cbuf, flags, &p->p_small));

    LTFAT_NAME(fftshift)(g, gl, p->gw);

    *pout = p;
    return status;
error:
    if (p) LTFAT_NAME(idgt_fb_done)(&p);
    return status;
}

LTFAT_API int
LTFAT_NAME(idgt_fb_done)(LTFAT_NAME(idgt_fb_plan)** p)
{
    LTFAT_NAME(idgt_fb_plan)* pp;
    int status = LTFATERR_SUCCESS;