factor: add code to test isqrt() correctness
No binary (build failed)
—
(log yok)
| @@ -203,6 +203,23 @@ static NOINLINE void factorize(wide_t N) | |
| int factor_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | |
| int factor_main(int argc UNUSED_PARAM, char **argv) | |
| { | |
| + | #if 0 /* test isqrt() correctness */ |
| + | wide_t n = argv[1] ? bb_strtoull(argv[1], NULL, 0) : time(NULL); |
| + | for (;;) { |
| + | half_t h; |
| + | if (--n == 0) |
| + | --n; |
| + | h = isqrt(n); |
| + | if (!(n & 0xff)) |
| + | printf("isqrt(%llx)=%"HALF_FMT"x\n", n, h); |
| + | if ((wide_t)h * h > n) |
| + | return 1; |
| + | h++; |
| + | if (h != 0 && (wide_t)h * h <= n) |
| + | return 1; |
| + | } |
| + | #endif |
| + | |
| //// coreutils has undocumented option ---debug (three dashes) | |
| //getopt32(argv, ""); | |
| //argv += optind; | |