


Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 2.863205149176435e+62Initial program 15.6
Simplified15.6
rmApplied add-sqr-sqrt15.7
if 2.863205149176435e+62 < b Initial program 37.0
Simplified37.0
Taylor expanded around 0 5.3
Taylor expanded around 0 5.3
Simplified5.3
Final simplification13.8
herbie shell --seed 2019016
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))
Time bar (total: 20.6s)Debug log
| 368× | (pre true 80) |
| 277× | (body real 80) |
| 91× | (body nan 80) |
| 125.0ms | (if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 20.6b
Found 4 expressions with local error:
| 24.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 2.2b | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 1.2b | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 12× | add-sqr-sqrt |
| 8× | *-un-lft-identity |
| 7× | sqrt-prod |
| 6× | add-log-exp |
| 6× | add-cube-cbrt |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 2× | difference-of-squares |
| 2× | flip-- |
| 2× | flip-+ |
| 2× | pow1/2 |
| 2× | flip3-- |
| 2× | flip3-+ |
| 2× | sub-neg |
| 2× | rem-sqrt-square |
| 1× | distribute-lft-out-- |
| 1× | diff-log |
| 1× | neg-sub0 |
| 1× | associate--l- |
| 29.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 19.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 6.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 6.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 75.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 55.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 52.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 47.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 569.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 232.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
| 205.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 195.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
| 58.0ms | (- (* 2 (/ (* a c) b)) (* 2 b)) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 12.1b
Found 4 expressions with local error:
| 24.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 2.2b | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 1.2b | (+ (* (* -4 a) c) (* b b)) |
| 0.1b | (/ (* 2 c) (- (sqrt (+ (* (* -4 a) c) (* b b))) 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× | pow1/2 |
| 1× | frac-2neg |
| 1× | sub-neg |
| 1× | sum-log |
| 1× | clear-num |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 1× | cbrt-undiv |
| 36.0ms | (/ (* 2 c) (- (sqrt (+ (* (* -4 a) c) (* b b))) b)) |
| 30.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 8.0ms | (+ (* (* -4 a) c) (* b b)) |
| 6.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 121.0ms | (/ (* 2 c) (- (sqrt (+ (* (* -4 a) c) (* b b))) b)) |
| 70.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 45.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 31.0ms | (+ (* (* -4 a) c) (* b b)) |
| 490.0ms | (/ (* (* (* 2 c) (* 2 c)) (* 2 c)) (* (* (- (sqrt (+ (* (* -4 a) c) (* b b))) b) (- (sqrt (+ (* (* -4 a) c) (* b b))) b)) (- (sqrt (+ (* (* -4 a) c) (* b b))) b))) |
| 241.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
| 216.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 53.0ms | (- (log (* 2 c)) (log (- (sqrt (+ (* (* -4 a) c) (* b b))) b))) |
| 36.0ms | (+ (* (sqrt (+ (* (* -4 a) c) (* b b))) (sqrt (+ (* (* -4 a) c) (* b b)))) (+ (* b b) (* (sqrt (+ (* (* -4 a) c) (* b b))) b))) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 12.1b
Found 4 expressions with local error:
| 24.7b | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 24.7b | (cbrt (+ (* b b) (* (* c a) -4))) |
| 8.0b | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
| 1.2b | (+ (* b b) (* (* c a) -4)) |
| 6× | add-log-exp |
| 6× | add-cube-cbrt |
| 6× | *-un-lft-identity |
| 6× | add-sqr-sqrt |
| 6× | cbrt-prod |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | cbrt-div |
| 4× | pow1 |
| 3× | flip-+ |
| 3× | flip3-+ |
| 2× | pow1/3 |
| 1× | flip-- |
| 1× | flip3-- |
| 1× | sub-neg |
| 1× | sum-log |
| 1× | +-commutative |
| 20.0ms | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
| 5.0ms | (+ (* b b) (* (* c a) -4)) |
| 4.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 2.0ms | (cbrt (+ (* b b) (* (* c a) -4))) |
| 213.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 124.0ms | (cbrt (+ (* b b) (* (* c a) -4))) |
| 80.0ms | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
| 25.0ms | (+ (* b b) (* (* c a) -4)) |
| 411.0ms | (exp (* 1/3 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) |
| 325.0ms | (- (exp (* 1/3 (+ (log -4) (+ (log a) (log c))))) (* 1/12 (* (exp (* 1/3 (- (log -4) (+ (* 2 (log a)) (* 2 (log c)))))) (pow b 2)))) |
| 267.0ms | (cbrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 228.0ms | (- (* (fabs (pow (- (pow b 2) (* 4 (* a c))) 1/3)) (exp (* 1/6 (+ (log -4) (+ (log a) (log c)))))) (+ b (* 1/24 (* (pow b 2) (* (fabs (pow (- (pow b 2) (* 4 (* a c))) 1/3)) (exp (* 1/6 (- (log -4) (+ (* 5 (log a)) (* 5 (log c))))))))))) |
| 225.0ms | (cbrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
12 alts after pruning (11 fresh and 1 done)
Merged error: 12.0b
Found 4 expressions with local error:
| 24.7b | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 24.7b | (cbrt (* (sqrt (+ (* b b) (* (* c a) -4))) (sqrt (+ (* b b) (* (* c a) -4))))) |
| 24.0b | (sqrt (+ (* b b) (* (* c a) -4))) |
| 24.0b | (sqrt (+ (* b b) (* (* c a) -4))) |
| 16× | sqrt-div |
| 10× | cbrt-div |
| 9× | flip-+ |
| 9× | flip3-+ |
| 9× | add-sqr-sqrt |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 6× | sqrt-prod |
| 4× | add-log-exp |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 4× | frac-times |
| 4× | cbrt-prod |
| 2× | associate-*r/ |
| 2× | associate-*l/ |
| 2× | pow1/3 |
| 2× | pow1/2 |
| 2× | rem-sqrt-square |
| 17.0ms | (cbrt (* (sqrt (+ (* b b) (* (* c a) -4))) (sqrt (+ (* b b) (* (* c a) -4))))) |
| 4.0ms | (sqrt (+ (* b b) (* (* c a) -4))) |
| 4.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 4.0ms | (sqrt (+ (* b b) (* (* c a) -4))) |
| 191.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 89.0ms | (cbrt (* (sqrt (+ (* b b) (* (* c a) -4))) (sqrt (+ (* b b) (* (* c a) -4))))) |
| 57.0ms | (sqrt (+ (* b b) (* (* c a) -4))) |
| 53.0ms | (sqrt (+ (* b b) (* (* c a) -4))) |
| 329.0ms | (exp (* 1/3 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) |
| 305.0ms | (cbrt (* (sqrt (- (* (* b b) (* b b)) (* (* (* c a) -4) (* (* c a) -4)))) (sqrt (+ (pow (* b b) 3) (pow (* (* c a) -4) 3))))) |
| 265.0ms | (cbrt (* (sqrt (+ (pow (* b b) 3) (pow (* (* c a) -4) 3))) (sqrt (- (* (* b b) (* b b)) (* (* (* c a) -4) (* (* c a) -4)))))) |
| 246.0ms | (- (exp (* 1/3 (+ (log -4) (+ (log a) (log c))))) (* 1/12 (* (exp (* 1/3 (- (log -4) (+ (* 2 (log a)) (* 2 (log c)))))) (pow b 2)))) |
| 232.0ms | (cbrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
12 alts after pruning (10 fresh and 2 done)
Merged error: 12.0b
90.5% (0.8b remaining)
Error of 13.8b against oracle of 13.0b and baseline of 21.7b
| 11455× | (pre true 80) |
| 8717× | (body real 80) |
| 2738× | (body nan 80) |