home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- * Copyright (C) 1994 Charles P. Peterson *
- * 4007 Enchanted Sun, San Antonio, Texas 78244-1254 *
- * Email: Charles_P_Peterson@fcircus.sat.tx.us *
- * *
- * This is free software with NO WARRANTY. *
- * See gfft.c, or run program itself, for details. *
- * Support is available for a fee. *
- ***************************************************************************
- *
- * Program: gfft--General FFT analysis
- * File: ok.c
- * Purpose: OK! Do an ordinary fft analysis
- * Author: Charles Peterson (CPP)
- * History: 1-September-1993 CPP; Created.
- * Comment:
- */
-
- #include "gfft.h"
- #include "settings.h"
-
- ULONG ok_fft (BOOLEAN do_it_for_real)
- {
- unsigned long data_count;
- unsigned long data_number;
- unsigned long next_power;
- float *indata;
-
- data_count = ok_read (NULL, 0L);
- next_power = get_pos_power_2 (data_count);
- if (data_count != next_power)
- {
- if (Pad)
- {
- data_number = next_power;
- }
- else
- {
- data_number = next_power / 2;
- error_message (IGNORING_TAILEND);
- }
- }
- else
- {
- data_number = data_count;
- }
-
- if (!do_it_for_real) return data_number;
-
- indata = gmalloc (data_number * sizeof(float), NOTHING_SPECIAL);
-
- data_count = ok_read (indata, data_number);
- if (data_count != data_number)
- {
- unsigned long i;
- error_message (PADDING_TAILEND);
- for (i = data_count; i < data_number; i++)
- {
- indata[i] = 0.0;
- }
- }
-
- ok_rfft (indata, data_number);
- ok_writec (indata, data_number);
- gfree (indata);
-
- return data_number;
- }
-