


Bits error versus re



Bits error versus im
Results
if re < -1.98901646800801e+52Initial program 42.1
rmApplied add-sqr-sqrt42.1
Taylor expanded around -inf 12.5
if -1.98901646800801e+52 < re < -2.453660426131194e-293Initial program 19.2
rmApplied add-sqr-sqrt19.3
rmApplied add-cube-cbrt19.4
Applied sqrt-prod19.4
Applied associate-*r*19.4
if -2.453660426131194e-293 < re Initial program 45.1
rmApplied flip--45.1
Applied associate-*r/45.1
Applied sqrt-div45.2
Simplified34.8
Final simplification26.0
herbie shell --seed 2019021
(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: 12.5s)Debug log
| 14.0ms | 193× | body | 80 | valid |
| 10.0ms | 22× | body | 2560 | valid |
| 7.0ms | 14× | body | 1280 | valid |
| 4.0ms | 8× | body | 5120 | valid |
| 3.0ms | 11× | body | 640 | valid |
| 1.0ms | 4× | body | 320 | valid |
| 1.0ms | 4× | body | 160 | valid |
| 55.0ms | (* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 35.5b
Found 4 expressions with local error:
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 1.4b | (- (sqrt (+ (* re re) (* im im))) re) |
| 0.0b | (+ (* re re) (* im im)) |
| 0.0b | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 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 |
| 29.0ms | (sqrt (+ (* re re) (* im im))) |
| 25.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 24.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 4.0ms | (+ (* re re) (* im im)) |
| 606.0ms | (sqrt (+ (* re re) (* im im))) |
| 101.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 30.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 16.0ms | (+ (* re re) (* im im)) |
| 328.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)))) |
| 105.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 36.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 6.0ms | (+ (pow im 2) (pow re 2)) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 16.7b
Found 4 expressions with local error:
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 8.4b | (- (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 0.5b | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 28× | sqrt-div |
| 24× | sqrt-prod |
| 14× | add-sqr-sqrt |
| 12× | add-cube-cbrt |
| 12× | *-un-lft-identity |
| 9× | associate-*l* |
| 9× | associate-*r* |
| 9× | pow1 |
| 8× | flip-+ |
| 8× | flip3-+ |
| 6× | add-exp-log |
| 6× | pow1/2 |
| 6× | add-cbrt-cube |
| 4× | add-log-exp |
| 4× | frac-times |
| 2× | pow-prod-up |
| 2× | associate-*r/ |
| 2× | associate-*l/ |
| 2× | pow-prod-down |
| 2× | rem-sqrt-square |
| 1× | flip-- |
| 1× | cbrt-unprod |
| 1× | *-commutative |
| 1× | prod-exp |
| 1× | sqrt-unprod |
| 1× | flip3-- |
| 1× | pow-plus |
| 1× | rem-square-sqrt |
| 1× | sub-neg |
| 1× | pow2 |
| 20.0ms | (- (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 18.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 31.0ms | (sqrt (+ (* re re) (* im im))) |
| 28.0ms | (- (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 27.0ms | (sqrt (+ (* re re) (* im im))) |
| 23.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 186.0ms | (* (sqrt (sqrt (- (* re re) (* im im)))) (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im))))))) |
| 162.0ms | (* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im))))))) |
| 158.0ms | (* (sqrt (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))) (sqrt (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))))) |
| 149.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 137.0ms | (* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (- (* re re) (* im im))))) |
7 alts after pruning (7 fresh and 0 done)
Merged error: 16.7b
Found 4 expressions with local error:
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 12× | sqrt-prod |
| 12× | add-sqr-sqrt |
| 8× | add-cube-cbrt |
| 8× | sqrt-div |
| 8× | *-un-lft-identity |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | add-exp-log |
| 4× | pow1/2 |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 4× | rem-sqrt-square |
| 4× | pow1 |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 24.0ms | (sqrt (+ (* re re) (* im im))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 18.0ms | (sqrt (+ (* re re) (* im im))) |
| 18.0ms | (sqrt (+ (* re re) (* im im))) |
| 168.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 104.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 101.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 92.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 46.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 16.7b
Found 4 expressions with local error:
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 27.4b | (sqrt (+ (* re re) (* im im))) |
| 12× | sqrt-prod |
| 12× | add-sqr-sqrt |
| 8× | add-cube-cbrt |
| 8× | sqrt-div |
| 8× | *-un-lft-identity |
| 4× | add-log-exp |
| 4× | flip-+ |
| 4× | add-exp-log |
| 4× | pow1/2 |
| 4× | add-cbrt-cube |
| 4× | flip3-+ |
| 4× | rem-sqrt-square |
| 4× | pow1 |
| 3.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 23.0ms | (sqrt (+ (* re re) (* im im))) |
| 21.0ms | (sqrt (+ (* re re) (* im im))) |
| 20.0ms | (sqrt (+ (* re re) (* im im))) |
| 18.0ms | (sqrt (+ (* re re) (* im im))) |
| 162.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 136.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 106.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 100.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 56.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
7 alts after pruning (5 fresh and 2 done)
Merged error: 16.7b
57.2% (8.9b remaining)
Error of 26.0b against oracle of 17.1b and baseline of 37.8b
| 1.2s | 5978× | body | 80 | valid |
| 590.0ms | 712× | body | 2560 | valid |
| 390.0ms | 492× | body | 1280 | valid |
| 245.0ms | 296× | body | 5120 | valid |
| 172.0ms | 275× | body | 640 | valid |
| 96.0ms | 167× | body | 320 | valid |
| 17.0ms | 80× | body | 160 | valid |