


Bits error versus re



Bits error versus im
Results
if re < -3.423353045456592e+72Initial program 46.0
Taylor expanded around -inf 11.9
if -3.423353045456592e+72 < re < -9.627507825106705e-299Initial program 20.7
rmApplied add-sqr-sqrt20.8
if -9.627507825106705e-299 < re < 3.771304173360558e+140Initial program 38.6
rmApplied sqrt-prod38.8
rmApplied flip--38.7
Applied sqrt-div38.7
Simplified20.3
if 3.771304173360558e+140 < re Initial program 61.3
rmApplied sqrt-prod61.3
rmApplied flip--61.3
Applied sqrt-div61.3
Simplified47.9
Taylor expanded around inf 8.0
Final simplification17.3
herbie shell --seed 2019018
(FPCore (re im)
:name "math.sqrt on complex, imaginary part, im greater than 0 branch"
(* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))))
Time bar (total: 13.0s)Debug log
| 32.0ms | 199× | body | 80 | valid |
| 21.0ms | 22× | body | 2560 | valid |
| 10.0ms | 14× | body | 1280 | valid |
| 5.0ms | 9× | body | 640 | valid |
| 5.0ms | 5× | body | 5120 | valid |
| 3.0ms | 6× | body | 320 | valid |
| 0.0ms | 1× | body | 160 | valid |
| 48.0ms | (* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 35.6b
Found 4 expressions with local error:
| 26.2b | (sqrt (+ (* re re) (* im im))) |
| 0.3b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 0.0b | (+ (* re re) (* im im)) |
| 6× | add-log-exp |
| 6× | add-sqr-sqrt |
| 5× | add-cube-cbrt |
| 5× | *-un-lft-identity |
| 4× | sqrt-prod |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 2× | flip-- |
| 2× | flip-+ |
| 2× | associate-*r/ |
| 2× | pow1/2 |
| 2× | flip3-- |
| 2× | flip3-+ |
| 1× | sub-neg |
| 1× | sum-log |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 11.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (+ (* re re) (* im im)) |
| 2.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 302.0ms | (sqrt (+ (* re re) (* im im))) |
| 102.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 25.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 20.0ms | (+ (* re re) (* im im)) |
| 315.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 211.0ms | (sqrt (* 2.0 (- (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 119.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 38.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 8.0ms | (* (exp (* re re)) (exp (* im im))) |
5 alts after pruning (5 fresh and 0 done)
Merged error: 14.5b
Found 4 expressions with local error:
| 26.2b | (sqrt (+ (* re re) (* im im))) |
| 0.4b | (* (sqrt 2.0) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 0.3b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (sqrt (- (sqrt (+ (* re re) (* im im))) re)) |
| 11× | add-sqr-sqrt |
| 9× | sqrt-prod |
| 9× | add-cube-cbrt |
| 9× | *-un-lft-identity |
| 6× | add-exp-log |
| 6× | associate-*r* |
| 6× | sqrt-div |
| 6× | add-cbrt-cube |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | pow1/2 |
| 3× | flip-- |
| 3× | associate-*l* |
| 3× | flip3-- |
| 2× | associate-*r/ |
| 2× | pow-prod-down |
| 2× | rem-sqrt-square |
| 1× | flip-+ |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | sqrt-unprod |
| 1× | flip3-+ |
| 1× | sub-neg |
| 30.0ms | (* (sqrt 2.0) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 12.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 8.0ms | (sqrt (- (sqrt (+ (* re re) (* im im))) re)) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 91.0ms | (* (sqrt 2.0) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) |
| 64.0ms | (sqrt (- (sqrt (+ (* re re) (* im im))) re)) |
| 24.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 496.0ms | (sqrt (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re))) |
| 159.0ms | (* (* (* (sqrt 2.0) (sqrt 2.0)) (sqrt 2.0)) (* (* (sqrt (- (sqrt (+ (* re re) (* im im))) re)) (sqrt (- (sqrt (+ (* re re) (* im im))) re))) (sqrt (- (sqrt (+ (* re re) (* im im))) re)))) |
| 113.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 76.0ms | (sqrt (- (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3))) |
| 44.0ms | (sqrt (+ (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (+ (* re re) (* (sqrt (+ (* re re) (* im im))) re)))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 10.6b
Found 4 expressions with local error:
| 26.2b | (sqrt (+ (* re re) (* im im))) |
| 1.5b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 0.4b | (* (sqrt 2.0) (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re)))) |
| 0.3b | (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) |
| 36× | times-frac |
| 35× | add-sqr-sqrt |
| 34× | add-cube-cbrt |
| 34× | *-un-lft-identity |
| 24× | sqrt-prod |
| 24× | associate-*r* |
| 11× | add-exp-log |
| 11× | add-cbrt-cube |
| 6× | sqrt-div |
| 6× | associate-/r* |
| 6× | pow1 |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | associate-/r/ |
| 4× | flip3-+ |
| 3× | associate-/l* |
| 3× | associate-*l* |
| 2× | div-inv |
| 2× | cbrt-unprod |
| 2× | prod-exp |
| 2× | div-exp |
| 2× | cbrt-undiv |
| 1× | *-commutative |
| 1× | associate-*r/ |
| 1× | pow-prod-down |
| 1× | pow1/2 |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | rem-sqrt-square |
| 1× | +-commutative |
| 17.0ms | (* (sqrt 2.0) (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re)))) |
| 11.0ms | (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) |
| 7.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 105.0ms | (* (sqrt 2.0) (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re)))) |
| 85.0ms | (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) |
| 39.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 25.0ms | (sqrt (+ (* re re) (* im im))) |
| 449.0ms | (* (* (* (sqrt 2.0) (sqrt 2.0)) (sqrt 2.0)) (/ (* (* (fabs im) (fabs im)) (fabs im)) (* (* (sqrt (+ (sqrt (+ (* re re) (* im im))) re)) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))))) |
| 132.0ms | (* (* (* (sqrt 2.0) (sqrt 2.0)) (sqrt 2.0)) (* (* (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re)))) (/ (fabs im) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))))) |
| 127.0ms | (sqrt (+ (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (- (* re re) (* (sqrt (+ (* re re) (* im im))) re)))) |
| 124.0ms | (/ (* (* (fabs im) (fabs im)) (fabs im)) (* (* (sqrt (+ (sqrt (+ (* re re) (* im im))) re)) (sqrt (+ (sqrt (+ (* re re) (* im im))) re))) (sqrt (+ (sqrt (+ (* re re) (* im im))) re)))) |
| 112.0ms | (sqrt (+ (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (- (* re re) (* (sqrt (+ (* re re) (* im im))) re)))) |
11 alts after pruning (9 fresh and 2 done)
Merged error: 7.1b
Found 4 expressions with local error:
| 26.2b | (sqrt (+ (* re re) (* im im))) |
| 26.2b | (sqrt (+ (* re re) (* im im))) |
| 1.5b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 1.5b | (+ (sqrt (+ (* re re) (* im im))) re) |
| 8× | add-sqr-sqrt |
| 6× | sqrt-prod |
| 6× | add-cube-cbrt |
| 6× | *-un-lft-identity |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | add-exp-log |
| 4× | sqrt-div |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 4× | pow1 |
| 2× | pow1/2 |
| 2× | rem-sqrt-square |
| 2× | +-commutative |
| 9.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 7.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 39.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 23.0ms | (+ (sqrt (+ (* re re) (* im im))) re) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 174.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 108.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 62.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 45.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 6.0ms | (sqrt (* (cbrt (+ (* re re) (* im im))) (cbrt (+ (* re re) (* im im))))) |
11 alts after pruning (8 fresh and 3 done)
Merged error: 7.1b
67.3% (9.5b remaining)
Error of 17.3b against oracle of 7.8b and baseline of 36.9b
| 944.0ms | 674× | body | 2560 | valid |
| 760.0ms | 6055× | body | 80 | valid |
| 300.0ms | 487× | body | 1280 | valid |
| 297.0ms | 274× | body | 5120 | valid |
| 151.0ms | 282× | body | 640 | valid |
| 57.0ms | 175× | body | 320 | valid |
| 11.0ms | 53× | body | 160 | valid |