



Bits error versus a




Bits error versus b




Bits error versus eps
Results
| Original | 58.6 |
|---|---|
| Target | 14.6 |
| Herbie | 3.4 |
Initial program 58.6
Taylor expanded around 0 56.6
Simplified55.2
Taylor expanded around 0 3.4
Final simplification3.4
herbie shell --seed 2019004
(FPCore (a b eps)
:name "expq3 (problem 3.4.2)"
:pre (and (< -1 eps) (< eps 1))
:herbie-target
(/ (+ a b) (* a b))
(/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1))))
Time bar (total: 43.7s)Debug log
1 calls. Slowest were:
| 185.0ms | (/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 59.0b
Found 4 expressions with local error:
| 3.9b | (- (exp (* (+ a b) eps)) 1) |
| 3.2b | (- (exp (* b eps)) 1) |
| 1.7b | (- (exp (* a eps)) 1) |
| 0.5b | (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1)) |
4 calls. Slowest were:
| 27.0ms | (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1)) |
| 9.0ms | (- (exp (* b eps)) 1) |
| 6.0ms | (- (exp (* (+ a b) eps)) 1) |
4 calls. Slowest were:
| 61.0ms | (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1)) |
| 42.0ms | (- (exp (* a eps)) 1) |
| 40.0ms | (- (exp (* b eps)) 1) |
| 38.0ms | (- (exp (* (+ a b) eps)) 1) |
41 calls. Slowest were:
| 579.0ms | (* (* (* (- (exp (* a eps)) 1) (- (exp (* a eps)) 1)) (- (exp (* a eps)) 1)) (* (* (- (exp (* b eps)) 1) (- (exp (* b eps)) 1)) (- (exp (* b eps)) 1))) |
| 512.0ms | (* (+ (exp (* a eps)) 1) (+ (* (exp (* b eps)) (exp (* b eps))) (+ (* 1 1) (* (exp (* b eps)) 1)))) |
| 398.0ms | (+ (* 1/2 (* (pow a 2) (pow eps 2))) (+ (* 1/6 (* (pow a 3) (pow eps 3))) (* a eps))) |
4 alts after pruning (4 fresh and 0 done)
Merged error: 45.3b
Found 4 expressions with local error:
| 3.9b | (- (exp (* (+ a b) eps)) 1) |
| 3.5b | (/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2))))) |
| 2.7b | (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)))) |
| 1.7b | (- (exp (* a eps)) 1) |
4 calls. Slowest were:
| 30.0ms | (/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2))))) |
| 24.0ms | (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)))) |
| 11.0ms | (- (exp (* a eps)) 1) |
4 calls. Slowest were:
| 1.6s | (/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2))))) |
| 175.0ms | (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)))) |
| 60.0ms | (- (exp (* (+ a b) eps)) 1) |
| 38.0ms | (- (exp (* a eps)) 1) |
54 calls. Slowest were:
| 765.0ms | (* (+ (* (exp (* a eps)) (exp (* a eps))) (+ (* 1 1) (* (exp (* a eps)) 1))) (+ (* (* eps b) (* eps b)) (- (* (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2))) (* (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)))))) |
| 495.0ms | (/ (* (* (* eps (- (exp (* (+ a b) eps)) 1)) (* eps (- (exp (* (+ a b) eps)) 1))) (* eps (- (exp (* (+ a b) eps)) 1))) (* (* (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)))) (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2))))) (* (- (exp (* a eps)) 1) (+ (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)))))) |
| 420.0ms | (* (+ (* (exp (* a eps)) (exp (* a eps))) (+ (* 1 1) (* (exp (* a eps)) 1))) (+ (* (* eps b) (* eps b)) (- (* (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2))) (* (* eps b) (* (* (* eps b) (* eps b)) (+ (* b (* 1/6 eps)) 1/2)))))) |
3 alts after pruning (3 fresh and 0 done)
Merged error: 0.0b
Found 1 expressions with local error:
| 0.0b | (+ (/ 1 a) (/ 1 b)) |
1 calls. Slowest were:
| 3.0ms | (+ (/ 1 a) (/ 1 b)) |
1 calls. Slowest were:
| 7.0ms | (+ (/ 1 a) (/ 1 b)) |
10 calls. Slowest were:
| 8.0ms | (* (exp (/ 1 a)) (exp (/ 1 b))) |
| 2.0ms | (+ (/ 1 a) (/ 1 b)) |
| 2.0ms | (+ (/ 1 b) (/ 1 a)) |
4 alts after pruning (3 fresh and 1 done)
Merged error: 0.0b
Found 4 expressions with local error:
| 0.6b | (cbrt (+ (/ 1 a) (/ 1 b))) |
| 0.6b | (cbrt (+ (/ 1 a) (/ 1 b))) |
| 0.6b | (cbrt (+ (/ 1 a) (/ 1 b))) |
| 0.5b | (* (cbrt (+ (/ 1 a) (/ 1 b))) (cbrt (+ (/ 1 a) (/ 1 b)))) |
4 calls. Slowest were:
| 18.0ms | (* (cbrt (+ (/ 1 a) (/ 1 b))) (cbrt (+ (/ 1 a) (/ 1 b)))) |
| 3.0ms | (cbrt (+ (/ 1 a) (/ 1 b))) |
| 3.0ms | (cbrt (+ (/ 1 a) (/ 1 b))) |
4 calls. Slowest were:
| 103.0ms | (cbrt (+ (/ 1 a) (/ 1 b))) |
| 76.0ms | (* (cbrt (+ (/ 1 a) (/ 1 b))) (cbrt (+ (/ 1 a) (/ 1 b)))) |
| 68.0ms | (cbrt (+ (/ 1 a) (/ 1 b))) |
| 66.0ms | (cbrt (+ (/ 1 a) (/ 1 b))) |
94 calls. Slowest were:
| 377.0ms | (- (+ (pow (/ 1 b) 1/3) (* 1/3 (* (/ 1 a) (pow (pow b 2) 1/3)))) (* 1/9 (* (/ 1 (pow a 2)) (pow (pow b 5) 1/3)))) |
| 321.0ms | (- (+ (pow (/ 1 b) 1/3) (* 1/3 (* (/ 1 a) (pow (pow b 2) 1/3)))) (* 1/9 (* (/ 1 (pow a 2)) (pow (pow b 5) 1/3)))) |
| 276.0ms | (- (* (cbrt -1) (pow (/ -1 b) 1/3)) (+ (* 1/9 (* (/ (cbrt -1) (pow a 2)) (pow (* (pow b 5) -1) 1/3))) (* 1/3 (* (/ (cbrt -1) a) (pow (pow b 2) 1/3))))) |
4 alts after pruning (2 fresh and 2 done)
Merged error: 0.0b
0% (3.2b remaining)
Error of 3.4b against oracle of 0.1b and baseline of 3.4b