



Bits error versus i




Bits error versus n
Results
| Original | 42.3 |
|---|---|
| Target | 42.0 |
| Herbie | 15.8 |
if i < -4.058170487789591e-10Initial program 29.6
rmApplied div-inv29.6
Applied *-un-lft-identity29.6
Applied times-frac30.1
Applied associate-*r*30.1
Simplified30.1
Taylor expanded around inf 12.7
Taylor expanded around inf 12.6
if -4.058170487789591e-10 < i < -1.7183817648621783e-282 or 6.029086482308106e-307 < i < 8.902851403664407e-08Initial program 49.6
rmApplied div-inv49.6
Applied *-un-lft-identity49.6
Applied times-frac49.8
Applied associate-*r*49.8
Simplified49.8
Taylor expanded around inf 49.7
Taylor expanded around 0 16.0
Simplified16.0
if -1.7183817648621783e-282 < i < 6.029086482308106e-307Initial program 46.0
rmApplied div-inv46.0
Applied *-un-lft-identity46.0
Applied times-frac46.4
Applied associate-*r*48.7
Simplified48.7
Taylor expanded around inf 48.7
Taylor expanded around 0 15.6
Simplified15.6
if 8.902851403664407e-08 < i Initial program 32.1
rmApplied div-inv32.1
Applied *-un-lft-identity32.1
Applied times-frac32.1
Applied associate-*r*32.1
Simplified32.1
Taylor expanded around 0 20.6
Simplified20.6
Final simplification15.8
herbie shell --seed 2018360
(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: 1.2m)Debug log
2 alts after pruning (2 fresh and 0 done)
Merged error: 42.6b
Found 4 expressions with local error:
| 12.1b | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 5.2b | (pow (+ 1 (/ i n)) n) |
| 1.6b | (- (pow (+ 1 (/ i n)) n) 1) |
| 0.0b | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 16.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 12.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 11.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
4 calls. Slowest were:
| 261.0ms | (* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))) |
| 215.0ms | (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n)) |
| 183.0ms | (- (pow (+ 1 (/ i n)) n) 1) |
| 144.0ms | (pow (+ 1 (/ i n)) n) |
97 calls. Slowest were:
| 354.0ms | (/ (* n (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1)) i) |
| 294.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))) |
| 287.0ms | (- (exp (* n (- (log (/ -1 n)) (log (/ -1 i))))) 1) |
8 alts after pruning (8 fresh and 0 done)
Merged error: 19.7b
Found 4 expressions with local error:
| 12.1b | (/ (/ (- (pow (pow (+ 1 (/ i n)) n) 3) (pow 1 3)) (+ (* (pow (+ 1 (/ i n)) n) (pow (+ 1 (/ i n)) n)) (+ (* 1 1) (* (pow (+ 1 (/ i n)) n) 1)))) (/ i n)) |
| 5.2b | (pow (+ 1 (/ i n)) n) |
| 5.2b | (pow (+ 1 (/ i n)) n) |
| 5.2b | (pow (+ 1 (/ i n)) n) |
4 calls. Slowest were:
| 62.0ms | (/ (/ (- (pow (pow (+ 1 (/ i n)) n) 3) (pow 1 3)) (+ (* (pow (+ 1 (/ i n)) n) (pow (+ 1 (/ i n)) n)) (+ (* 1 1) (* (pow (+ 1 (/ i n)) n) 1)))) (/ i n)) |
| 1.0ms | (pow (+ 1 (/ i n)) n) |
| 1.0ms | (pow (+ 1 (/ i n)) n) |
4 calls. Slowest were:
| 4.8s | (/ (/ (- (pow (pow (+ 1 (/ i n)) n) 3) (pow 1 3)) (+ (* (pow (+ 1 (/ i n)) n) (pow (+ 1 (/ i n)) n)) (+ (* 1 1) (* (pow (+ 1 (/ i n)) n) 1)))) (/ i n)) |
| 142.0ms | (pow (+ 1 (/ i n)) n) |
| 116.0ms | (pow (+ 1 (/ i n)) n) |
| 113.0ms | (pow (+ 1 (/ i n)) n) |
387 calls. Slowest were:
| 710.0ms | (/ (/ (- (pow (sqrt (pow (+ 1 (/ i n)) n)) 3) (sqrt (pow 1 3))) (cbrt (+ (* (pow (+ 1 (/ i n)) n) (pow (+ 1 (/ i n)) n)) (+ (* 1 1) (* (pow (+ 1 (/ i n)) n) 1))))) (/ 1 n)) |
| 685.0ms | (/ (/ (- (pow (sqrt (pow (+ 1 (/ i n)) n)) 3) (sqrt (pow 1 3))) (sqrt (+ (* (pow (+ 1 (/ i n)) n) (pow (+ 1 (/ i n)) n)) (+ (* 1 1) (* (pow (+ 1 (/ i n)) n) 1))))) (/ 1 n)) |
| 638.0ms | (/ (/ (- (pow (sqrt (pow (+ 1 (/ i n)) n)) 3) (sqrt (pow 1 3))) (+ (* (pow (+ 1 (/ i n)) n) (pow (+ 1 (/ i n)) n)) (+ (* 1 1) (* (pow (+ 1 (/ i n)) n) 1)))) (/ i n)) |
8 alts after pruning (8 fresh and 0 done)
Merged error: 19.7b
Found 4 expressions with local error:
| 5.2b | (pow (+ (/ i n) 1) n) |
| 1.6b | (- (* n (pow (+ (/ i n) 1) n)) n) |
| 0.3b | (* 100 (/ 1 i)) |
| 0.3b | (* (* 100 (/ 1 i)) (- (* n (pow (+ (/ i n) 1) n)) n)) |
4 calls. Slowest were:
| 19.0ms | (* (* 100 (/ 1 i)) (- (* n (pow (+ (/ i n) 1) n)) n)) |
| 5.0ms | (- (* n (pow (+ (/ i n) 1) n)) n) |
| 4.0ms | (pow (+ (/ i n) 1) n) |
4 calls. Slowest were:
| 149.0ms | (- (* n (pow (+ (/ i n) 1) n)) n) |
| 97.0ms | (* (* 100 (/ 1 i)) (- (* n (pow (+ (/ i n) 1) n)) n)) |
| 96.0ms | (pow (+ (/ i n) 1) n) |
| 7.0ms | (* 100 (/ 1 i)) |
43 calls. Slowest were:
| 514.0ms | (/ (* (- (* 100 (exp (* (- (log (/ 1 n)) (log (/ 1 i))) n))) 100) n) i) |
| 291.0ms | (- (+ (* 1/6 (* (pow n 4) (* (log i) (pow (log n) 2)))) (+ (* 1/2 (* (pow n 3) (pow (log n) 2))) (+ (* 1/2 (* (pow n 3) (pow (log i) 2))) (+ (* 1/3 (* (pow n 4) (* (pow (log n) 2) (log i)))) (+ (* 1/6 (* (pow n 4) (pow (log i) 3))) (* (pow n 2) (log i))))))) (+ (* 1/2 (* (pow n 3) (* (log n) (log i)))) (+ (* 1/2 (* (pow n 3) (* (log i) (log n)))) (+ (* (pow n 2) (log n)) (+ (* 1/6 (* (pow n 4) (pow (log n) 3))) (+ (* 1/6 (* (pow n 4) (* (log n) (pow (log i) 2)))) (* 1/3 (* (pow n 4) (* (pow (log i) 2) (log n)))))))))) |
| 249.0ms | (* (* 100 1) (- (* (* n (pow (+ (/ i n) 1) n)) (* n (pow (+ (/ i n) 1) n))) (* n n))) |
8 alts after pruning (8 fresh and 0 done)
Merged error: 14.6b
Found 4 expressions with local error:
| 4.5b | (- (exp i) 1) |
| 0.4b | (* (* 100 (/ 1 i)) (* (- (exp i) 1) n)) |
| 0.3b | (* 100 (/ 1 i)) |
| 0.0b | (* (- (exp i) 1) n) |
4 calls. Slowest were:
| 14.0ms | (* (* 100 (/ 1 i)) (* (- (exp i) 1) n)) |
| 6.0ms | (* (- (exp i) 1) n) |
| 3.0ms | (- (exp i) 1) |
4 calls. Slowest were:
| 42.0ms | (* (* 100 (/ 1 i)) (* (- (exp i) 1) n)) |
| 35.0ms | (* (- (exp i) 1) n) |
| 11.0ms | (- (exp i) 1) |
| 7.0ms | (* 100 (/ 1 i)) |
37 calls. Slowest were:
| 301.0ms | (* (* 100 (/ 1 i)) (* (- (exp i) 1) n)) |
| 228.0ms | (* (* 100 1) (* (- (* (exp i) (exp i)) (* 1 1)) n)) |
| 209.0ms | (+ (* 1/2 (* (pow i 2) n)) (+ (* 1/6 (* (pow i 3) n)) (* i n))) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 2.5b
58.8% (12.0b remaining)
Error of 15.8b against oracle of 3.8b and baseline of 32.9b