Average Error: 31.2 → 11.0
Time: 3.9m
Precision: 64
Internal Precision: 128
\[e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
\[\begin{array}{l} \mathbf{if}\;y.re \le -2.517780050735774 \cdot 10^{-103}:\\ \;\;\;\;e^{\log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \sqrt[3]{y.im \cdot \log \left(-x.re\right)} \cdot \left(\sqrt[3]{y.im \cdot \log \left(-x.re\right)} \cdot \sqrt[3]{y.im \cdot \log \left(-x.re\right)}\right)\right)\\ \mathbf{elif}\;y.re \le 2.6805310866544538 \cdot 10^{-284}:\\ \;\;\;\;e^{\log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\ \mathbf{else}:\\ \;\;\;\;e^{y.re \cdot \log \left(-x.re\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(y.im \cdot \log \left(-x.re\right) + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\ \end{array}\]

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if y.re < -2.517780050735774e-103

    1. Initial program 36.5

      \[e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    2. Taylor expanded around -inf 1.1

      \[\leadsto e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \color{blue}{\left(-1 \cdot x.re\right)} \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    3. Simplified1.1

      \[\leadsto e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \color{blue}{\left(-x.re\right)} \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    4. Using strategy rm
    5. Applied add-cube-cbrt1.1

      \[\leadsto e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\color{blue}{\left(\sqrt[3]{\log \left(-x.re\right) \cdot y.im} \cdot \sqrt[3]{\log \left(-x.re\right) \cdot y.im}\right) \cdot \sqrt[3]{\log \left(-x.re\right) \cdot y.im}} + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]

    if -2.517780050735774e-103 < y.re < 2.6805310866544538e-284

    1. Initial program 31.6

      \[e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]

    if 2.6805310866544538e-284 < y.re

    1. Initial program 22.4

      \[e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    2. Taylor expanded around -inf 21.7

      \[\leadsto e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \color{blue}{\left(-1 \cdot x.re\right)} \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    3. Simplified21.7

      \[\leadsto e^{\log \left(\sqrt{x.re \cdot x.re + x.im \cdot x.im}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \color{blue}{\left(-x.re\right)} \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    4. Taylor expanded around -inf 13.7

      \[\leadsto e^{\log \color{blue}{\left(-1 \cdot x.re\right)} \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(-x.re\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
    5. Simplified13.7

      \[\leadsto e^{\log \color{blue}{\left(-x.re\right)} \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(-x.re\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification11.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;y.re \le -2.517780050735774 \cdot 10^{-103}:\\ \;\;\;\;e^{\log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\tan^{-1}_* \frac{x.im}{x.re} \cdot y.re + \sqrt[3]{y.im \cdot \log \left(-x.re\right)} \cdot \left(\sqrt[3]{y.im \cdot \log \left(-x.re\right)} \cdot \sqrt[3]{y.im \cdot \log \left(-x.re\right)}\right)\right)\\ \mathbf{elif}\;y.re \le 2.6805310866544538 \cdot 10^{-284}:\\ \;\;\;\;e^{\log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) \cdot y.re - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(\log \left(\sqrt{x.im \cdot x.im + x.re \cdot x.re}\right) \cdot y.im + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\ \mathbf{else}:\\ \;\;\;\;e^{y.re \cdot \log \left(-x.re\right) - \tan^{-1}_* \frac{x.im}{x.re} \cdot y.im} \cdot \sin \left(y.im \cdot \log \left(-x.re\right) + \tan^{-1}_* \frac{x.im}{x.re} \cdot y.re\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019021 
(FPCore (x.re x.im y.re y.im)
  :name "powComplex, imaginary part"
  (* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))))

Details

Time bar (total: 3.9m)Debug log

sample7.2s

Algorithm
intervals
Results
6.8s1586×body10240exit
122.0ms256×body80valid

simplify80.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
80.0ms
(* (exp (- (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re) (* (atan2 x.im x.re) y.im))) (sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re))))

prune12.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 30.1b

localize56.0ms

Local error

Found 4 expressions with local error:

38.6b
(sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))
28.6b
(sqrt (+ (* x.re x.re) (* x.im x.im)))
28.6b
(sqrt (+ (* x.re x.re) (* x.im x.im)))
0.3b
(* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re)

rewrite18.0ms

Algorithm
rewrite-expression-head
Rules
add-sqr-sqrt
add-cube-cbrt
*-un-lft-identity
sqrt-prod
associate-*l*
pow1
add-log-exp
add-exp-log
sqrt-div
add-cbrt-cube
pow1/2
flip-+
log-pow
flip3-+
rem-sqrt-square
*-commutative
sin-sum
Counts
4 → 49
Calls
4 calls:
Slowest
10.0ms
(sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))
3.0ms
(* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re)
2.0ms
(sqrt (+ (* x.re x.re) (* x.im x.im)))
2.0ms
(sqrt (+ (* x.re x.re) (* x.im x.im)))

series294.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
153.0ms
(sin (+ (* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.im) (* (atan2 x.im x.re) y.re)))
85.0ms
(* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re)
29.0ms
(sqrt (+ (* x.re x.re) (* x.im x.im)))
27.0ms
(sqrt (+ (* x.re x.re) (* x.im x.im)))

simplify546.0ms

Counts
27 → 61
Calls
27 calls:
Slowest
117.0ms
(sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im))))
103.0ms
(sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im))))
66.0ms
(* -1 (* y.re (log (/ -1 x.re))))
63.0ms
(* -1 (* y.re (log (/ 1 x.re))))
63.0ms
(sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re)))))

prune1.2s

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 9.2b

localize17.0ms

Local error

Found 4 expressions with local error:

38.5b
(sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re)))
28.6b
(sqrt (+ (* x.re x.re) (* x.im x.im)))
0.3b
(* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re)
0.3b
(* (log (- x.re)) y.im)

rewrite30.0ms

Algorithm
rewrite-expression-head
Rules
associate-*l*
add-sqr-sqrt
add-cube-cbrt
*-un-lft-identity
pow1
add-log-exp
add-exp-log
add-cbrt-cube
sqrt-prod
log-pow
*-commutative
sqrt-div
pow1/2
flip-+
sin-sum
flip3-+
rem-sqrt-square
Counts
4 → 47
Calls
4 calls:
Slowest
10.0ms
(sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re)))
9.0ms
(* (log (- x.re)) y.im)
7.0ms
(* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re)
3.0ms
(sqrt (+ (* x.re x.re) (* x.im x.im)))

series361.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
168.0ms
(sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re)))
94.0ms
(* (log (- x.re)) y.im)
73.0ms
(* (log (sqrt (+ (* x.re x.re) (* x.im x.im)))) y.re)
26.0ms
(sqrt (+ (* x.re x.re) (* x.im x.im)))

