



Bits error versus a




Bits error versus b




Bits error versus eps
Results
| Original | 58.8 |
|---|---|
| Target | 14.2 |
| Herbie | 3.2 |
Initial program 58.8
Taylor expanded around 0 56.5
Simplified54.9
Taylor expanded around 0 3.2
Final simplification3.2
herbie shell --seed 1042149663
(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: 2.7m)Debug log
| 310× | (pre true 80) |
| 101× | (body real 1280) |
| 92× | (body real 2560) |
| 52× | (body exit 10240) |
| 34× | (body real 640) |
| 15× | (body real 80) |
| 9× | (body real 320) |
| 7× | (body real 160) |
| 329.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: 58.0b
Found 4 expressions with local error:
| 5.8b | (- (exp (* (+ a b) eps)) 1) |
| 4.5b | (- (exp (* a eps)) 1) |
| 3.1b | (- (exp (* b eps)) 1) |
| 0.7b | (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1)) |
| 11× | add-sqr-sqrt |
| 9× | flip-- |
| 9× | flip3-- |
| 6× | add-cube-cbrt |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | *-un-lft-identity |
| 6× | pow1 |
| 5× | difference-of-sqr-1 |
| 5× | sub-neg |
| 4× | add-log-exp |
| 4× | associate-*l* |
| 4× | associate-*r* |
| 4× | frac-times |
| 2× | associate-*r/ |
| 2× | associate-*l/ |
| 2× | distribute-lft-in |
| 2× | distribute-rgt-in |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | pow-prod-down |
| 42.0ms | (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1)) |
| 14.0ms | (- (exp (* (+ a b) eps)) 1) |
| 10.0ms | (- (exp (* a eps)) 1) |
| 10.0ms | (- (exp (* b eps)) 1) |
| 76.0ms | (- (exp (* (+ a b) eps)) 1) |
| 76.0ms | (* (- (exp (* a eps)) 1) (- (exp (* b eps)) 1)) |
| 49.0ms | (- (exp (* a eps)) 1) |
| 48.0ms | (- (exp (* b eps)) 1) |
| 1.2s | (* (* (* (- (exp (* a eps)) 1) (- (exp (* a eps)) 1)) (- (exp (* a eps)) 1)) (* (* (- (exp (* b eps)) 1) (- (exp (* b eps)) 1)) (- (exp (* b eps)) 1))) |
| 791.0ms | (* (+ (exp (* a eps)) 1) (+ (* (exp (* b eps)) (exp (* b eps))) (+ (* 1 1) (* (exp (* b eps)) 1)))) |
| 494.0ms | (+ (* 1/2 (* (pow a 2) (pow eps 2))) (+ (* 1/6 (* (pow a 3) (pow eps 3))) (* a eps))) |
| 492.0ms | (+ (* eps b) (+ (* 1/2 (* (pow eps 2) (pow b 2))) (* 1/6 (* (pow eps 3) (pow b 3))))) |
| 433.0ms | (* (- (* (exp (* a eps)) (exp (* a eps))) (* 1 1)) (- (exp (* b eps)) 1)) |
5 alts after pruning (5 fresh and 0 done)
Merged error: 46.0b
Found 4 expressions with local error:
| 5.8b | (- (exp (* (+ a b) eps)) 1) |
| 4.0b | (/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1))) |
| 3.1b | (- (exp (* b eps)) 1) |
| 2.5b | (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1)) |
| 11× | add-exp-log |
| 11× | add-cbrt-cube |
| 9× | flip-- |
| 9× | flip3-- |
| 9× | add-sqr-sqrt |
| 8× | associate-/r/ |
| 8× | frac-times |
| 6× | flip-+ |
| 6× | add-cube-cbrt |
| 6× | associate-*r/ |
| 6× | flip3-+ |
| 6× | *-un-lft-identity |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | associate-*l/ |
| 4× | associate-*r* |
| 4× | sub-neg |
| 3× | associate-*l* |
| 3× | difference-of-sqr-1 |
| 2× | associate-/l/ |
| 2× | cbrt-unprod |
| 2× | prod-exp |
| 2× | div-exp |
| 2× | distribute-lft-in |
| 2× | cbrt-undiv |
| 2× | distribute-rgt-in |
| 1× | associate-/l* |
| 1× | div-inv |
| 1× | *-commutative |
| 1× | pow-prod-down |
| 1× | times-frac |
| 1× | frac-2neg |
| 1× | associate-/r* |
| 1× | clear-num |
| 69.0ms | (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1)) |
| 66.0ms | (/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1))) |
| 14.0ms | (- (exp (* (+ a b) eps)) 1) |
| 10.0ms | (- (exp (* b eps)) 1) |
| 1.1s | (/ (* eps (- (exp (* (+ a b) eps)) 1)) (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1))) |
| 155.0ms | (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1)) |
| 73.0ms | (- (exp (* (+ a b) eps)) 1) |
| 50.0ms | (- (exp (* b eps)) 1) |
| 669.0ms | (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1)) |
| 610.0ms | (- (+ (/ (exp (* (+ a b) eps)) (* (pow a 3) (* (- (* 1/6 (exp (* eps b))) 1/6) (pow eps 2)))) (+ (* 1/2 (/ (exp (* eps b)) (* (pow a 4) (* (pow eps 3) (pow (- (* 1/6 (exp (* eps b))) 1/6) 2))))) (* 1/2 (/ (exp (* (+ a b) eps)) (* (pow a 4) (* (pow (- (* 1/6 (exp (* eps b))) 1/6) 2) (pow eps 3))))))) (+ (* 1/2 (/ (* (exp (* (+ a b) eps)) (exp (* eps b))) (* (pow a 4) (* (pow (- (* 1/6 (exp (* eps b))) 1/6) 2) (pow eps 3))))) (+ (* 1/2 (/ 1 (* (pow a 4) (* (pow eps 3) (pow (- (* 1/6 (exp (* eps b))) 1/6) 2))))) (/ 1 (* (pow a 3) (* (pow eps 2) (- (* 1/6 (exp (* eps b))) 1/6))))))) |
| 608.0ms | (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- 1)) |
| 608.0ms | (- (+ (/ (exp (* (+ a b) eps)) (* (pow a 3) (* (- (* 1/6 (exp (* eps b))) 1/6) (pow eps 2)))) (+ (* 1/2 (/ (exp (* eps b)) (* (pow a 4) (* (pow eps 3) (pow (- (* 1/6 (exp (* eps b))) 1/6) 2))))) (* 1/2 (/ (exp (* (+ a b) eps)) (* (pow a 4) (* (pow (- (* 1/6 (exp (* eps b))) 1/6) 2) (pow eps 3))))))) (+ (* 1/2 (/ (* (exp (* (+ a b) eps)) (exp (* eps b))) (* (pow a 4) (* (pow (- (* 1/6 (exp (* eps b))) 1/6) 2) (pow eps 3))))) (+ (* 1/2 (/ 1 (* (pow a 4) (* (pow eps 3) (pow (- (* 1/6 (exp (* eps b))) 1/6) 2))))) (/ 1 (* (pow a 3) (* (pow eps 2) (- (* 1/6 (exp (* eps b))) 1/6))))))) |
| 605.0ms | (/ (* (* (* eps (- (exp (* (+ a b) eps)) 1)) (* eps (- (exp (* (+ a b) eps)) 1))) (* eps (- (exp (* (+ a b) eps)) 1))) (* (* (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1)) (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1))) (* (+ (* (* (* a eps) (* a eps)) (+ (* eps (* 1/6 a)) 1/2)) (* a eps)) (- (exp (* b eps)) 1)))) |
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)) |
| 5× | *-un-lft-identity |
| 4× | distribute-lft-out |
| 4× | div-inv |
| 3× | add-log-exp |
| 1× | flip-+ |
| 1× | add-cube-cbrt |
| 1× | add-exp-log |
| 1× | frac-add |
| 1× | add-cbrt-cube |
| 1× | flip3-+ |
| 1× | sum-log |
| 1× | +-commutative |
| 1× | pow1 |
| 1× | add-sqr-sqrt |
| 8.0ms | (+ (/ 1 a) (/ 1 b)) |
| 15.0ms | (+ (/ 1 a) (/ 1 b)) |
| 12.0ms | (* (exp (/ 1 a)) (exp (/ 1 b))) |
| 5.0ms | (+ (/ 1 a) (/ 1 b)) |
| 5.0ms | (+ (/ 1 a) (/ 1 b)) |
| 5.0ms | (+ (/ 1 a) (/ 1 b)) |
| 5.0ms | (+ (/ 1 b) (/ 1 a)) |
4 alts after pruning (3 fresh and 1 done)
Merged error: 0.0b
Found 4 expressions with local error:
| 43.3b | (/ (+ (pow (/ 1 a) 3) (pow (/ 1 b) 3)) (+ (* (/ 1 a) (/ 1 a)) (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b))))) |
| 4.0b | (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b))) |
| 2.8b | (+ (pow (/ 1 a) 3) (pow (/ 1 b) 3)) |
| 2.0b | (+ (* (/ 1 a) (/ 1 a)) (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b)))) |
| 194× | frac-add |
| 165× | un-div-inv |
| 165× | associate-*r/ |
| 144× | frac-sub |
| 138× | associate-*l/ |
| 120× | *-un-lft-identity |
| 120× | frac-times |
| 98× | associate-/r/ |
| 85× | distribute-lft-out |
| 81× | div-inv |
| 80× | cube-prod |
| 80× | unpow-prod-down |
| 63× | times-frac |
| 54× | sub-div |
| 30× | add-cube-cbrt |
| 30× | add-sqr-sqrt |
| 21× | associate-/l* |
| 13× | add-log-exp |
| 9× | flip-- |
| 9× | flip3-- |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 5× | sum-cubes |
| 4× | flip-+ |
| 4× | flip3-+ |
| 4× | pow1 |
| 4× | cube-div |
| 3× | associate-/l/ |
| 3× | sum-log |
| 3× | associate-/r* |
| 2× | diff-log |
| 2× | sub-neg |
| 2× | associate-+r+ |
| 2× | +-commutative |
| 1× | div-exp |
| 1× | distribute-rgt-out-- |
| 1× | frac-2neg |
| 1× | associate-+r- |
| 1× | clear-num |
| 1× | cbrt-undiv |
| 89.0ms | (/ (+ (pow (/ 1 a) 3) (pow (/ 1 b) 3)) (+ (* (/ 1 a) (/ 1 a)) (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b))))) |
| 29.0ms | (+ (* (/ 1 a) (/ 1 a)) (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b)))) |
| 15.0ms | (+ (pow (/ 1 a) 3) (pow (/ 1 b) 3)) |
| 13.0ms | (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b))) |
| 67.0ms | (/ (+ (pow (/ 1 a) 3) (pow (/ 1 b) 3)) (+ (* (/ 1 a) (/ 1 a)) (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b))))) |
| 42.0ms | (+ (pow (/ 1 a) 3) (pow (/ 1 b) 3)) |
| 29.0ms | (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b))) |
| 24.0ms | (+ (* (/ 1 a) (/ 1 a)) (- (* (/ 1 b) (/ 1 b)) (* (/ 1 a) (/ 1 b)))) |
| 1.1s | (+ (* (/ 1 a) (* b (* a b))) (* a (- (* (/ 1 b) (* a b)) (* b (* 1 1))))) |
| 1.0s | (+ (* (* 1 1) (* b (* a b))) (* (* a a) (- (* (/ 1 b) (* a b)) (* b (* 1 1))))) |
| 1.0s | (+ (* (/ 1 a) (* b b)) (* a (- (* (* 1 (/ 1 b)) b) (* b (/ 1 a))))) |
| 997.0ms | (+ (* (* 1 (/ 1 a)) (* b (* a b))) (* a (- (* (/ 1 b) (* a b)) (* b (* 1 1))))) |
| 988.0ms | (+ (* (/ 1 a) (* (* b b) a)) (* a (- (* (* 1 1) a) (* (* b b) (* 1 (/ 1 b)))))) |
4 alts after pruning (2 fresh and 2 done)
Merged error: 0.0b
0% (3.1b remaining)
Error of 3.2b against oracle of 0.1b and baseline of 3.2b
| 10048× | (pre true 80) |
| 3357× | (body real 1280) |
| 2640× | (body real 2560) |
| 2045× | (body exit 10240) |
| 1088× | (body real 640) |
| 428× | (body real 80) |
| 350× | (body real 320) |
| 140× | (body real 160) |