Details

Time bar (total: 12.3s)

analyze1.9s (15%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.8%0.2%0
0%99.8%0.2%1
0%99.8%0.2%2
0%99.8%0.2%3
0%99.8%0.2%4
0%99.8%0.2%5
9.4%90.4%0.2%6
17.2%82.7%0.2%7
19.5%80.3%0.2%8
30.8%69%0.2%9
35.5%64.3%0.2%10
42.4%57.4%0.2%11
47.1%52.7%0.2%12
48.9%50.9%0.2%13
50%49.7%0.2%14
Compiler

Compiled 42 to 20 computations (52.4% saved)

sample5.8s (47.4%)

Results
2.5s2552×body1024invalid
1.8s7809×body128valid
609.0ms950×body512invalid
243.0ms175×body2048invalid
190.0ms189×body1024valid
162.0ms385×body256invalid
141.0ms527×body128invalid
98.0ms147×body512valid
41.0ms98×body256valid
19.0ms13×body2048valid
Compiler

Compiled 125 to 59 computations (52.8% saved)

simplify24.0ms (0.2%)

Algorithm
egg-herbie
Rules
892×unswap-sqr_binary64
451×associate-/l*_binary64
320×associate-/r*_binary64
273×associate-*l/_binary64
263×associate-*r/_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02040
13938
27638
312638
428638
5109638
6414138
Stop Event
node limit
Counts
1 → 2

prune6.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
8.0b
Counts
3 → 2
Alt Table
StatusErrorProgram
11.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
29.8b
(*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.re) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.im) (*.f64 (atan2.f64 x.im x.re) y.re))))
Compiler

Compiled 206 to 97 computations (52.9% saved)

localize16.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.5b
(exp.f64 (atan2.f64 x.im x.re))
0.5b
(pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)
1.4b
(*.f64 y.re (atan2.f64 x.im x.re))
34.5b
(sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))

series500.0ms (4.1%)

Counts
4 → 68
Calls

4 calls:

411.0ms
(pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)
79.0ms
(sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))
6.0ms
(*.f64 y.re (atan2.f64 x.im x.re))
4.0ms
(exp.f64 (atan2.f64 x.im x.re))

rewrite55.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
609×log-prod_binary64
252×prod-diff_binary64
232×expm1-udef_binary64
232×log1p-udef_binary64
230×log-pow_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01340
125640
2305540
Stop Event
node limit
Counts
4 → 86
Calls

4 calls:

53.0ms
(exp.f64 (atan2.f64 x.im x.re))
53.0ms
(pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)
53.0ms
(*.f64 y.re (atan2.f64 x.im x.re))
53.0ms
(sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))

simplify65.0ms (0.5%)

Algorithm
egg-herbie
Rules
695×fma-def_binary64
376×associate-*r*_binary64
230×*-commutative_binary64
226×times-frac_binary64
214×associate-/l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03103605
19973323
245073315
Stop Event
node limit
Counts
154 → 149

prune273.0ms (2.2%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New13415149
Fresh011
Picked101
Done000
Total13516151
Error
4.8b
Counts
151 → 16
Alt Table
StatusErrorProgram
10.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
11.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) (+.f64 y.im y.im))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
11.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (fma.f64 y.re (*.f64 (atan2.f64 x.im x.re) (cos.f64 (*.f64 y.im (log.f64 (hypot.f64 x.im x.re))))) (sin.f64 (*.f64 y.im (log.f64 (hypot.f64 x.im x.re))))))
11.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (-.f64 (exp.f64 (log1p.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))) 1)) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
12.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (fma.f64 y.im (*.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (log.f64 (hypot.f64 x.im x.re))) (sin.f64 (*.f64 y.re (atan2.f64 x.im x.re)))))
20.5b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (cbrt.f64 (pow.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) 3)))
38.8b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (sin.f64 (-.f64 (*.f64 y.re (atan2.f64 x.im x.re)) (*.f64 (log.f64 (/.f64 -1 x.im)) y.im))))
34.4b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (pow.f64 (sqrt.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2))
29.8b
(*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.re) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.im) (*.f64 (atan2.f64 x.im x.re) y.re))))
11.6b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (pow.f64 (cbrt.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 3))
43.8b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (sin.f64 (fma.f64 (log.f64 x.im) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
31.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (-.f64 (exp.f64 (log1p.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) 1))
17.3b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) 1) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
12.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))) (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
23.9b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (sqrt.f64 (pow.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) 2)))
31.1b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))))
Compiler

