



Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.7 |
|---|---|
| Target | 20.8 |
| Herbie | 7.3 |
if b < -2.149882403051541e+52Initial program 38.4
Simplified38.4
Taylor expanded around -inf 5.2
if -2.149882403051541e+52 < b < -3.420898477294382e-305Initial program 10.1
Simplified10.2
Taylor expanded around inf 10.1
if -3.420898477294382e-305 < b < 1.8709491320040642e+68Initial program 30.3
Simplified30.3
rmApplied div-inv30.3
rmApplied flip--30.4
Applied associate-*l/30.5
Simplified16.1
Taylor expanded around 0 9.3
if 1.8709491320040642e+68 < b Initial program 56.9
Simplified56.9
Taylor expanded around inf 3.7
Simplified3.7
Final simplification7.3
herbie shell --seed 1137770271
(FPCore (a b c)
:name "quadp (p42, positive)"
:herbie-target
(if (< b 0) (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))))
(/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))
Time bar (total: 39.3s)Debug log
| 39× | 93.0ms | (body real 2560) |
| 189× | 71.0ms | (body real 80) |
| 28× | 49.0ms | (body real 1280) |
| 93× | 32.0ms | (body nan 80) |
| 366× | 19.0ms | (pre true 80) |
| 8× | 11.0ms | (body real 640) |
| 3× | 9.0ms | (body real 5120) |
| 5× | 6.0ms | (body real 320) |
| 1× | 0.0ms | (body real 160) |
| 205.0ms | (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 33.7b
Found 4 expressions with local error:
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 0.6b | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 0.4b | (- (* b b) (* (* 4 a) c)) |
| 0.1b | (/ (- (sqrt (- (* b b) (* (* 4 a) c))) b) (* 2 a)) |
| 8× | add-sqr-sqrt |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 6× | add-log-exp |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 4× | flip-- |
| 4× | flip3-- |
| 4× | pow1 |
| 3× | associate-/l* |
| 3× | sqrt-prod |
| 3× | times-frac |
| 2× | associate-/l/ |
| 2× | sqrt-div |
| 2× | sub-neg |
| 1× | div-inv |
| 1× | div-exp |
| 1× | div-sub |
| 1× | diff-log |
| 1× | pow1/2 |
| 1× | frac-2neg |
| 1× | associate-/r* |
| 1× | clear-num |
| 1× | rem-sqrt-square |
| 1× | cbrt-undiv |
| 54.0ms | (/ (- (sqrt (- (* b b) (* (* 4 a) c))) b) (* 2 a)) |
| 53.0ms | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 11.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 6.0ms | (- (* b b) (* (* 4 a) c)) |
| 157.0ms | (/ (- (sqrt (- (* b b) (* (* 4 a) c))) b) (* 2 a)) |
| 118.0ms | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 86.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 72.0ms | (- (* b b) (* (* 4 a) c)) |
| 761.0ms | (- (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c)))) (* b b)) |
| 669.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 503.0ms | (- (pow (sqrt (- (* b b) (* (* 4 a) c))) 3) (pow b 3)) |
| 265.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
| 240.0ms | (- b (* 2 (/ (* a c) b))) |
10 alts after pruning (10 fresh and 0 done)
Merged error: 6.7b
Found 4 expressions with local error:
| 23.3b | (sqrt (- (pow b 2) (* 4 (* a c)))) |
| 0.6b | (- (sqrt (- (pow b 2) (* 4 (* a c)))) b) |
| 0.4b | (- (pow b 2) (* 4 (* a c))) |
| 0.1b | (/ (- (sqrt (- (pow b 2) (* 4 (* a c)))) b) (* 2 a)) |
| 8× | add-sqr-sqrt |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 6× | add-log-exp |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 4× | flip-- |
| 4× | flip3-- |
| 4× | pow1 |
| 3× | associate-/l* |
| 3× | sqrt-prod |
| 3× | times-frac |
| 2× | associate-/l/ |
| 2× | sqrt-div |
| 2× | sub-neg |
| 1× | div-inv |
| 1× | div-exp |
| 1× | div-sub |
| 1× | diff-log |
| 1× | pow1/2 |
| 1× | frac-2neg |
| 1× | associate-/r* |
| 1× | clear-num |
| 1× | rem-sqrt-square |
| 1× | cbrt-undiv |
| 71.0ms | (/ (- (sqrt (- (pow b 2) (* 4 (* a c)))) b) (* 2 a)) |
| 37.0ms | (- (sqrt (- (pow b 2) (* 4 (* a c)))) b) |
| 8.0ms | (- (pow b 2) (* 4 (* a c))) |
| 7.0ms | (sqrt (- (pow b 2) (* 4 (* a c)))) |
| 122.0ms | (/ (- (sqrt (- (pow b 2) (* 4 (* a c)))) b) (* 2 a)) |
| 93.0ms | (- (sqrt (- (pow b 2) (* 4 (* a c)))) b) |
| 90.0ms | (sqrt (- (pow b 2) (* 4 (* a c)))) |
| 55.0ms | (- (pow b 2) (* 4 (* a c))) |
| 857.0ms | (sqrt (- (pow (pow b 2) 3) (pow (* 4 (* a c)) 3))) |
| 754.0ms | (- (* (sqrt (- (pow b 2) (* 4 (* a c)))) (sqrt (- (pow b 2) (* 4 (* a c))))) (* b b)) |
| 533.0ms | (- (pow (sqrt (- (pow b 2) (* 4 (* a c)))) 3) (pow b 3)) |
| 293.0ms | (sqrt (- (* (pow b 2) (pow b 2)) (* (* 4 (* a c)) (* 4 (* a c))))) |
| 224.0ms | (- b (* 2 (/ (* a c) b))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 6.7b
Found 4 expressions with local error:
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 0.6b | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 0.4b | (- (* b b) (* (* 4 a) c)) |
| 0.2b | (* (- (sqrt (- (* b b) (* (* 4 a) c))) b) (/ 1 (* 2 a))) |
| 8× | add-exp-log |
| 8× | add-sqr-sqrt |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 6× | add-log-exp |
| 6× | add-cbrt-cube |
| 6× | pow1 |
| 5× | flip-- |
| 5× | flip3-- |
| 4× | associate-*r* |
| 3× | sqrt-prod |
| 3× | associate-*l* |
| 2× | prod-exp |
| 2× | associate-*l/ |
| 2× | sqrt-div |
| 2× | sub-neg |
| 2× | frac-times |
| 1× | div-inv |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | un-div-inv |
| 1× | associate-*r/ |
| 1× | pow-prod-down |
| 1× | diff-log |
| 1× | pow1/2 |
| 1× | rec-exp |
| 1× | rem-sqrt-square |
| 69.0ms | (* (- (sqrt (- (* b b) (* (* 4 a) c))) b) (/ 1 (* 2 a))) |
| 37.0ms | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 10.0ms | (- (* b b) (* (* 4 a) c)) |
| 5.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 143.0ms | (* (- (sqrt (- (* b b) (* (* 4 a) c))) b) (/ 1 (* 2 a))) |
| 91.0ms | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 82.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 52.0ms | (- (* b b) (* (* 4 a) c)) |
| 895.0ms | (* (- (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c)))) (* b b)) 1) |
| 574.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 484.0ms | (* (- (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c)))) (* b b)) (/ 1 (* 2 a))) |
| 362.0ms | (* (- (sqrt (- (* b b) (* (* 4 a) c))) b) (/ 1 (* 2 a))) |
| 346.0ms | (* (- (pow (sqrt (- (* b b) (* (* 4 a) c))) 3) (pow b 3)) 1) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 6.7b
Found 4 expressions with local error:
| 23.3b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 15.1b | (/ (+ (* -4 (* a c)) 0) (/ a 1/2)) |
| 0.6b | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 0.4b | (- (* b b) (* (* 4 a) c)) |
| 15× | add-sqr-sqrt |
| 14× | add-cube-cbrt |
| 14× | *-un-lft-identity |
| 12× | times-frac |
| 6× | add-log-exp |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 5× | div-inv |
| 4× | associate-/r* |
| 4× | pow1 |
| 3× | associate-/l* |
| 3× | sqrt-prod |
| 2× | associate-/l/ |
| 2× | flip-- |
| 2× | flip-+ |
| 2× | sqrt-div |
| 2× | flip3-- |
| 2× | flip3-+ |
| 1× | associate-/r/ |
| 1× | div-exp |
| 1× | diff-log |
| 1× | pow1/2 |
| 1× | frac-2neg |
| 1× | sub-neg |
| 1× | clear-num |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 1× | cbrt-undiv |
| 23.0ms | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 21.0ms | (/ (+ (* -4 (* a c)) 0) (/ a 1/2)) |
| 7.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 5.0ms | (- (* b b) (* (* 4 a) c)) |
| 92.0ms | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 85.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 53.0ms | (- (* b b) (* (* 4 a) c)) |
| 14.0ms | (/ (+ (* -4 (* a c)) 0) (/ a 1/2)) |
| 1.2s | (/ (+ (* -4 (* a c)) 0) (/ a 1/2)) |
| 758.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 553.0ms | (- (log (+ (* -4 (* a c)) 0)) (log (/ a 1/2))) |
| 548.0ms | (/ (+ (* -4 (* a c)) 0) (/ 1 1/2)) |
| 327.0ms | (- (* (* -4 (* a c)) (* -4 (* a c))) (* 0 0)) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 6.7b
93.9% (1.4b remaining)
Error of 7.3b against oracle of 5.8b and baseline of 28.9b
| 1067× | 2.3s | (body real 2560) |
| 905× | 1.7s | (body real 1280) |
| 5865× | 1.6s | (body real 80) |
| 2946× | 711.0ms | (body nan 80) |
| 486× | 512.0ms | (body real 640) |
| 11702× | 419.0ms | (pre true 80) |
| 221× | 200.0ms | (body real 320) |
| 111× | 198.0ms | (body real 5120) |
| 101× | 50.0ms | (body real 160) |