From ad5394d591896fc1d025efff2fa6c8c580fb67e9 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 10 Apr 2017 13:53:57 +0200 Subject: factor: add code to test isqrt() correctness Signed-off-by: Denys Vlasenko --- coreutils/factor.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/coreutils/factor.c b/coreutils/factor.c index 4a13181..7400174 100644 --- a/coreutils/factor.c +++ b/coreutils/factor.c @@ -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; -- cgit v1.1