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
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:
@@ -407,6 +407,16 @@ _Newest first._
|
||||
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
||||
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
||||
recursive match, List.append, List.fold_left.
|
||||
- 2026-05-09 Phase 5.1 — int_sqrt.ml baseline (integer Newton sqrt,
|
||||
12+14+1000+1 = 1027). Newton's method on integers using `(x +
|
||||
n/x) / 2` until convergence (`y >= x`). Tests:
|
||||
isqrt 144 = 12
|
||||
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 + while convergence loop. 88
|
||||
baseline programs total.
|
||||
- 2026-05-09 Phase 5.1 — grid_paths.ml baseline (count distinct
|
||||
paths in (4+1)x(6+1) grid = C(10,4) = 210). DP fills a flattened
|
||||
2D array: `dp.(0,0) = 1`, others `dp.(i,j) = dp.(i-1,j) + dp.(i,
|
||||
|
||||
Reference in New Issue
Block a user