/* Test for the UnitCircle functions Copyright 2019 Ahmet Inan */ #include #include #include #include #include "unit_circle.hh" #include "const.hh" template void test(int MAX) { for (int N = 1; N <= MAX; ++N) { for (int n = -N; n <= N; ++n) { PRECISE x = DSP::Const::TwoPi() * PRECISE(n) / PRECISE(N); PRECISE cos_err = std::abs(DSP::UnitCircle::cos(n, N) - std::cos(x)); assert(cos_err < std::numeric_limits::epsilon()); PRECISE sin_err = std::abs(DSP::UnitCircle::sin(n, N) - std::sin(x)); assert(sin_err < std::numeric_limits::epsilon()); } } } int main() { test(5000); test(5000); std::cerr << "UnitCircle functions test passed!" << std::endl; return 0; }