ocaml: phase 5.1 int_sqrt.ml baseline (Newton integer sqrt, 12+14+1000+1 = 1027)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 23s

Newton's method on integers, converging when y >= x:

  let isqrt n =
    if n < 2 then n
    else
      let x = ref n in
      let y = ref ((!x + 1) / 2) in
      while !y < !x do
        x := !y;
        y := (!x + n / !x) / 2
      done;
      !x

Test cases:
  isqrt 144      = 12     (perfect square)
  isqrt 200      = 14     (floor of sqrt(200) ~= 14.14)
  isqrt 1000000  = 1000
  isqrt 2        = 1
  sum            = 1027

Companion to newton_sqrt.ml (iter 124, float Newton). Tests integer
division semantics from iter 94 and a while-until-convergence loop.

88 baseline programs total.
This commit is contained in:
2026-05-09 17:55:07 +00:00
parent 4eeb7e59b4
commit e8a0c86de0
3 changed files with 25 additions and 0 deletions

View File

@@ -36,6 +36,7 @@
"hailstone.ml": 111,
"hanoi.ml": 1023,
"hist.ml": 75,
"int_sqrt.ml": 1027,
"fizzbuzz.ml": 57,
"flatten_tree.ml": 28,
"list_ops.ml": 30,