Average Error: 36.9 → 25.9
Time: 16.8s
Precision: 64
Internal Precision: 128
\[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
\[\begin{array}{l} \mathbf{if}\;re \le -3.269784804517612 \cdot 10^{+55}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 4.5620662079317833 \cdot 10^{-88}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{im \cdot \left(im \cdot 2.0\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\ \end{array}\]

Error

Bits error versus re

Bits error versus im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if re < -3.269784804517612e+55

    1. Initial program 42.5

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Initial simplification42.5

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{re \cdot re + im \cdot im} - re\right) \cdot 2.0}\]
    3. Taylor expanded around -inf 11.8

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\left(-2 \cdot re\right)} \cdot 2.0}\]

    if -3.269784804517612e+55 < re < 4.5620662079317833e-88

    1. Initial program 24.6

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Initial simplification24.6

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{re \cdot re + im \cdot im} - re\right) \cdot 2.0}\]

    if 4.5620662079317833e-88 < re

    1. Initial program 52.3

      \[0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}\]
    2. Initial simplification52.3

      \[\leadsto 0.5 \cdot \sqrt{\left(\sqrt{re \cdot re + im \cdot im} - re\right) \cdot 2.0}\]
    3. Using strategy rm
    4. Applied flip--52.3

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re}{\sqrt{re \cdot re + im \cdot im} + re}} \cdot 2.0}\]
    5. Applied associate-*l/52.3

      \[\leadsto 0.5 \cdot \sqrt{\color{blue}{\frac{\left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right) \cdot 2.0}{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    6. Applied sqrt-div52.3

      \[\leadsto 0.5 \cdot \color{blue}{\frac{\sqrt{\left(\sqrt{re \cdot re + im \cdot im} \cdot \sqrt{re \cdot re + im \cdot im} - re \cdot re\right) \cdot 2.0}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}}\]
    7. Simplified37.4

      \[\leadsto 0.5 \cdot \frac{\color{blue}{\sqrt{\left(im \cdot 2.0\right) \cdot im}}}{\sqrt{\sqrt{re \cdot re + im \cdot im} + re}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification25.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;re \le -3.269784804517612 \cdot 10^{+55}:\\ \;\;\;\;\sqrt{\left(-2 \cdot re\right) \cdot 2.0} \cdot 0.5\\ \mathbf{elif}\;re \le 4.5620662079317833 \cdot 10^{-88}:\\ \;\;\;\;0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{im \cdot im + re \cdot re} - re\right)}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\sqrt{im \cdot \left(im \cdot 2.0\right)}}{\sqrt{\sqrt{im \cdot im + re \cdot re} + re}}\\ \end{array}\]

Reproduce

herbie shell --seed 2018365 
(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)))))

Details

Time bar (total: 11.6s)Debug log

start555.0ms

Algorithm
intervals

setup90.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 38.1b

localize46.0ms

Local error

Found 4 expressions with local error:

30.9b
(sqrt (+ (* re re) (* im im)))
0.5b
(- (sqrt (+ (* re re) (* im im))) re)
0.2b
(sqrt (* (- (sqrt (+ (* re re) (* im im))) re) 2.0))
0.0b
(+ (* re re) (* im im))

rewrite35.0ms

Algorithm
rewrite-expression-head
Counts
4 → 47
Calls

4 calls. Slowest were:

14.0ms
(- (sqrt (+ (* re re) (* im im))) re)
13.0ms
(sqrt (* (- (sqrt (+ (* re re) (* im im))) re) 2.0))
3.0ms
(sqrt (+ (* re re) (* im im)))

series223.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

133.0ms
(sqrt (* (- (sqrt (+ (* re re) (* im im))) re) 2.0))
41.0ms
(- (sqrt (+ (* re re) (* im im))) re)
27.0ms
(sqrt (+ (* re re) (* im im)))
22.0ms
(+ (* re re) (* im im))

simplify827.0ms

Counts
22 → 59
Calls

22 calls. Slowest were:

299.0ms
(sqrt (* (- (* (sqrt (+ (* re re) (* im im))) (sqrt (+ (* re re) (* im im)))) (* re re)) 2.0))
261.0ms
(sqrt (* (- (pow (sqrt (+ (* re re) (* im im))) 3) (pow re 3)) 2.0))
148.0ms
(sqrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))

prune730.0ms

Pruning

8 alts after pruning (7 fresh and 1 done)

Merged error: 19.8b

localize29.0ms

Local error

