Browse Source

test: minor Remez algorithm tests.

legacy
Sam Hocevar sam 13 years ago
parent
commit
7af192f529
2 changed files with 9 additions and 11 deletions
  1. +1
    -3
      test/math/remez-solver.h
  2. +8
    -8
      test/math/remez.cpp

+ 1
- 3
test/math/remez-solver.h View File

@@ -154,7 +154,6 @@ public:
if (i < ORDER + 1) if (i < ORDER + 1)
b = zeroes[i]; b = zeroes[i];


printf("Error for [%g..%g]: ", (double)a, (double)b);
for (;;) for (;;)
{ {
real c = a, delta = (b - a) >> 3; real c = a, delta = (b - a) >> 3;
@@ -183,7 +182,6 @@ public:
if (e > final) if (e > final)
final = e; final = e;
control[i] = (a + b) >> 1; control[i] = (a + b) >> 1;
printf("%g (at %g)\n", (double)e, (double)control[i]);
break; break;
} }
} }
@@ -290,7 +288,7 @@ public:
an[i] *= k2p[i]; an[i] *= k2p[i];
} }


printf("Final polynomial:\n");
printf("Polynomial estimate:\n");
for (int j = 0; j < ORDER + 1; j++) for (int j = 0; j < ORDER + 1; j++)
{ {
if (j) if (j)


+ 8
- 8
test/math/remez.cpp View File

@@ -24,22 +24,22 @@ using namespace std;
#include "remez-solver.h" #include "remez-solver.h"


/* The function we want to approximate */ /* The function we want to approximate */
static real myfun(real const &x)
real myfun(real const &y)
{ {
real y = sqrt(x);
return (sin(y) - y) / (x * y);
real x = sqrt(y);
return (sin(x) - x) / (x * y);
} }


static real myerr(real const &x)
real myerr(real const &y)
{ {
real y = sqrt(x);
return re(x * y);
real x = sqrt(y);
return sin(x) / (x * y);
} }


int main(void) int main(void)
{ {
RemezSolver<4> solver;
solver.Run(real::R_1 >> 400, real::R_PI_2 * real::R_PI_2, myfun, myerr, 15);
RemezSolver<6> solver;
solver.Run(real::R_1 >> 400, real::R_PI_2 * real::R_PI_2, myfun, myerr, 40);


return EXIT_SUCCESS; return EXIT_SUCCESS;
} }


Loading…
Cancel
Save