ocaml: phase 5.1 fib_mod.ml baseline (Fibonacci mod prime, fib(100) mod 1000003 = 391360)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 25s
Iterative two-ref Fibonacci with modular reduction every step:
let fib_mod n m =
let a = ref 0 in
let b = ref 1 in
for _ = 1 to n do
let c = (!a + !b) mod m in
a := !b;
b := c
done;
!a
The 100th Fibonacci is 354_224_848_179_261_915_075, well past JS
safe-int (2^53). Modular reduction every step keeps intermediate
values within int53 precision so the answer is exact in our
runtime. fib(100) mod 1000003 = 391360.
76 baseline programs total.
This commit is contained in:
@@ -24,6 +24,7 @@
|
|||||||
"expr_eval.ml": 16,
|
"expr_eval.ml": 16,
|
||||||
"expr_simp.ml": 22,
|
"expr_simp.ml": 22,
|
||||||
"factorial.ml": 3628800,
|
"factorial.ml": 3628800,
|
||||||
|
"fib_mod.ml": 391360,
|
||||||
"fraction.ml": 7,
|
"fraction.ml": 7,
|
||||||
"frequency.ml": 5,
|
"frequency.ml": 5,
|
||||||
"gcd_lcm.ml": 60,
|
"gcd_lcm.ml": 60,
|
||||||
|
|||||||
13
lib/ocaml/baseline/fib_mod.ml
Normal file
13
lib/ocaml/baseline/fib_mod.ml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
let fib_mod n m =
|
||||||
|
let a = ref 0 in
|
||||||
|
let b = ref 1 in
|
||||||
|
for _ = 1 to n do
|
||||||
|
let c = (!a + !b) mod m in
|
||||||
|
a := !b;
|
||||||
|
b := c
|
||||||
|
done;
|
||||||
|
!a
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
fib_mod 100 1000003
|
||||||
@@ -407,6 +407,12 @@ _Newest first._
|
|||||||
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
|
||||||
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
'a tree`) with insert + in-order traversal. Tests parametric ADT,
|
||||||
recursive match, List.append, List.fold_left.
|
recursive match, List.append, List.fold_left.
|
||||||
|
- 2026-05-09 Phase 5.1 — fib_mod.ml baseline (Fibonacci mod prime,
|
||||||
|
fib(100) mod 1000003 = 391360). Iterative two-ref Fibonacci with
|
||||||
|
modular reduction at every step to keep intermediate values
|
||||||
|
bounded. The 100th Fibonacci is 354224848179261915075, which
|
||||||
|
exceeds JS safe-int range; modular arithmetic on each step keeps
|
||||||
|
computations within int53 precision. 76 baseline programs total.
|
||||||
- 2026-05-09 Phase 5.1 — luhn.ml baseline (Luhn check digit, 2/4
|
- 2026-05-09 Phase 5.1 — luhn.ml baseline (Luhn check digit, 2/4
|
||||||
inputs valid). Walks digits right-to-left, doubles every other
|
inputs valid). Walks digits right-to-left, doubles every other
|
||||||
starting from the second-from-right; if doubled value > 9
|
starting from the second-from-right; if doubled value > 9
|
||||||
|
|||||||
Reference in New Issue
Block a user