Compiled 8431 to 2899 computations (65.6% saved)

localize17.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im)))
1.4b
(*.f64 y.re (atan2.f64 x.im x.re))
1.8b
(*.f64 (atan2.f64 x.im x.re) y.im)
34.5b
(sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))

series416.0ms (3.4%)

Counts
2 → 64
Calls

2 calls:

409.0ms
(/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im)))
7.0ms
(*.f64 (atan2.f64 x.im x.re) y.im)

rewrite44.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
566×log-prod_binary64
291×prod-diff_binary64
211×log-pow_binary64
206×expm1-udef_binary64
206×log1p-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01125
122425
2284125
Stop Event
node limit
Counts
2 → 56
Calls

2 calls:

42.0ms
(/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im)))
42.0ms
(*.f64 (atan2.f64 x.im x.re) y.im)

simplify50.0ms (0.4%)

Algorithm
egg-herbie
Rules
485×times-frac_binary64
415×associate-/l*_binary64
360×associate-*r*_binary64
271×associate-/r*_binary64
214×associate-*l*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
03003784
112053556
Stop Event
node limit
Counts
120 → 125

prune473.0ms (3.8%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New2185223
Fresh31215
Picked101
Done000
Total22217239
Error
3.6b
Counts
239 → 17
Alt Table
StatusErrorProgram
23.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (sqrt.f64 (pow.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) 2)))
11.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) (+.f64 y.im y.im))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
11.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (fma.f64 y.re (*.f64 (atan2.f64 x.im x.re) (cos.f64 (*.f64 y.im (log.f64 (hypot.f64 x.im x.re))))) (sin.f64 (*.f64 y.im (log.f64 (hypot.f64 x.im x.re))))))
10.2b
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (hypot.f64 x.im x.re) y.re)) (*.f64 (sqrt.f64 (pow.f64 (hypot.f64 x.im x.re) y.re)) (exp.f64 (*.f64 (neg.f64 y.im) (atan2.f64 x.im x.re))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
12.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (fma.f64 y.im (*.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (log.f64 (hypot.f64 x.im x.re))) (sin.f64 (*.f64 y.re (atan2.f64 x.im x.re)))))
20.5b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (cbrt.f64 (pow.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) 3)))
38.8b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (sin.f64 (-.f64 (*.f64 y.re (atan2.f64 x.im x.re)) (*.f64 (log.f64 (/.f64 -1 x.im)) y.im))))
34.4b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (pow.f64 (sqrt.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2))
29.8b
(*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.re) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.im) (*.f64 (atan2.f64 x.im x.re) y.re))))
11.6b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (pow.f64 (cbrt.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 3))
31.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (-.f64 (exp.f64 (log1p.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) 1))
4.0b
(*.f64 (exp.f64 (-.f64 (*.f64 y.re (log.f64 (hypot.f64 x.im x.re))) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
43.8b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (sin.f64 (fma.f64 (log.f64 x.im) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
10.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (pow.f64 (cbrt.f64 (*.f64 (atan2.f64 x.im x.re) y.im)) 3))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
31.1b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))))
12.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))) (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
17.1b
(*.f64 (-.f64 (pow.f64 (hypot.f64 x.im x.re) y.re) (*.f64 y.im (*.f64 (atan2.f64 x.im x.re) (pow.f64 (hypot.f64 x.im x.re) y.re)))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
Compiler

Compiled 14156 to 5060 computations (64.3% saved)

localize19.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 y.re (log.f64 (hypot.f64 x.im x.re)))
1.4b
(*.f64 y.re (atan2.f64 x.im x.re))
1.8b
(*.f64 (atan2.f64 x.im x.re) y.im)
34.5b
(sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))

series541.0ms (4.4%)

Counts
1 → 36
Calls

1 calls:

541.0ms
(*.f64 y.re (log.f64 (hypot.f64 x.im x.re)))

rewrite38.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
562×log1p-expm1-u_binary64
562×expm1-log1p-u_binary64
324×log-prod_binary64
124×pow1/3_binary64
123×expm1-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079
11359
215779
Stop Event
node limit
Counts
1 → 20
Calls

1 calls:

37.0ms
(*.f64 y.re (log.f64 (hypot.f64 x.im x.re)))

simplify38.0ms (0.3%)

Algorithm
egg-herbie
Rules
504×associate-/l/_binary64
259×times-frac_binary64
249×fma-def_binary64
217×distribute-rgt-neg-in_binary64
213×sub-neg_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0881004
1276868
2787868
32992847
Stop Event
node limit
Counts
56 → 62

prune394.0ms (3.2%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New1792181
Fresh21416
Picked101
Done000
Total18216198
Error
3.6b
Counts
198 → 16
Alt Table
StatusErrorProgram
23.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (sqrt.f64 (pow.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) 2)))
11.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) (+.f64 y.im y.im))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
12.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (fma.f64 y.im (*.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (log.f64 (hypot.f64 x.im x.re))) (sin.f64 (*.f64 y.re (atan2.f64 x.im x.re)))))
20.5b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (cbrt.f64 (pow.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) 3)))
38.8b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (sin.f64 (-.f64 (*.f64 y.re (atan2.f64 x.im x.re)) (*.f64 (log.f64 (/.f64 -1 x.im)) y.im))))
34.4b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (pow.f64 (sqrt.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2))
29.8b
(*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.re) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.im) (*.f64 (atan2.f64 x.im x.re) y.re))))
11.6b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (pow.f64 (cbrt.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 3))
40.5b
(*.f64 (exp.f64 (-.f64 (*.f64 y.re (log.f64 (hypot.f64 x.im x.re))) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (fma.f64 (log.f64 x.im) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
31.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (-.f64 (exp.f64 (log1p.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) 1))
4.2b
(*.f64 (exp.f64 (-.f64 (*.f64 y.re (log.f64 (hypot.f64 x.im x.re))) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (pow.f64 (cbrt.f64 (*.f64 y.re (atan2.f64 x.im x.re))) 3))))
10.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (pow.f64 (cbrt.f64 (*.f64 (atan2.f64 x.im x.re) y.im)) 3))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
31.1b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))))
10.2b
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (hypot.f64 x.im x.re) y.re)) (*.f64 (sqrt.f64 (pow.f64 (hypot.f64 x.im x.re) y.re)) (exp.f64 (*.f64 (neg.f64 y.im) (atan2.f64 x.im x.re))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
12.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))) (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
17.1b
(*.f64 (-.f64 (pow.f64 (hypot.f64 x.im x.re) y.re) (*.f64 y.im (*.f64 (atan2.f64 x.im x.re) (pow.f64 (hypot.f64 x.im x.re) y.re)))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
Compiler

Compiled 9992 to 3581 computations (64.2% saved)

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
1.4b
(*.f64 y.re (atan2.f64 x.im x.re))
1.8b
(*.f64 (atan2.f64 x.im x.re) y.im)
7.4b
(cbrt.f64 (*.f64 y.re (atan2.f64 x.im x.re)))
34.9b
(sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (pow.f64 (cbrt.f64 (*.f64 y.re (atan2.f64 x.im x.re))) 3)))

series220.0ms (1.8%)

Counts
2 → 63
Calls

2 calls:

141.0ms
(sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (pow.f64 (cbrt.f64 (*.f64 y.re (atan2.f64 x.im x.re))) 3)))
79.0ms
(cbrt.f64 (*.f64 y.re (atan2.f64 x.im x.re)))

rewrite45.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
586×log-prod_binary64
348×prod-diff_binary64
227×expm1-udef_binary64
227×log1p-udef_binary64
214×log-pow_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01427
127627
2303727
Stop Event
node limit
Counts
2 → 53
Calls

2 calls:

44.0ms
(cbrt.f64 (*.f64 y.re (atan2.f64 x.im x.re)))
44.0ms
(sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (pow.f64 (cbrt.f64 (*.f64 y.re (atan2.f64 x.im x.re))) 3)))

