32 lines
1.7 KiB
C
32 lines
1.7 KiB
C
#include "set_spectrum.h"
|
|
#include <assert.h>
|
|
#include <math.h>
|
|
#include <stdio.h>
|
|
|
|
int main(void)
|
|
{
|
|
double times[32], values[32], output[18], meta[3];
|
|
for (size_t i = 0; i < 32; ++i) { times[i] = (double)i / 32; values[i] = sin(2 * 3.14159265358979323846 * 4 * times[i]); }
|
|
output[17] = 12345;
|
|
assert(set_spectrum_analyze(times, values, 32, 32, SET_WINDOW_HANN, 0, 0, 0, 1, output, 17, meta) == SET_SPECTRUM_OK);
|
|
assert(meta[0] == 32 && meta[1] == 32);
|
|
assert(fabs(output[4] - 1.0) < 1e-12 && output[17] == 12345);
|
|
assert(set_spectrum_analyze(times, values, 32, 32, 0, 0, 0, 0, 1, output, 16, meta) == SET_SPECTRUM_INVALID);
|
|
assert(set_spectrum_analyze(times, values, 15, 32, 0, 0, 0, 0, 1, output, 17, meta) == SET_SPECTRUM_SHORT);
|
|
assert(set_spectrum_analyze(times, values, 32, 32, 0, 99, 0, 0, 1, output, 17, meta) == SET_SPECTRUM_INVALID);
|
|
assert(set_spectrum_analyze(times, values, 32, 32, 0, SET_FILTER_LOW_PASS, 0, 16, 1, output, 17, meta) == SET_SPECTRUM_CUTOFF);
|
|
times[12] = times[11];
|
|
assert(set_spectrum_analyze(times, values, 32, 32, 0, 0, 0, 0, 1, output, 17, meta) == SET_SPECTRUM_TIMING);
|
|
{
|
|
const double amplitudes[] = {10.0, .01, .02, .8, .03, .4, .02};
|
|
const double noise[] = {0, .10, .12, .11, .09, .10};
|
|
double scratch[6], peak[2];
|
|
assert(set_spectrum_dominant_peak(amplitudes, 7, 5, 3, 1e-6, scratch, 6, peak, 2) == 1);
|
|
assert(peak[0] == 15 && peak[1] == .8);
|
|
assert(set_spectrum_dominant_peak(noise, 6, 1, 3, 1e-6, scratch, 6, peak, 2) == 0);
|
|
assert(set_spectrum_dominant_peak(amplitudes, 7, 0, 3, 1e-6, scratch, 6, peak, 2) == -1);
|
|
}
|
|
puts("shared spectrum: OK");
|
|
return 0;
|
|
}
|