| @@ -24,8 +24,10 @@ | |||||
| using lol::real; | using lol::real; | ||||
| using lol::String; | using lol::String; | ||||
| void FAIL() | |||||
| void FAIL(char const *message) | |||||
| { | { | ||||
| printf("Error: %s\n", message); | |||||
| printf("\n"); | |||||
| printf("Usage:\n"); | printf("Usage:\n"); | ||||
| printf(" lolremez [-d degree] [-i xmin xmax] x-expression [x-error]\n"); | printf(" lolremez [-d degree] [-i xmin xmax] x-expression [x-error]\n"); | ||||
| printf("\n"); | printf("\n"); | ||||
| @@ -49,22 +51,21 @@ int main(int argc, char **argv) | |||||
| if (argv[i] == String("-d")) | if (argv[i] == String("-d")) | ||||
| { | { | ||||
| if (i + 1 >= argc) | if (i + 1 >= argc) | ||||
| FAIL(); | |||||
| FAIL("not enough arguments for -d"); | |||||
| degree = atoi(argv[++i]); | degree = atoi(argv[++i]); | ||||
| } | } | ||||
| else if (argv[i] == String("-i")) | else if (argv[i] == String("-i")) | ||||
| { | { | ||||
| if (i + 2 >= argc) | if (i + 2 >= argc) | ||||
| FAIL(); | |||||
| FAIL("not enough arguments for -i"); | |||||
| xmin = argv[++i]; | xmin = argv[++i]; | ||||
| xmax = argv[++i]; | xmax = argv[++i]; | ||||
| i += 2; | |||||
| } | } | ||||
| else if (g) | else if (g) | ||||
| { | { | ||||
| FAIL(); | |||||
| FAIL("unknown argument"); | |||||
| } | } | ||||
| else if (f) | else if (f) | ||||
| { | { | ||||
| @@ -76,10 +77,11 @@ int main(int argc, char **argv) | |||||
| } | } | ||||
| } | } | ||||
| if (!f || real(xmin) >= real(xmax)) | |||||
| { | |||||
| FAIL(); | |||||
| } | |||||
| if (!f) | |||||
| FAIL("no function specified"); | |||||
| if (real(xmin) >= real(xmax)) | |||||
| FAIL("invalid range"); | |||||
| remez_solver solver(degree, 20); | remez_solver solver(degree, 20); | ||||
| solver.run(xmin, xmax, f, g); | solver.run(xmin, xmax, f, g); | ||||