/*************************************************************************** * 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; }