


Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -8.231697744286554e+128Initial program 51.5
Simplified51.5
Taylor expanded around -inf 10.0
if -8.231697744286554e+128 < b < 5.675700738969511e+95Initial program 9.4
Simplified9.4
rmApplied add-cube-cbrt9.7
Applied sqrt-prod9.7
Simplified9.7
if 5.675700738969511e+95 < b Initial program 29.4
Simplified29.4
Taylor expanded around inf 6.6
Final simplification9.0
herbie shell --seed 2019005
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))
Time bar (total: 20.9s)Debug log
1 calls. Slowest were:
| 90.0ms | (if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 20.7b
Found 4 expressions with local error:
| 23.2b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 23.2b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 1.1b | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 1.1b | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
4 calls. Slowest were:
| 19.0ms | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
| 14.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 4.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
4 calls. Slowest were:
| 66.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 53.0ms | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
| 52.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 41.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
30 calls. Slowest were:
| 224.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 223.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 160.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* -4 a) c) (* (* -4 a) c)))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 7.9b
Found 4 expressions with local error:
| 23.2b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 23.2b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 23.2b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 1.1b | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
4 calls. Slowest were:
| 11.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 2.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 2.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
4 calls. Slowest were:
| 75.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 69.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 64.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 62.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
30 calls. Slowest were:
| 224.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 214.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 188.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
8 alts after pruning (8 fresh and 0 done)
Merged error: 7.9b
Found 4 expressions with local error:
| 23.9b | (cbrt (+ (* b b) (* a (* -4 c)))) |
| 23.9b | (cbrt (+ (* b b) (* (* -4 a) c))) |
| 23.2b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 23.2b | (sqrt (+ (* b b) (* (* -4 a) c))) |
4 calls. Slowest were:
| 4.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 4.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 3.0ms | (cbrt (+ (* b b) (* a (* -4 c)))) |
4 calls. Slowest were:
| 113.0ms | (cbrt (+ (* b b) (* a (* -4 c)))) |
| 100.0ms | (cbrt (+ (* b b) (* (* -4 a) c))) |
| 68.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 67.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
34 calls. Slowest were:
| 306.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)))) |
| 289.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)))) |
| 243.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
8 alts after pruning (7 fresh and 1 done)
Merged error: 7.9b
Found 4 expressions with local error:
| 23.9b | (cbrt (+ (* b b) (* a (* -4 c)))) |
| 23.9b | (cbrt (+ (* b b) (* (* -4 a) c))) |
| 23.2b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 7.4b | (- (- b) (* (fabs (cbrt (+ (* b b) (* a (* -4 c))))) (sqrt (cbrt (+ (* b b) (* (* -4 a) c)))))) |
4 calls. Slowest were:
| 8.0ms | (- (- b) (* (fabs (cbrt (+ (* b b) (* a (* -4 c))))) (sqrt (cbrt (+ (* b b) (* (* -4 a) c)))))) |
| 4.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 3.0ms | (cbrt (+ (* b b) (* a (* -4 c)))) |
4 calls. Slowest were:
| 131.0ms | (cbrt (+ (* b b) (* (* -4 a) c))) |
| 121.0ms | (- (- b) (* (fabs (cbrt (+ (* b b) (* a (* -4 c))))) (sqrt (cbrt (+ (* b b) (* (* -4 a) c)))))) |
| 116.0ms | (cbrt (+ (* b b) (* a (* -4 c)))) |
| 54.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
29 calls. Slowest were:
| 520.0ms | (- b (* 2 (/ (* a c) b))) |
| 275.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)))) |
| 251.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)))) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 7.9b
91.2% (1.0b remaining)
Error of 9.0b against oracle of 8.0b and baseline of 19.7b