


Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.101324698489804e+137Initial program 54.6
Simplified54.6
Taylor expanded around inf 54.6
Taylor expanded around -inf 12.0
if -2.101324698489804e+137 < b < 5.423498018208401e+105Initial program 8.8
Simplified8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 5.423498018208401e+105 < b Initial program 30.6
Simplified30.6
Taylor expanded around inf 6.4
rmApplied *-un-lft-identity6.4
Applied times-frac6.4
Simplified6.4
Simplified2.4
rmApplied add-cube-cbrt2.4
Applied sqrt-prod2.4
Simplified2.4
Final simplification7.8
herbie shell --seed 2019002
(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: 19.1s)Debug log
1 calls. Slowest were:
| 158.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: 19.3b
Found 4 expressions with local error:
| 23.6b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 23.6b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 1.7b | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
| 1.3b | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
4 calls. Slowest were:
| 21.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 11.0ms | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
| 6.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
4 calls. Slowest were:
| 77.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 71.0ms | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
| 67.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 67.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
30 calls. Slowest were:
| 210.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 201.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 157.0ms | (- b (* 2 (/ (* a c) b))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 6.3b
Found 4 expressions with local error:
| 23.6b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 23.6b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 23.6b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 17.1b | (- (* (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))) (sqrt (sqrt (+ (* b b) (* (* -4 a) c))))) b) |
4 calls. Slowest were:
| 17.0ms | (- (* (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))) (sqrt (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:
| 78.0ms | (- (* (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))) (sqrt (sqrt (+ (* b b) (* (* -4 a) c))))) b) |
| 60.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 55.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 43.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
30 calls. Slowest were:
| 251.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 234.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 202.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 6.3b
Found 4 expressions with local error:
| 23.6b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 4.6b | (/ (* a c) b) |
| 3.4b | (/ (* 2 c) (- (* 2 (/ (* a c) b)) (* 2 b))) |
| 1.3b | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
4 calls. Slowest were:
| 18.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 9.0ms | (/ (* 2 c) (- (* 2 (/ (* a c) b)) (* 2 b))) |
| 4.0ms | (/ (* a c) b) |
4 calls. Slowest were:
| 56.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 53.0ms | (/ (* 2 c) (- (* 2 (/ (* a c) b)) (* 2 b))) |
| 51.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 15.0ms | (/ (* a c) b) |
34 calls. Slowest were:
| 343.0ms | (/ (* (* (* 2 c) (* 2 c)) (* 2 c)) (* (* (- (* 2 (/ (* a c) b)) (* 2 b)) (- (* 2 (/ (* a c) b)) (* 2 b))) (- (* 2 (/ (* a c) b)) (* 2 b)))) |
| 303.0ms | (+ (* (* 2 (/ (* a c) b)) (* 2 (/ (* a c) b))) (+ (* (* 2 b) (* 2 b)) (* (* 2 (/ (* a c) b)) (* 2 b)))) |
| 260.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 5.8b
Found 4 expressions with local error:
| 23.6b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 6.0b | (* (/ c b) a) |
| 3.4b | (/ (/ c 2) (- (* (/ c b) a) b)) |
| 1.3b | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
4 calls. Slowest were:
| 21.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 21.0ms | (/ (/ c 2) (- (* (/ c b) a) b)) |
| 4.0ms | (* (/ c b) a) |
4 calls. Slowest were:
| 85.0ms | (/ (/ c 2) (- (* (/ c b) a) b)) |
| 68.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 48.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 22.0ms | (* (/ c b) a) |
54 calls. Slowest were:
| 453.0ms | (+ (* (* (/ c b) a) (* (/ c b) a)) (+ (* b b) (* (* (/ c b) a) b))) |
| 288.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 287.0ms | (/ (* (* (/ c 2) (/ c 2)) (/ c 2)) (* (* (- (* (/ c b) a) b) (- (* (/ c b) a) b)) (- (* (/ c b) a) b))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 5.8b
91.9% (1.0b remaining)
Error of 7.8b against oracle of 6.8b and baseline of 19.2b