View Raw SPL
/* IFFT panel */
_ifft2w(ser, rlen, clen, form, dwin)
{
        local evalstr;

        /* Real, Cartesian or Polar form */
        switch (form)
        {
                case 0:
                case 1:
                default:
                        func = "Ifft2";
                        break;

                case 2:
                        func = "Ifftp2";
                        break;
        }

        /* row length */
        if (strcmp(rlen, "-1") == 0)
        {
                if (strcmp(clen, "-1") == 0)
                {
                        rlenstr = "";
                }
                else
                {
                        rlenstr = sprintf("numrows(%s)", ser);
                }
        }
        else if (strcmp(rlen, "-2") == 0)
        {
                rlenstr = sprintf("bestpow2(%s)", ser);
        }
        else
        {
                rlenstr = sprintf("numrows(%s)", ser);
        }

        /* column length */
        if (strcmp(clen, "-1") == 0)
        {
                clenstr = "";
        }
        else if (strcmp(clen, "-2") == 0)
        {
                clenstr = sprintf("bestpow2(%s)", ser);
        }
        else
        {
                clenstr = sprintf("numcols(%s)", ser);
        }

        if (strlen(clenstr) == 0)
        {
                if (strlen(rlenstr) == 0)
                {
                        evalstr = sprintf("%s(%s)", func, ser);
                }
                else
                {
                        evalstr = sprintf("%s(%s, %s)", func, ser, rlenstr);
                }
        }
        else
        {
                evalstr = sprintf("%s(%s, %s, %s)", func, ser, rlenstr, clenstr);
        }

        if (form == 0)
        {
                evalstr = sprintf("setwf(%s, 'Real(%s)')", _dwin, evalstr);
        }
        else
        {
                evalstr = sprintf("setwf(%s, '%s')", _dwin, evalstr);
        }

        eval(evalstr);
}