


Bits error versus re



Bits error versus im
Results
if im < -7.741829280776554e+91Initial program 48.4
rmApplied +-commutative48.4
Taylor expanded around -inf 9.6
if -7.741829280776554e+91 < im < -3.97963148609671e-159Initial program 25.4
rmApplied flip--34.9
Applied associate-*r/34.9
Applied sqrt-div35.0
Simplified25.8
if -3.97963148609671e-159 < im < 3.0351998430093895e-166Initial program 42.5
rmApplied add-sqr-sqrt43.6
rmApplied add-sqr-sqrt43.6
Applied associate-*l*43.6
Taylor expanded around -inf 34.1
if 3.0351998430093895e-166 < im < 7.913867737127792e+157Initial program 24.3
rmApplied +-commutative24.3
if 7.913867737127792e+157 < im Initial program 61.3
rmApplied +-commutative61.3
Taylor expanded around inf 7.1
Final simplification22.3
herbie shell --seed 2019010
(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.8s)Debug log
| 44.0ms | (* 0.5 (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re)))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 36.3b
Found 4 expressions with local error:
| 29.5b | (sqrt (+ (* re re) (* im im))) |
| 0.5b | (- (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))) |
| 129.0ms | (sqrt (* 2.0 (- (sqrt (+ (* re re) (* im im))) re))) |
| 48.0ms | (- (sqrt (+ (* re re) (* im im))) re) |
| 27.0ms | (sqrt (+ (* re re) (* im im))) |
| 25.0ms | (+ (* re re) (* im im)) |
| 355.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)))) |
| 207.0ms | (sqrt (* 2.0 (- (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)))) |
| 181.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 62.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 11.0ms | (* (exp (* re re)) (exp (* im im))) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 15.1b
Found 4 expressions with local error:
| 29.5b | (sqrt (+ (* im im) (* re re))) |
| 0.5b | (- (sqrt (+ (* im im) (* re re))) re) |
| 0.0b | (sqrt (* 2.0 (- (sqrt (+ (* im im) (* re re))) re))) |
| 0.0b | (+ (* im im) (* re 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 |
| 21.0ms | (- (sqrt (+ (* im im) (* re re))) re) |
| 4.0ms | (sqrt (+ (* im im) (* re re))) |
| 2.0ms | (sqrt (* 2.0 (- (sqrt (+ (* im im) (* re re))) re))) |
| 2.0ms | (+ (* im im) (* re re)) |
| 117.0ms | (sqrt (* 2.0 (- (sqrt (+ (* im im) (* re re))) re))) |
| 32.0ms | (- (sqrt (+ (* im im) (* re re))) re) |
| 22.0ms | (sqrt (+ (* im im) (* re re))) |
| 14.0ms | (+ (* im im) (* re re)) |
| 300.0ms | (sqrt (* 2.0 (- (* (sqrt (+ (* im im) (* re re))) (sqrt (+ (* im im) (* re re)))) (* re re)))) |
| 188.0ms | (sqrt (* 2.0 (- (pow (sqrt (+ (* im im) (* re re))) 3) (pow re 3)))) |
| 111.0ms | (sqrt (- (* (* im im) (* im im)) (* (* re re) (* re re)))) |
| 38.0ms | (sqrt (+ (pow (* im im) 3) (pow (* re re) 3))) |
| 5.0ms | (sqrt (* (cbrt (+ (* im im) (* re re))) (cbrt (+ (* im im) (* re re))))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 7.4b
Found 4 expressions with local error:
| 29.5b | (sqrt (+ (* re re) (* im im))) |
| 29.5b | (sqrt (+ (* re re) (* im im))) |
| 8.0b | (- (* (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 |
| 17.0ms | (- (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 10.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
| 4.0ms | (sqrt (+ (* re re) (* im im))) |
| 37.0ms | (- (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) re) |
| 36.0ms | (sqrt (+ (* re re) (* im im))) |
| 25.0ms | (* (sqrt (sqrt (+ (* re re) (* im im)))) (sqrt (sqrt (+ (* re re) (* im im))))) |
| 20.0ms | (sqrt (+ (* re re) (* im im))) |
| 216.0ms | (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) |
| 192.0ms | (* (sqrt (sqrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im)))))) (sqrt (sqrt (- (* re re) (* im im))))) |
| 172.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))))))) |
| 169.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 (+ (pow (* re re) 3) (pow (* im im) 3)))) (sqrt (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))))) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 7.4b
Found 4 expressions with local error:
| 29.5b | (sqrt (+ (* re re) (* im im))) |
| 29.5b | (sqrt (+ (* re re) (* im im))) |
| 29.5b | (sqrt (+ (* re re) (* im im))) |
| 8.7b | (- (* (sqrt (sqrt (sqrt (+ (* re re) (* im im))))) (* (sqrt (sqrt (sqrt (+ (* re re) (* im im))))) (sqrt (sqrt (+ (* re re) (* im im)))))) re) |
| 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 |
| 38.0ms | (- (* (sqrt (sqrt (sqrt (+ (* re re) (* im im))))) (* (sqrt (sqrt (sqrt (+ (* re re) (* im im))))) (sqrt (sqrt (+ (* re re) (* im im)))))) re) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 2.0ms | (sqrt (+ (* re re) (* im im))) |
| 42.0ms | (- (* (sqrt (sqrt (sqrt (+ (* re re) (* im im))))) (* (sqrt (sqrt (sqrt (+ (* re re) (* im im))))) (sqrt (sqrt (+ (* re re) (* im im)))))) re) |
| 30.0ms | (sqrt (+ (* re re) (* im im))) |
| 26.0ms | (sqrt (+ (* re re) (* im im))) |
| 19.0ms | (sqrt (+ (* re re) (* im im))) |
| 137.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 120.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 114.0ms | (sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im)))) |
| 65.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
| 47.0ms | (sqrt (+ (pow (* re re) 3) (pow (* im im) 3))) |
8 alts after pruning (6 fresh and 2 done)
Merged error: 7.4b
55.2% (12.5b remaining)
Error of 22.3b against oracle of 9.7b and baseline of 37.7b