


Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 5.001839899625071e+77Initial program 14.7
Initial simplification14.7
rmApplied add-sqr-sqrt14.7
Applied sqrt-prod14.8
if 5.001839899625071e+77 < b Initial program 40.3
Initial simplification40.3
Taylor expanded around 0 5.3
Final simplification13.1
herbie shell --seed 2018362
(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: 18.3s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 17.0b
Found 4 expressions with local error:
| 21.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 21.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 1.8b | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 0.9b | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
4 calls. Slowest were:
| 29.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 14.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 7.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 77.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 74.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 69.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 46.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
30 calls. Slowest were:
| 287.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 265.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 263.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 11.8b
Found 4 expressions with local error:
| 21.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 21.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 21.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 7.6b | (- (* (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))) (sqrt (sqrt (+ (* (* -4 a) c) (* b b))))) b) |
4 calls. Slowest were:
| 27.0ms | (- (* (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))) (sqrt (sqrt (+ (* (* -4 a) c) (* b b))))) b) |
| 5.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 3.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 70.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 67.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 55.0ms | (- (* (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))) (sqrt (sqrt (+ (* (* -4 a) c) (* b b))))) b) |
| 50.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
30 calls. Slowest were:
| 277.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 275.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 271.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 11.8b
Found 4 expressions with local error:
| 21.8b | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 21.8b | (cbrt (+ (* b b) (* (* c a) -4))) |
| 21.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 9.9b | (- (- b) (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b)))))) |
4 calls. Slowest were:
| 8.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 7.0ms | (- (- b) (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b)))))) |
| 6.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 187.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 98.0ms | (cbrt (+ (* b b) (* (* c a) -4))) |
| 84.0ms | (- (- b) (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b)))))) |
| 62.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
29 calls. Slowest were:
| 348.0ms | (exp (* 1/3 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) |
| 322.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)))) |
| 265.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 11.8b
Found 4 expressions with local error:
| 21.8b | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 21.8b | (cbrt (+ (* b b) (* (* c a) -4))) |
| 21.0b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 6.7b | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
4 calls. Slowest were:
| 16.0ms | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
| 6.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 4.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 185.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 99.0ms | (cbrt (+ (* b b) (* (* c a) -4))) |
| 72.0ms | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
| 61.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
28 calls. Slowest were:
| 489.0ms | (exp (* 1/3 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) |
| 306.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 262.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)))) |
9 alts after pruning (7 fresh and 2 done)
Merged error: 11.8b
88.6% (0.8b remaining)
Error of 13.1b against oracle of 12.3b and baseline of 19.2b