



Bits error versus a




Bits error versus b




Bits error versus c
Results
| Original | 33.0 |
|---|---|
| Target | 20.4 |
| Herbie | 6.5 |
if b < -2.878856436009372e+97Initial program 43.5
Simplified43.5
Taylor expanded around -inf 3.7
if -2.878856436009372e+97 < b < -3.033451162286551e-263Initial program 8.5
Simplified8.5
rmApplied div-inv8.7
if -3.033451162286551e-263 < b < 1.1951800716070265e+111Initial program 30.2
Simplified30.2
rmApplied flip--30.3
Applied associate-/l/34.9
Simplified19.5
rmApplied associate-/r*13.9
Taylor expanded around inf 8.5
if 1.1951800716070265e+111 < b Initial program 59.5
Simplified59.5
Taylor expanded around inf 2.8
Simplified2.8
Final simplification6.5
herbie shell --seed 1042149663
(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: 31.1s)Debug log
| 369× | (pre true 80) |
| 181× | (body real 80) |
| 88× | (body nan 80) |
| 31× | (body real 1280) |
| 28× | (body real 2560) |
| 22× | (body real 640) |
| 13× | (body real 320) |
| 3× | (body real 160) |
| 3× | (body real 5120) |
| 116.0ms | (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 34.2b
Found 4 expressions with local error:
| 21.8b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 0.8b | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 0.8b | (- (* 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 |
| 53.0ms | (/ (- (sqrt (- (* b b) (* (* 4 a) c))) b) (* 2 a)) |
| 24.0ms | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 5.0ms | (- (* b b) (* (* 4 a) c)) |
| 5.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 115.0ms | (/ (- (sqrt (- (* b b) (* (* 4 a) c))) b) (* 2 a)) |
| 90.0ms | (- (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 80.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 51.0ms | (- (* b b) (* (* 4 a) c)) |
| 572.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 508.0ms | (- (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c)))) (* b b)) |
| 288.0ms | (- (pow (sqrt (- (* b b) (* (* 4 a) c))) 3) (pow b 3)) |
| 225.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
| 189.0ms | (- b (* 2 (/ (* a c) b))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 5.5b
Found 4 expressions with local error:
| 21.8b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 18.1b | (/ (* (* -4 c) a) (* (* 2 a) (+ (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 0.8b | (- (* b b) (* (* 4 a) c)) |
| 0.4b | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 9× | add-exp-log |
| 9× | add-cbrt-cube |
| 6× | add-log-exp |
| 6× | add-sqr-sqrt |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 4× | pow1 |
| 3× | sqrt-prod |
| 2× | flip-- |
| 2× | flip-+ |
| 2× | associate-/r/ |
| 2× | associate-*r/ |
| 2× | div-exp |
| 2× | sqrt-div |
| 2× | flip3-- |
| 2× | flip3-+ |
| 2× | cbrt-undiv |
| 1× | associate-/l* |
| 1× | div-inv |
| 1× | cbrt-unprod |
| 1× | prod-exp |
| 1× | diff-log |
| 1× | pow1/2 |
| 1× | times-frac |
| 1× | frac-2neg |
| 1× | sub-neg |
| 1× | associate-/r* |
| 1× | clear-num |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 27.0ms | (/ (* (* -4 c) a) (* (* 2 a) (+ (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 21.0ms | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 5.0ms | (- (* b b) (* (* 4 a) c)) |
| 5.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 222.0ms | (/ (* (* -4 c) a) (* (* 2 a) (+ (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 88.0ms | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 81.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 51.0ms | (- (* b b) (* (* 4 a) c)) |
| 1.3s | (/ (* (* (* (* -4 c) a) (* (* -4 c) a)) (* (* -4 c) a)) (* (* (* (* 2 a) (* 2 a)) (* 2 a)) (* (* (+ (sqrt (- (* b b) (* (* 4 a) c))) b) (+ (sqrt (- (* b b) (* (* 4 a) c))) b)) (+ (sqrt (- (* b b) (* (* 4 a) c))) b)))) |
| 1.3s | (/ (* (* (* (* -4 c) a) (* (* -4 c) a)) (* (* -4 c) a)) (* (* (* (* 2 a) (+ (sqrt (- (* b b) (* (* 4 a) c))) b)) (* (* 2 a) (+ (sqrt (- (* b b) (* (* 4 a) c))) b))) (* (* 2 a) (+ (sqrt (- (* b b) (* (* 4 a) c))) b)))) |
| 569.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 451.0ms | (+ (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c)))) (- (* b b) (* (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 225.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 5.4b
Found 4 expressions with local error:
| 21.8b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 13.0b | (/ (* (* -4 c) a) (* 2 a)) |
| 0.8b | (- (* b b) (* (* 4 a) c)) |
| 0.4b | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 6× | add-log-exp |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 6× | add-sqr-sqrt |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 4× | pow1 |
| 3× | sqrt-prod |
| 2× | flip-- |
| 2× | sqrt-div |
| 2× | flip3-- |
| 1× | associate-/l* |
| 1× | div-inv |
| 1× | flip-+ |
| 1× | div-exp |
| 1× | diff-log |
| 1× | pow1/2 |
| 1× | times-frac |
| 1× | flip3-+ |
| 1× | frac-2neg |
| 1× | sub-neg |
| 1× | associate-/r* |
| 1× | clear-num |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 1× | cbrt-undiv |
| 22.0ms | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 14.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 13.0ms | (/ (* (* -4 c) a) (* 2 a)) |
| 6.0ms | (- (* b b) (* (* 4 a) c)) |
| 92.0ms | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 86.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 51.0ms | (- (* b b) (* (* 4 a) c)) |
| 10.0ms | (/ (* (* -4 c) a) (* 2 a)) |
| 938.0ms | (- (log (* (* -4 c) a)) (log (* 2 a))) |
| 595.0ms | (/ (* (* (* (* -4 c) a) (* (* -4 c) a)) (* (* -4 c) a)) (* (* (* 2 a) (* 2 a)) (* 2 a))) |
| 570.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 225.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
| 200.0ms | (- (* 2 b) (* 2 (/ (* a c) b))) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 5.4b
Found 4 expressions with local error:
| 21.8b | (sqrt (- (* b b) (* (* 4 a) c))) |
| 0.8b | (- (* b b) (* (* 4 a) c)) |
| 0.4b | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 0.1b | (/ (* -2 c) (+ (sqrt (- (* b b) (* (* 4 a) c))) b)) |
| 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× | pow1 |
| 3× | sqrt-prod |
| 3× | times-frac |
| 3× | associate-/r* |
| 2× | flip-- |
| 2× | flip-+ |
| 2× | associate-/r/ |
| 2× | sqrt-div |
| 2× | flip3-- |
| 2× | flip3-+ |
| 1× | associate-/l* |
| 1× | div-inv |
| 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 |
| 26.0ms | (/ (* -2 c) (+ (sqrt (- (* b b) (* (* 4 a) c))) b)) |
| 18.0ms | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 5.0ms | (- (* b b) (* (* 4 a) c)) |
| 5.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 209.0ms | (/ (* -2 c) (+ (sqrt (- (* b b) (* (* 4 a) c))) b)) |
| 87.0ms | (+ (sqrt (- (* b b) (* (* 4 a) c))) b) |
| 80.0ms | (sqrt (- (* b b) (* (* 4 a) c))) |
| 53.0ms | (- (* b b) (* (* 4 a) c)) |
| 572.0ms | (sqrt (- (pow (* b b) 3) (pow (* (* 4 a) c) 3))) |
| 442.0ms | (+ (* (sqrt (- (* b b) (* (* 4 a) c))) (sqrt (- (* b b) (* (* 4 a) c)))) (- (* b b) (* (sqrt (- (* b b) (* (* 4 a) c))) b))) |
| 222.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* 4 a) c) (* (* 4 a) c)))) |
| 197.0ms | (- (* 2 b) (* 2 (/ (* a c) b))) |
| 192.0ms | (- b (* 2 (/ (* a c) b))) |
6 alts after pruning (4 fresh and 2 done)
Merged error: 5.4b
95.6% (1.0b remaining)
Error of 6.5b against oracle of 5.5b and baseline of 29.2b
| 11586× | (pre true 80) |
| 5844× | (body real 80) |
| 2900× | (body nan 80) |
| 1077× | (body real 2560) |
| 858× | (body real 1280) |
| 449× | (body real 640) |
| 227× | (body real 320) |
| 135× | (body real 160) |
| 96× | (body real 5120) |