Found 4 expressions with local error:

31.9b
(cbrt (+ (* re re) (* im im)))
31.9b
(cbrt (+ (* re re) (* im im)))
4.1b
(- (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re)
0.3b
(* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im)))))

rewrite34.0ms

Algorithm
rewrite-expression-head
Counts
4 → 62
Calls

4 calls. Slowest were:

16.0ms
(- (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re)
12.0ms
(* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im)))))
3.0ms
(cbrt (+ (* re re) (* im im)))

series382.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

120.0ms
(* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im)))))
97.0ms
(cbrt (+ (* re re) (* im im)))
87.0ms
(- (* (fabs (cbrt (+ (* re re) (* im im)))) (sqrt (cbrt (+ (* re re) (* im im))))) re)
78.0ms
(cbrt (+ (* re re) (* im im)))

simplify1.2s

Counts
38 → 74
Calls

38 calls. Slowest were:

204.0ms
(- (+ (* (fabs (pow (+ (pow im 2) (pow re 2)) 1/3)) (pow im 1/3)) (* 1/6 (* (* (pow re 2) (fabs (pow (+ (pow im 2) (pow re 2)) 1/3))) (pow (/ 1 (pow im 5)) 1/3)))) re)
180.0ms
(+ (* (fabs (pow (+ (pow im 2) (pow re 2)) 1/3)) (pow im 1/3)) (* 1/6 (* (* (pow re 2) (fabs (pow (+ (pow im 2) (pow re 2)) 1/3))) (pow (/ 1 (pow im 5)) 1/3))))
177.0ms
(sqrt (cbrt (+ (* (* re re) (* re re)) (- (* (* im im) (* im im)) (* (* re re) (* im im))))))

prune1.3s

Pruning

7 alts after pruning (6 fresh and 1 done)

Merged error: 19.8b

localize25.0ms

Local error

Found 4 expressions with local error:

31.9b
(cbrt (+ (* re re) (* im im)))
31.9b
(cbrt (+ (* re re) (* im im)))
31.9b
(cbrt (+ (* re re) (* im im)))
31.9b
(cbrt (+ (* re re) (* im im)))

rewrite8.0ms

Algorithm
rewrite-expression-head
Counts
4 → 52
Calls

4 calls. Slowest were:

2.0ms
(cbrt (+ (* re re) (* im im)))
2.0ms
(cbrt (+ (* re re) (* im im)))
1.0ms
(cbrt (+ (* re re) (* im im)))

series452.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

131.0ms
(cbrt (+ (* re re) (* im im)))
110.0ms
(cbrt (+ (* re re) (* im im)))
108.0ms
(cbrt (+ (* re re) (* im im)))
102.0ms
(cbrt (+ (* re re) (* im im)))

simplify888.0ms

Counts
32 → 64
Calls

32 calls. Slowest were:

153.0ms
(cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))
125.0ms
(cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))
124.0ms
(cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))

prune1.4s

Pruning

8 alts after pruning (6 fresh and 2 done)

Merged error: 19.8b

localize45.0ms

Local error

Found 4 expressions with local error:

31.9b
(cbrt (+ (* re re) (* im im)))
31.9b
(cbrt (+ (* re re) (* im im)))
31.9b
(cbrt (+ (* re re) (* im im)))
31.9b
(cbrt (+ (* re re) (* im im)))

rewrite5.0ms

Algorithm
rewrite-expression-head
Counts
4 → 52
Calls

4 calls. Slowest were:

1.0ms
(cbrt (+ (* re re) (* im im)))
1.0ms
(cbrt (+ (* re re) (* im im)))
1.0ms
(cbrt (+ (* re re) (* im im)))

series395.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

110.0ms
(cbrt (+ (* re re) (* im im)))
100.0ms
(cbrt (+ (* re re) (* im im)))
95.0ms
(cbrt (+ (* re re) (* im im)))
90.0ms
(cbrt (+ (* re re) (* im im)))

simplify909.0ms

Counts
32 → 64
Calls

32 calls. Slowest were:

153.0ms
(cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))
142.0ms
(cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))
117.0ms
(cbrt (- (* (* re re) (* re re)) (* (* im im) (* im im))))

prune1.4s

Pruning

8 alts after pruning (5 fresh and 3 done)

Merged error: 19.8b

regimes418.0ms

Accuracy

55.8% (8.7b remaining)

Error of 25.9b against oracle of 17.2b and baseline of 36.9b

bsearch176.0ms