Metropoli BBS
VIEWER: okfft.c MODE: TEXT (ASCII)
/***************************************************************************
 *		  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;
}
[ RETURN TO DIRECTORY ]