


Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 7.79324369207276e+95Initial program 15.3
Simplified15.3
rmApplied add-cube-cbrt15.5
Applied sqrt-prod15.5
Simplified15.5
if 7.79324369207276e+95 < b Initial program 42.9
Simplified42.9
Taylor expanded around 0 4.0
Final simplification13.8
herbie shell --seed 2019005
(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.4s)Debug log
1 calls. Slowest were:
| 172.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: 19.9b
Found 4 expressions with local error:
| 24.3b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.3b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 1.1b | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 1.1b | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
4 calls. Slowest were:
| 24.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 7.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 6.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 74.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 70.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 63.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 60.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
30 calls. Slowest were:
| 261.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 229.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 229.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 13.9b
Found 4 expressions with local error:
| 24.3b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.3b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.3b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 1.1b | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
4 calls. Slowest were:
| 15.0ms | (- (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:
| 76.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 61.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 54.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 48.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
30 calls. Slowest were:
| 252.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 244.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 232.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
12 alts after pruning (11 fresh and 1 done)
Merged error: 13.9b
Found 4 expressions with local error:
| 25.1b | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 25.1b | (cbrt (+ (* b b) (* (* c a) -4))) |
| 24.3b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 5.5b | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
4 calls. Slowest were:
| 14.0ms | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
| 3.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 2.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 218.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 115.0ms | (- (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b))))) b) |
| 89.0ms | (cbrt (+ (* b b) (* (* c a) -4))) |
| 65.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
28 calls. Slowest were:
| 778.0ms | (exp (* 1/3 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) |
| 315.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)))) |
| 257.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))))))))))) |
12 alts after pruning (10 fresh and 2 done)
Merged error: 13.9b
Found 4 expressions with local error:
| 25.1b | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 25.1b | (cbrt (+ (* b b) (* (* c a) -4))) |
| 24.3b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 9.6b | (- (- b) (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b)))))) |
4 calls. Slowest were:
| 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))) |
| 5.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 232.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 127.0ms | (cbrt (+ (* b b) (* (* c a) -4))) |
| 76.0ms | (- (- b) (* (fabs (cbrt (+ (* b b) (* (* c a) -4)))) (sqrt (cbrt (+ (* (* -4 a) c) (* b b)))))) |
| 54.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
29 calls. Slowest were:
| 393.0ms | (exp (* 1/3 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) |
| 298.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)))) |
| 280.0ms | (cbrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
11 alts after pruning (8 fresh and 3 done)
Merged error: 13.9b
88.9% (0.7b remaining)
Error of 13.8b against oracle of 13.0b and baseline of 19.5b