simplify641.0ms

Counts
23 → 59
Calls
23 calls:
Slowest
111.0ms
(sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im))))
99.0ms
(sin (- (+ (* (atan2 x.im x.re) y.re) (* y.im (log -1))) (* y.im (log (/ 1 x.re)))))
90.0ms
(* -1 (* y.re (log (/ -1 x.re))))
66.0ms
(sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re)))))
53.0ms
(* -1 (* y.re (log (/ 1 x.re))))

prune1.1s

Pruning

7 alts after pruning (6 fresh and 1 done)

Merged error: 5.4b

localize21.0ms

Local error

Found 4 expressions with local error:

38.5b
(sin (+ (* (* (cbrt (* (log (- x.re)) y.im)) (cbrt (* (log (- x.re)) y.im))) (cbrt (* (log (- x.re)) y.im))) (* (atan2 x.im x.re) y.re)))
28.6b
(sqrt (+ (* x.re x.re) (* x.im x.im)))
0.6b
(cbrt (* (log (- x.re)) y.im))
0.6b
(cbrt (* (log (- x.re)) y.im))

rewrite59.0ms

Algorithm
rewrite-expression-head
Rules
add-sqr-sqrt
add-cube-cbrt
*-un-lft-identity
add-log-exp
add-exp-log
add-cbrt-cube
pow1
sqrt-prod
sqrt-div
pow1/3
cbrt-prod
flip-+
sin-sum
pow1/2
flip3-+
rem-sqrt-square
Counts
4 → 40
Calls
4 calls:
Slowest
51.0ms
(sin (+ (* (* (cbrt (* (log (- x.re)) y.im)) (cbrt (* (log (- x.re)) y.im))) (cbrt (* (log (- x.re)) y.im))) (* (atan2 x.im x.re) y.re)))
3.0ms
(sqrt (+ (* x.re x.re) (* x.im x.im)))
3.0ms
(cbrt (* (log (- x.re)) y.im))
2.0ms
(cbrt (* (log (- x.re)) y.im))

