Beispiel #1
0
LTFAT_API int
LTFAT_NAME(real2complex_array)(const LTFAT_REAL* in, ltfat_int L,
                               LTFAT_COMPLEX* out)
{
    LTFAT_REAL (*outTmp)[2];
    int status = LTFATERR_SUCCESS;
    CHECKNULL(in); CHECKNULL(out);
    CHECK(LTFATERR_BADSIZE, L > 0, "L must be positive");

    outTmp = (LTFAT_REAL(*)[2])  out;

    if (in == (LTFAT_REAL*)out)
    {
        // Go from the back to avoid overwriting input
        for (ltfat_int ii = L - 1; ii >= 0; ii--)
        {
            outTmp[ii][0] = in[ii];
            outTmp[ii][1] = 0.0;
        }
    }
    else
    {
        for (ltfat_int ii = 0; ii < L; ii++)
        {
            outTmp[ii][0] = in[ii];
            outTmp[ii][1] = 0.0;
        }
    }

error:
    return status;
}
Beispiel #2
0
LTFAT_EXTERN
void LTFAT_NAME(array2complex)(LTFAT_TYPE *in, LTFAT_COMPLEXH *out, const size_t L)
{
#ifdef LTFAT_COMPLEXTYPE
if(in==(LTFAT_TYPE*)out)
{
    return;
}
else
{
    memcpy(out,in,L*sizeof(LTFAT_COMPLEXH));
}
#else
if(in==(LTFAT_TYPE*)out)
{
    // This should produce an error
}
else
{
   LTFAT_REAL (*outTmp)[2] = (LTFAT_REAL(*)[2])  out;
   for(size_t ii=0;ii<L;ii++)
   {
      outTmp[ii][0] = in[ii];
      outTmp[ii][1] = (LTFAT_TYPE) 0.0;
   }
}
#endif
}