


Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.01049118321302e+117Initial program 49.4
Simplified49.4
Taylor expanded around -inf 10.2
if -7.01049118321302e+117 < b < 1.501809486178084e+23Initial program 9.4
Simplified9.4
rmApplied add-sqr-sqrt9.5
if 1.501809486178084e+23 < b Initial program 23.8
Simplified23.8
Taylor expanded around inf 7.5
Final simplification9.0
herbie shell --seed 2019022
(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: 17.8s)Debug log
| 49.0ms | 283× | body | 80 | valid |
| 15.0ms | 97× | body | 80 | nan |
| 153.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: 16.0b
Found 4 expressions with local error:
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 2.0b | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 1.3b | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
| 12× | add-sqr-sqrt |
| 8× | *-un-lft-identity |
| 7× | sqrt-prod |
| 6× | add-log-exp |
| 6× | add-cube-cbrt |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 2× | difference-of-squares |
| 2× | flip-- |
| 2× | flip-+ |
| 2× | pow1/2 |
| 2× | flip3-- |
| 2× | flip3-+ |
| 2× | sub-neg |
| 2× | rem-sqrt-square |
| 1× | distribute-lft-out-- |
| 1× | diff-log |
| 1× | neg-sub0 |
| 1× | associate--l- |
| 21.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 13.0ms | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
| 6.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 4.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 75.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 58.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 52.0ms | (- (sqrt (+ (* b b) (* (* -4 a) c))) b) |
| 50.0ms | (- (- b) (sqrt (+ (* b b) (* (* -4 a) c)))) |
| 159.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 137.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 126.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* -4 a) c) (* (* -4 a) c)))) |
| 120.0ms | (- b (* 2 (/ (* a c) b))) |
| 105.0ms | (- b (* 2 (/ (* a c) b))) |
10 alts after pruning (10 fresh and 0 done)
Merged error: 7.6b
Found 4 expressions with local error:
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 9.3b | (- (- b) (* (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))) (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))))) |
| 11× | add-sqr-sqrt |
| 9× | sqrt-prod |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 6× | add-log-exp |
| 6× | sqrt-div |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 3× | flip-+ |
| 3× | pow1/2 |
| 3× | flip3-+ |
| 3× | rem-sqrt-square |
| 1× | difference-of-squares |
| 1× | flip-- |
| 1× | diff-log |
| 1× | flip3-- |
| 1× | sub-neg |
| 1× | neg-sub0 |
| 1× | associate--l- |
| 4.0ms | (- (- b) (* (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))) (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))))) |
| 2.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 2.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 2.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 45.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 45.0ms | (- (- b) (* (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))) (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))))) |
| 41.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 40.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 245.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 224.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 198.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 149.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* -4 a) c) (* (* -4 a) c)))) |
| 131.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* -4 a) c) (* (* -4 a) c)))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 7.6b
Found 4 expressions with local error:
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 12.1b | (- (* (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))) (sqrt (sqrt (+ (* b b) (* (* -4 a) c))))) b) |
| 10× | add-sqr-sqrt |
| 9× | sqrt-prod |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 6× | sqrt-div |
| 4× | add-log-exp |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 3× | flip-+ |
| 3× | pow1/2 |
| 3× | flip3-+ |
| 3× | rem-sqrt-square |
| 1× | flip-- |
| 1× | flip3-- |
| 1× | sub-neg |
| 11.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))) |
| 2.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 70.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 65.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 64.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 44.0ms | (- (* (sqrt (sqrt (+ (* b b) (* (* -4 a) c)))) (sqrt (sqrt (+ (* b b) (* (* -4 a) c))))) b) |
| 229.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 204.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 181.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 152.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* -4 a) c) (* (* -4 a) c)))) |
| 144.0ms | (sqrt (- (* (* b b) (* b b)) (* (* (* -4 a) c) (* (* -4 a) c)))) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 7.6b
Found 4 expressions with local error:
| 22.4b | (cbrt (+ (* b b) (* a (* -4 c)))) |
| 22.4b | (cbrt (+ (* b b) (* (* -4 a) c))) |
| 21.7b | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 9.4b | (- (* (fabs (cbrt (+ (* b b) (* a (* -4 c))))) (sqrt (cbrt (+ (* b b) (* (* -4 a) c))))) b) |
| 8× | add-sqr-sqrt |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 6× | cbrt-prod |
| 4× | add-log-exp |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | cbrt-div |
| 4× | pow1 |
| 3× | flip-+ |
| 3× | sqrt-prod |
| 3× | flip3-+ |
| 2× | sqrt-div |
| 2× | pow1/3 |
| 1× | flip-- |
| 1× | pow1/2 |
| 1× | flip3-- |
| 1× | sub-neg |
| 1× | rem-sqrt-square |
| 14.0ms | (- (* (fabs (cbrt (+ (* b b) (* a (* -4 c))))) (sqrt (cbrt (+ (* b b) (* (* -4 a) c))))) b) |
| 2.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 1.0ms | (cbrt (+ (* b b) (* a (* -4 c)))) |
| 1.0ms | (cbrt (+ (* b b) (* (* -4 a) c))) |
| 111.0ms | (cbrt (+ (* b b) (* (* -4 a) c))) |
| 91.0ms | (cbrt (+ (* b b) (* a (* -4 c)))) |
| 77.0ms | (- (* (fabs (cbrt (+ (* b b) (* a (* -4 c))))) (sqrt (cbrt (+ (* b b) (* (* -4 a) c))))) b) |
| 51.0ms | (sqrt (+ (* b b) (* (* -4 a) c))) |
| 312.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)))) |
| 264.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)))) |
| 202.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))))))))))) |
| 197.0ms | (cbrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
| 194.0ms | (sqrt (+ (pow (* b b) 3) (pow (* (* -4 a) c) 3))) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 7.5b
88.1% (1.4b remaining)
Error of 9.0b against oracle of 7.5b and baseline of 19.5b
| 2.2s | 8738× | body | 80 | valid |
| 683.0ms | 2979× | body | 80 | nan |