


Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 1.0095220515808722e+99Initial program 15.5
Simplified15.5
rmApplied add-sqr-sqrt15.5
Applied sqrt-prod15.6
if 1.0095220515808722e+99 < b Initial program 44.9
Simplified44.9
Taylor expanded around 0 3.5
Final simplification13.7
herbie shell --seed 2019007
(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.7s)Debug log
1 calls. Slowest were:
| 155.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.5b
Found 4 expressions with local error:
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 1.7b | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 1.5b | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
4 calls. Slowest were:
| 21.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 13.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 3.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 79.0ms | (- (sqrt (+ (* (* -4 a) c) (* b b))) b) |
| 73.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 56.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 48.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
30 calls. Slowest were:
| 216.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 212.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
| 192.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 13.3b
Found 4 expressions with local error:
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 10.4b | (- (- b) (* (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))) (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))))) |
4 calls. Slowest were:
| 7.0ms | (- (- b) (* (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))) (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))))) |
| 6.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 5.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 71.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 62.0ms | (- (- b) (* (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))) (sqrt (sqrt (+ (* (* -4 a) c) (* b b)))))) |
| 52.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 51.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
33 calls. Slowest were:
| 280.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 235.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
| 221.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
11 alts after pruning (10 fresh and 1 done)
Merged error: 13.3b
Found 4 expressions with local error:
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 1.7b | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
4 calls. Slowest were:
| 7.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 3.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 3.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 68.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 61.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 60.0ms | (- (- b) (sqrt (+ (* (* -4 a) c) (* b b)))) |
| 56.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
36 calls. Slowest were:
| 271.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 237.0ms | (sqrt (+ (pow (* (* -4 a) c) 3) (pow (* b b) 3))) |
| 212.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 13.2b
Found 4 expressions with local error:
| 25.3b | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 25.3b | (cbrt (+ (* b b) (* (* c a) -4))) |
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 24.5b | (sqrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 3.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 3.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 2.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
4 calls. Slowest were:
| 234.0ms | (cbrt (+ (* (* -4 a) c) (* b b))) |
| 110.0ms | (cbrt (+ (* b b) (* (* c a) -4))) |
| 59.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
| 52.0ms | (sqrt (+ (* (* -4 a) c) (* b b))) |
34 calls. Slowest were:
| 399.0ms | (exp (* 1/3 (- (log -4) (+ (log (/ 1 a)) (log (/ 1 c)))))) |
| 263.0ms | (sqrt (- (* (* (* -4 a) c) (* (* -4 a) c)) (* (* b b) (* b b)))) |
| 259.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)))) |
12 alts after pruning (9 fresh and 3 done)
Merged error: 13.2b
92.1% (0.6b remaining)
Error of 13.7b against oracle of 13.1b and baseline of 20.1b