



Bits error versus i




Bits error versus n
Results
| Original | 43.0 |
|---|---|
| Target | 42.5 |
| Herbie | 18.1 |
if i < 2.2020524446628963e+106Initial program 44.1
rmApplied pow-to-exp44.3
Applied expm1-def37.8
Simplified16.7
rmApplied associate-*r/16.7
rmApplied *-commutative16.7
if 2.2020524446628963e+106 < i Initial program 33.0
rmApplied pow-to-exp56.6
Applied expm1-def51.1
Simplified51.1
Taylor expanded around 0 30.6
Final simplification18.1
herbie shell --seed 2019016 +o rules:numerics
(FPCore (i n)
:name "Compound Interest"
:herbie-target
(* 100 (/ (- (exp (* n (if (== (+ 1 (/ i n)) 1) (/ i n) (/ (* (/ i n) (log (+ 1 (/ i n)))) (- (+ (/ i n) 1) 1))))) 1) (/ i n)))
(* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))))
Time bar (total: 26.1s)Debug log
| 391× | (pre true 80) |
| 94× | (body real 80) |
| 89× | (body nan 80) |
| 80× | (body real 1280) |
| 62× | (body real 640) |
| 36× | (body real 2560) |
| 18× | (body real 320) |
| 12× | (body real 160) |
| 272.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 42.9b
Found 4 expressions with local error:
| 10.9b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 5.8b | (pow (+ 1 (/ i n)) n) |
| 2.0b | (- (pow (+ 1 (/ i n)) n) 1) |
| 0.1b | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 48× | add-sqr-sqrt |
| 40× | times-frac |
| 28× | add-cube-cbrt |
| 28× | *-un-lft-identity |
| 25× | associate-*r* |
| 20× | difference-of-sqr-1 |
| 16× | unpow-prod-down |
| 13× | div-inv |
| 9× | add-exp-log |
| 6× | fma-neg |
| 6× | add-cbrt-cube |
| 5× | associate-/l* |
| 5× | pow1 |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | associate-/r* |
| 4× | expm1-log1p-u |
| 3× | expm1-def |
| 2× | associate-/l/ |
| 2× | flip-- |
| 2× | associate-/r/ |
| 2× | pow-exp |
| 2× | flip3-- |
| 2× | pow-to-exp |
| 1× | *-commutative |
| 1× | associate-*r/ |
| 1× | div-exp |
| 1× | div-sub |
| 1× | frac-2neg |
| 1× | pow-pow |
| 1× | sub-neg |
| 1× | clear-num |
| 1× | cbrt-undiv |
| 29.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 13.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 11.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 1.0ms | (pow (+ 1 (/ i n)) n) |
| 223.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 191.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 152.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 117.0ms | (pow (+ 1 (/ i n)) n) |
| 349.0ms | (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i) |
| 324.0ms | (/ (* (* (- (pow (+ 1 (/ i n)) n) 1) (- (pow (+ 1 (/ i n)) n) 1)) (- (pow (+ 1 (/ i n)) n) 1)) (* (* (/ i n) (/ i n)) (/ i n))) |
| 275.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 224.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
| 220.0ms | (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 10.5b
Found 4 expressions with local error:
| 10.8b | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 10.7b | (* n (log1p (/ i n))) |
| 4.9b | (log1p (/ i n)) |
| 0.2b | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
| 24× | times-frac |
| 22× | add-cube-cbrt |
| 22× | *-un-lft-identity |
| 22× | add-sqr-sqrt |
| 20× | associate-*r* |
| 9× | div-inv |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 5× | expm1-log1p-u |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | associate-/r* |
| 4× | pow1 |
| 3× | associate-/l* |
| 2× | *-commutative |
| 2× | associate-/r/ |
| 1× | expm1-udef |
| 1× | associate-*r/ |
| 1× | log1p-expm1 |
| 1× | div-exp |
| 1× | div-sub |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | log1p-udef |
| 1× | cbrt-undiv |
| 6.0ms | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 3.0ms | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
| 2.0ms | (* n (log1p (/ i n))) |
| 1.0ms | (log1p (/ i n)) |
| 321.0ms | (/ (expm1 (* n (log1p (/ i n)))) (/ i n)) |
| 313.0ms | (* 100 (/ (expm1 (* n (log1p (/ i n)))) (/ i n))) |
| 63.0ms | (* n (log1p (/ i n))) |
| 40.0ms | (log1p (/ i n)) |
| 270.0ms | (/ (* (* (expm1 (* n (log1p (/ i n)))) (expm1 (* n (log1p (/ i n))))) (expm1 (* n (log1p (/ i n))))) (* (* (/ i n) (/ i n)) (/ i n))) |
| 77.0ms | (- (log (/ -1 n)) (log (/ -1 i))) |
| 75.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
| 53.0ms | (/ (* (- (exp i) 1) n) i) |
| 48.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 10.3b
Found 4 expressions with local error:
| 10.9b | (/ (* 100 (expm1 (* n (log1p (/ i n))))) (/ i n)) |
| 10.7b | (* n (log1p (/ i n))) |
| 4.9b | (log1p (/ i n)) |
| 0.1b | (* 100 (expm1 (* n (log1p (/ i n))))) |
| 8× | add-cube-cbrt |
| 8× | *-un-lft-identity |
| 8× | add-sqr-sqrt |
| 6× | add-exp-log |
| 6× | associate-*r* |
| 6× | add-cbrt-cube |
| 5× | expm1-log1p-u |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | times-frac |
| 4× | associate-/r* |
| 4× | pow1 |
| 3× | div-inv |
| 2× | *-commutative |
| 1× | associate-/l* |
| 1× | associate-/r/ |
| 1× | log1p-expm1 |
| 1× | div-exp |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | log1p-udef |
| 1× | cbrt-undiv |
| 8.0ms | (/ (* 100 (expm1 (* n (log1p (/ i n))))) (/ i n)) |
| 2.0ms | (* n (log1p (/ i n))) |
| 2.0ms | (* 100 (expm1 (* n (log1p (/ i n))))) |
| 1.0ms | (log1p (/ i n)) |
| 339.0ms | (/ (* 100 (expm1 (* n (log1p (/ i n))))) (/ i n)) |
| 145.0ms | (* 100 (expm1 (* n (log1p (/ i n))))) |
| 59.0ms | (log1p (/ i n)) |
| 37.0ms | (* n (log1p (/ i n))) |
| 452.0ms | (/ (* (* (* 100 (expm1 (* n (log1p (/ i n))))) (* 100 (expm1 (* n (log1p (/ i n)))))) (* 100 (expm1 (* n (log1p (/ i n)))))) (* (* (/ i n) (/ i n)) (/ i n))) |
| 138.0ms | (- (log (* 100 (expm1 (* n (log1p (/ i n)))))) (log (/ i n))) |
| 97.0ms | (- (+ (* 50 (* (pow n 2) (pow (log n) 2))) (+ (* 50/3 (* (pow n 3) (pow (log i) 3))) (+ (* 100 (* n (log i))) (+ (* 100/3 (* (pow n 3) (* (pow (log n) 2) (log i)))) (+ (* 50/3 (* (pow n 3) (* (log i) (pow (log n) 2)))) (* 50 (* (pow n 2) (pow (log i) 2)))))))) (+ (* 100/3 (* (pow n 3) (* (pow (log i) 2) (log n)))) (+ (* 50 (* (pow n 2) (* (log n) (log i)))) (+ (* 50 (* (pow n 2) (* (log i) (log n)))) (+ (* 50/3 (* (pow n 3) (pow (log n) 3))) (+ (* 50/3 (* (pow n 3) (* (log n) (pow (log i) 2)))) (* 100 (* n (log n))))))))) |
| 78.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
| 54.0ms | (/ (* (- (* 100 (exp i)) 100) n) i) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 10.3b
Found 4 expressions with local error:
| 10.9b | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 10.7b | (* (log1p (/ i n)) n) |
| 4.9b | (log1p (/ i n)) |
| 0.1b | (* 100 (expm1 (* (log1p (/ i n)) n))) |
| 8× | add-cube-cbrt |
| 8× | *-un-lft-identity |
| 8× | add-sqr-sqrt |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 5× | expm1-log1p-u |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | times-frac |
| 4× | associate-/r* |
| 4× | pow1 |
| 3× | div-inv |
| 3× | associate-*l* |
| 3× | associate-*r* |
| 2× | *-commutative |
| 1× | associate-/l* |
| 1× | associate-/r/ |
| 1× | log1p-expm1 |
| 1× | div-exp |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | log1p-udef |
| 1× | cbrt-undiv |
| 4.0ms | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 2.0ms | (* (log1p (/ i n)) n) |
| 1.0ms | (* 100 (expm1 (* (log1p (/ i n)) n))) |
| 0.0ms | (log1p (/ i n)) |
| 219.0ms | (/ (* 100 (expm1 (* (log1p (/ i n)) n))) (/ i n)) |
| 149.0ms | (* 100 (expm1 (* (log1p (/ i n)) n))) |
| 63.0ms | (* (log1p (/ i n)) n) |
| 55.0ms | (log1p (/ i n)) |
| 284.0ms | (* 100 (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i)) |
| 243.0ms | (* 100 (/ (* (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1) n) i)) |
| 235.0ms | (* 100 (- (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n)) 1)) |
| 216.0ms | (+ (* 100 i) (+ (* 50 (pow i 2)) (* 50/3 (pow i 3)))) |
| 191.0ms | (* 100 (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 10.3b
18.7% (8.6b remaining)
Error of 18.1b against oracle of 9.4b and baseline of 20.0b
| 11576× | (pre true 80) |
| 3005× | (body real 80) |
| 2527× | (body real 1280) |
| 2159× | (body nan 80) |
| 1632× | (body real 640) |
| 910× | (body real 2560) |
| 877× | (body real 320) |
| 458× | (body real 160) |
| 8× | (body real 5120) |