series476.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
159.0ms
(sin (+ (* (* (cbrt (* (log (- x.re)) y.im)) (cbrt (* (log (- x.re)) y.im))) (cbrt (* (log (- x.re)) y.im))) (* (atan2 x.im x.re) y.re)))
155.0ms
(cbrt (* (log (- x.re)) y.im))
141.0ms
(cbrt (* (log (- x.re)) y.im))
20.0ms
(sqrt (+ (* x.re x.re) (* x.im x.im)))

simplify836.0ms

Counts
21 → 52
Calls
21 calls:
Slowest
157.0ms
(* (exp (* 1/3 (- (log (* -1 (log (/ -1 x.re)))) (log (/ -1 y.im))))) (cbrt -1))
139.0ms
(sqrt (- (* (* x.re x.re) (* x.re x.re)) (* (* x.im x.im) (* x.im x.im))))
113.0ms
(* (exp (* 1/3 (- (log (* -1 (log (/ -1 x.re)))) (log (/ -1 y.im))))) (cbrt -1))
80.0ms
(exp (* 1/3 (- (log (- (log -1) (log (/ 1 x.re)))) (log (/ 1 y.im)))))
79.0ms
(sin (- (+ (* (atan2 x.im x.re) y.re) (* y.im (log -1))) (* y.im (log (/ 1 x.re)))))

prune1.1s

Pruning

8 alts after pruning (6 fresh and 2 done)

Merged error: 5.4b

localize11.0ms

Local error

Found 4 expressions with local error:

38.5b
(sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re)))
0.3b
(* (log (- x.re)) y.im)
0.2b
(* (log (- x.re)) y.re)
0.2b
(* (atan2 x.im x.re) y.re)

rewrite16.0ms

Algorithm
rewrite-expression-head
Rules
11×associate-*l*
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
pow1
add-log-exp
add-exp-log
add-cbrt-cube
*-commutative
log-pow
sin-sum
Counts
4 → 43
Calls
4 calls:
Slowest
8.0ms
(sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re)))
3.0ms
(* (log (- x.re)) y.im)
3.0ms
(* (log (- x.re)) y.re)
2.0ms
(* (atan2 x.im x.re) y.re)

series321.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
124.0ms
(sin (+ (* (log (- x.re)) y.im) (* (atan2 x.im x.re) y.re)))
93.0ms
(* (log (- x.re)) y.re)
92.0ms
(* (log (- x.re)) y.im)
12.0ms
(* (atan2 x.im x.re) y.re)

simplify424.0ms

Counts
19 → 55
Calls
19 calls:
Slowest
76.0ms
(* -1 (* y.re (log (/ -1 x.re))))
74.0ms
(sin (- (* (atan2 x.im x.re) y.re) (* y.im (log (/ -1 x.re)))))
67.0ms
(sin (- (+ (* (atan2 x.im x.re) y.re) (* y.im (log -1))) (* y.im (log (/ 1 x.re)))))
65.0ms
(* -1 (* y.im (log (/ -1 x.re))))
41.0ms
(* y.im (- (log -1) (log (/ 1 x.re))))

prune791.0ms

Pruning

12 alts after pruning (9 fresh and 3 done)

Merged error: 5.4b

regimes768.0ms

Accuracy

47.2% (6.0b remaining)

Error of 11.0b against oracle of 5.0b and baseline of 16.4b

bsearch12.3s

end0.0ms

sample3.4m

Algorithm
intervals
Results
3.3m47062×body10240exit
3.6s8000×body80valid