[git commit] factor: add code to test isqrt() correctness

Denys Vlasenko vda.linux at googlemail.com
Mon Apr 10 11:53:57 UTC 2017


commit: https://git.busybox.net/busybox/commit/?id=ad5394d591896fc1d025efff2fa6c8c580fb67e9
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 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;


More information about the busybox-cvs mailing list