simplify63.0ms (0.5%)

Algorithm
egg-herbie
Rules
552×fma-def_binary64
323×associate-*r*_binary64
226×times-frac_binary64
214×associate-/l*_binary64
206×sub-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02883416
19133156
241623154
Stop Event
node limit
Counts
116 → 104

prune317.0ms (2.6%)

Pruning

16 alts after pruning (15 fresh and 1 done)

PrunedKeptTotal
New1421143
Fresh11415
Picked011
Done000
Total14316159
Error
3.6b
Counts
159 → 16
Alt Table
StatusErrorProgram
23.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (*.f64 (atan2.f64 x.im x.re) y.im))) (sqrt.f64 (pow.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) 2)))
11.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) (+.f64 y.im y.im))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
12.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (fma.f64 y.im (*.f64 (cos.f64 (*.f64 y.re (atan2.f64 x.im x.re))) (log.f64 (hypot.f64 x.im x.re))) (sin.f64 (*.f64 y.re (atan2.f64 x.im x.re)))))
34.8b
(*.f64 (exp.f64 (-.f64 (*.f64 y.re (log.f64 (hypot.f64 x.im x.re))) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (-.f64 (*.f64 y.re (atan2.f64 x.im x.re)) (*.f64 (log.f64 (/.f64 -1 x.im)) y.im))))
20.5b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (cbrt.f64 (pow.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))) 3)))
29.8b
(*.f64 (exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.re) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)))) y.im) (*.f64 (atan2.f64 x.im x.re) y.re))))
11.6b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (pow.f64 (cbrt.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 3))
40.5b
(*.f64 (exp.f64 (-.f64 (*.f64 y.re (log.f64 (hypot.f64 x.im x.re))) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (fma.f64 (log.f64 x.im) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
31.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (-.f64 (exp.f64 (log1p.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) 1))
4.2b
(*.f64 (exp.f64 (-.f64 (*.f64 y.re (log.f64 (hypot.f64 x.im x.re))) (*.f64 (atan2.f64 x.im x.re) y.im))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (pow.f64 (cbrt.f64 (*.f64 y.re (atan2.f64 x.im x.re))) 3))))
10.2b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (exp.f64 (pow.f64 (cbrt.f64 (*.f64 (atan2.f64 x.im x.re) y.im)) 3))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
31.1b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))) (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))))))
10.2b
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (hypot.f64 x.im x.re) y.re)) (*.f64 (sqrt.f64 (pow.f64 (hypot.f64 x.im x.re) y.re)) (exp.f64 (*.f64 (neg.f64 y.im) (atan2.f64 x.im x.re))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
12.0b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))) (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)))))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
17.1b
(*.f64 (-.f64 (pow.f64 (hypot.f64 x.im x.re) y.re) (*.f64 y.im (*.f64 (atan2.f64 x.im x.re) (pow.f64 (hypot.f64 x.im x.re) y.re)))) (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re)))))
34.4b
(*.f64 (/.f64 (pow.f64 (hypot.f64 x.re x.im) y.re) (pow.f64 (exp.f64 (atan2.f64 x.im x.re)) y.im)) (pow.f64 (sqrt.f64 (sin.f64 (fma.f64 (log.f64 (hypot.f64 x.re x.im)) y.im (*.f64 y.re (atan2.f64 x.im x.re))))) 2))
Compiler

Compiled 7800 to 2689 computations (65.5% saved)

regimes669.0ms (5.4%)

Accuracy

Total 0.4b remaining (9.6%)

Threshold costs 0.4b (9.6%)

Counts
110 → 1
Compiler

Compiled 17812 to 9790 computations (45% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01640
12540
23740
34340
44740
54840
Stop Event
saturated

end320.0ms (2.6%)

Compiler

Compiled 648 to 328 computations (49.4% saved)

Profiling

Loading profile data...