Текст подпрограммы и версий
fta2r_c.zip , fta2d_c.zip
Тексты тестовых примеров
tfta2r_c.zip , tfta2d_c.zip

Подпрограмма:  fta2r_c

Назначение

Одновременное выполнение прямого быстрого дискретного преобразования Фурье двух одномерных массивов вещественных чисел, каждый из которых имеет длину  n, равную целой степени двух.

Математическое описание

Подпрограмма fta2r_c упаковывает два заданных одномерных массива вещественных чисел в один комплексный массив, затем обращается к подпрограмме fta1r_c для выполнения прямого преобразования этого комплексного массива, после чего полученный преобразованный массив распаковывается в виде двух комплексных массивов, представляющих собой искомые преобразования исходных вещественных массивов.

Н.С.Бахвалов, Н.П.Жидков, Г.М.Кобельков. Численные методы. Изд - во "Наука", 1987.

Использование

    int fta2r_c (real *array1, real *array2, complex *ffta1,
        complex *ffta2, integer *n)

Параметры

array1 - вещественный одномерный массив длины  n, содержащий компоненты первого исходного массива вещественных чисел;
array2 - вещественный одномерный массив длины  n, содержащий компоненты второго исходного массива вещественных чисел;
ffta1 - комплексный одномерный массив длины  n, содержащий на выходе прямое преобразование Фурье массива array1;
ffta2 - комплексный одномерный массив длины  n, содержащий на выходе прямое преобразование Фурье массива array2;
n - длина исходных преобразуемых массивов (тип: целый).

Версии

fta2d_c - одновременное выполнение прямого быстрого дискретного преобразования Фурье двух одномерных вещественных чисел, каждый из которых имеет длину  n, равную целой степени двух, в режиме удвоенной точности. Эта версия имеется только для тех компиляторов, входной язык которых допускает обработку комплексных чисел удвоенной точности; в этом случае параметры array1 и array2 должны иметь тип double, а параметры ffta1 и ffta2 - тип double complex.

Вызываемые подпрограммы

       fta1c_c -
       fta1p_c  
выполнение прямого и обратного быстрых преобразований Фурье одномерного массива комплексных чисел длины  n, равной целой степени двух, в режимах одинарной и удвоенной точности; используются в подпрограммах fta2r_c и fta2d_c соответственно.

Замечания по использованию

  В подпрограммах fta2r_c и fta2d_c проверка того, что значение  n должно быть целой степенью двух, не производится.

Пример использования

int main(void)
{
    /* Local variables */
    static complex ffta1[4], ffta2[4];
    extern int fta2r_c(real *, real *, complex *, complex *, int *);
    static real array1[4], array2[4];

    array1[0] = 1.f;
    array1[1] = 4.f;
    array1[2] = 7.f;
    array1[3] = 10.f;
/* l1: */
    fta2r_c(array1, array2, ffta1, ffta2, &c__4);

    printf("\n %15.5e %15.5e  %15.5e %15.5e ",
           ffta1[0].r,ffta1[0].i,ffta1[1].r,ffta1[1].i);
    printf("\n %15.5e %15.5e  %15.5e %15.5e \n",
           ffta1[2].r,ffta1[2].i,ffta1[3].r,ffta1[3].i);
    printf("\n %15.5e %15.5e  %15.5e %15.5e ",
           ffta2[0].r,ffta2[0].i,ffta2[1].r,ffta2[1].i);
    printf("\n %15.5e %15.5e  %15.5e %15.5e \n",
           ffta2[2].r,ffta2[2].i,ffta2[3].r,ffta2[3].i);
    return 0;
} /* main */


Результаты:

        ffta1(1) = (22.0, 0.0) ,  ffta1(2) = (- 6.0, - 6.0) 
        ffta1(3) = (- 6.0, 0.0) ,  ffta1(4) = (- 6.0,   6.0) 

        ffta2(1) = (22.0, 0.0) ,   ffta2(2) = (- 6.0, - 6.0) 
        ffta2(3) = (- 6.0, 0.0) ,   ffta2(4) = (- 6.0,   6.0)