Details

Time bar (total: 11.0s)

analyze443.0ms (4%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
50%50%0.1%3
50%50%0.1%4
62.4%37.5%0.1%5
62.4%37.5%0.1%6
68.7%31.2%0.1%7
68.7%31.2%0.1%8
71.8%28.1%0.1%9
71.8%28.1%0.1%10
73.4%26.5%0.1%11
73.4%26.5%0.1%12
74.1%25.8%0.1%13
74.1%25.8%0.1%14
Compiler

Compiled 18 to 13 computations (27.8% saved)

sample1.8s (16.6%)

Symmetry

(sort re im)

Results
790.0ms6213×body128valid
354.0ms600×body4096valid
313.0ms642×body2048valid
170.0ms423×body1024valid
77.0ms258×body512valid
28.0ms120×body256valid
Compiler

Compiled 53 to 38 computations (28.3% saved)

simplify35.0ms (0.3%)

Algorithm
egg-herbie
Rules
621×fma-neg_binary64
394×fma-def_binary64
332×rules-42_binary64
322×rules-41_binary64
315×rules-40_binary64
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01315
18115
224715
388912
477912
51512

prune4.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
49.6b
Counts
3 → 2
Alt Table
StatusErrorProgram
59.8b
(*.f64 1/2 (sqrt.f64 (fma.f64 2 (sqrt.f64 2) 2)))
51.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
Compiler

Compiled 79 to 64 computations (19% saved)

localize9.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 re re) (*.f64 im im))
0.2b
(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
1.1b
(+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)
31.5b
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))

series74.0ms (0.7%)

Counts
4 → 80
Calls

4 calls:

42.0ms
(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
13.0ms
(+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)
12.0ms
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
8.0ms
(+.f64 (*.f64 re re) (*.f64 im im))

rewrite77.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
973×prod-diff_binary64
168×egg-rr
114×add-sqr-sqrt_binary64
113×log1p-expm1-u_binary64
113×expm1-log1p-u_binary64
Counts
4 → 168
Calls

4 calls:

74.0ms
(+.f64 (*.f64 re re) (*.f64 im im))
74.0ms
(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
74.0ms
(+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)
74.0ms
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01131
127430
2334730
3511030
000
100

simplify76.0ms (0.7%)

Algorithm
egg-herbie
Rules
479×rules-21_binary64
319×fma-neg_binary64
277×rules-7-rev_binary64
224×fma-def_binary64
216×rules-20_binary64
Counts
248 → 245
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01391555
19671430
243381430
350331430

prune207.0ms (1.9%)

Pruning

26 alts after pruning (26 fresh and 0 done)

PrunedKeptTotal
New22025245
Fresh011
Picked101
Done000
Total22126247
Error
32.9b
Counts
247 → 26
Alt Table
StatusErrorProgram
59.8b
(*.f64 1/2 (sqrt.f64 (fma.f64 2 (sqrt.f64 2) 2)))
53.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 2)) 1/2)) re))))
41.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
43.2b
(*.f64 1/2 (*.f64 (sqrt.f64 2) (sqrt.f64 im)))
58.9b
(*.f64 1/2 (log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
45.4b
(*.f64 1/2 (-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1))
56.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3) re))))
54.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))))
40.4b
(*.f64 1/2 (pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3))
56.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (/.f64 (pow.f64 (hypot.f64 re im) 3) (+.f64 (pow.f64 (hypot.f64 re im) 2) (+.f64 0 (*.f64 (hypot.f64 re im) 0)))) re))))
45.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 re im)))))
48.0b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3))
41.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (sqrt.f64 (hypot.f64 re im)) (+.f64 (sqrt.f64 (hypot.f64 re im)) (/.f64 re (sqrt.f64 (hypot.f64 re im))))))))
63.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (-.f64 (*.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (fma.f64 1/2 (/.f64 (*.f64 re re) im) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im))) re))))
53.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))) re))))
42.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (+.f64 (cbrt.f64 (hypot.f64 re im)) (/.f64 re (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))))
44.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (pow.f64 (cbrt.f64 re) 2) (+.f64 (cbrt.f64 re) (/.f64 (hypot.f64 re im) (pow.f64 (cbrt.f64 re) 2)))))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im))) re))))
40.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
42.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re))))
48.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1) re))))
42.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
42.6b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re (+.f64 1 (/.f64 (hypot.f64 re im) re))))))
43.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (expm1.f64 (log1p.f64 (hypot.f64 re im))) re))))
Compiler

Compiled 5631 to 3775 computations (33% saved)

localize11.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
0.2b
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)
0.5b
(cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
1.1b
(+.f64 re (hypot.f64 re im))

series194.0ms (1.8%)

Counts
4 → 80
Calls

4 calls:

95.0ms
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)
53.0ms
(cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
34.0ms
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
11.0ms
(+.f64 re (hypot.f64 re im))

rewrite100.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
862×fma-neg_binary64
517×prod-diff_binary64
308×egg-rr
178×expm1-udef_binary64
178×log1p-udef_binary64
Counts
4 → 308
Calls

4 calls:

93.0ms
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
93.0ms
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)
93.0ms
(cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
93.0ms
(+.f64 re (hypot.f64 re im))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01246
125844
2294844
3512244
000
100

simplify95.0ms (0.9%)

Algorithm
egg-herbie
Rules
896×fma-neg_binary64
653×rules-20_binary64
579×rules-41_binary64
579×rules-43_binary64
577×rules-40_binary64
Counts
388 → 430
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03363760
124683760
253103760

prune750.0ms (6.8%)

Pruning

28 alts after pruning (28 fresh and 0 done)

PrunedKeptTotal
New6348642
Fresh52025
Picked101
Done000
Total64028668
Error
32.9b
Counts
668 → 28
Alt Table
StatusErrorProgram
48.0b
(*.f64 1/2 (pow.f64 (pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3) 1/3))
41.5b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3))
42.6b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re (+.f64 1 (/.f64 (hypot.f64 re im) re))))))
59.8b
(*.f64 1/2 (sqrt.f64 (fma.f64 2 (sqrt.f64 2) 2)))
53.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 2)) 1/2)) re))))
41.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
43.2b
(*.f64 1/2 (*.f64 (sqrt.f64 2) (sqrt.f64 im)))
56.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3) re))))
45.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (/.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) (+.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) (+.f64 0 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
45.4b
(*.f64 1/2 (-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1))
54.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))))
56.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (/.f64 (pow.f64 (hypot.f64 re im) 3) (+.f64 (pow.f64 (hypot.f64 re im) 2) (+.f64 0 (*.f64 (hypot.f64 re im) 0)))) re))))
41.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
51.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (-.f64 (fma.f64 1/18 (*.f64 (*.f64 (*.f64 re re) (cbrt.f64 2)) (cbrt.f64 (/.f64 -1 (pow.f64 im 5)))) (fma.f64 (cbrt.f64 (*.f64 im -1)) (cbrt.f64 2) (*.f64 4/81 (*.f64 (*.f64 (pow.f64 re 3) (cbrt.f64 2)) (cbrt.f64 (/.f64 -1 (pow.f64 im 8))))))) (*.f64 1/3 (*.f64 (*.f64 re (cbrt.f64 2)) (cbrt.f64 (/.f64 -1 (*.f64 im im)))))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
41.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (sqrt.f64 (hypot.f64 re im)) (+.f64 (sqrt.f64 (hypot.f64 re im)) (/.f64 re (sqrt.f64 (hypot.f64 re im))))))))
53.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))) re))))
42.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (+.f64 (cbrt.f64 (hypot.f64 re im)) (/.f64 re (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))))
45.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (-.f64 re (fma.f64 1/2 (/.f64 (*.f64 re re) im) im)) 2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
45.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3))) 1)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
44.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (pow.f64 (cbrt.f64 re) 2) (+.f64 (cbrt.f64 re) (/.f64 (hypot.f64 re im) (pow.f64 (cbrt.f64 re) 2)))))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im))) re))))
46.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)) (sqrt.f64 (*.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 4))) (sqrt.f64 (cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)))))))
42.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re))))
48.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1) re))))
42.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
43.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (expm1.f64 (log1p.f64 (hypot.f64 re im))) re))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
Compiler

Compiled 26417 to 16900 computations (36% saved)

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.5b
(cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
1.1b
(+.f64 re (hypot.f64 re im))
2.2b
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2))
3.4b
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)

series101.0ms (0.9%)

Counts
2 → 48
Calls

2 calls:

64.0ms
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2))
36.0ms
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)

rewrite72.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
490×prod-diff_binary64
218×expm1-udef_binary64
218×log1p-udef_binary64
126×log1p-expm1-u_binary64
126×expm1-log1p-u_binary64
Counts
2 → 89
Calls

2 calls:

70.0ms
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2))
70.0ms
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01329
130825
2348325
3495925
000
100

simplify64.0ms (0.6%)

Algorithm
egg-herbie
Rules
618×fma-neg_binary64
461×rules-20_binary64
417×rules-41_binary64
417×rules-43_binary64
415×rules-40_binary64
Counts
137 → 183
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02622547
118512481
251722481

prune637.0ms (5.8%)

Pruning

31 alts after pruning (31 fresh and 0 done)

PrunedKeptTotal
New4815486
Fresh12627
Picked101
Done000
Total48331514
Error
32.9b
Counts
514 → 31
Alt Table
StatusErrorProgram
41.5b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3))
42.6b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re (+.f64 1 (/.f64 (hypot.f64 re im) re))))))
59.8b
(*.f64 1/2 (sqrt.f64 (fma.f64 2 (sqrt.f64 2) 2)))
53.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 2)) 1/2)) re))))
43.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (expm1.f64 (log1p.f64 (hypot.f64 re im))) re))))
50.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (sqrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
41.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
41.8b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
43.2b
(*.f64 1/2 (*.f64 (sqrt.f64 2) (sqrt.f64 im)))
41.4b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)) 2)) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
56.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3) re))))
45.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (/.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) (+.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) (+.f64 0 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
45.4b
(*.f64 1/2 (-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1))
54.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))))
51.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (-.f64 (fma.f64 1/18 (*.f64 (*.f64 (*.f64 re re) (cbrt.f64 2)) (cbrt.f64 (/.f64 -1 (pow.f64 im 5)))) (fma.f64 (cbrt.f64 (*.f64 im -1)) (cbrt.f64 2) (*.f64 4/81 (*.f64 (*.f64 (pow.f64 re 3) (cbrt.f64 2)) (cbrt.f64 (/.f64 -1 (pow.f64 im 8))))))) (*.f64 1/3 (*.f64 (*.f64 re (cbrt.f64 2)) (cbrt.f64 (/.f64 -1 (*.f64 im im)))))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
41.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (sqrt.f64 (hypot.f64 re im)) (+.f64 (sqrt.f64 (hypot.f64 re im)) (/.f64 re (sqrt.f64 (hypot.f64 re im))))))))
53.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))) re))))
42.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (+.f64 (cbrt.f64 (hypot.f64 re im)) (/.f64 re (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im))) re))))
54.1b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 (log.f64 (/.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2) (+.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 4/3) (+.f64 0 (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) 0))))) 1/2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
45.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (-.f64 re (fma.f64 1/2 (/.f64 (*.f64 re re) im) im)) 2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
45.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3))) 1)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
44.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (pow.f64 (cbrt.f64 re) 2) (+.f64 (cbrt.f64 re) (/.f64 (hypot.f64 re im) (pow.f64 (cbrt.f64 re) 2)))))))
46.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)) (sqrt.f64 (*.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 4))) (sqrt.f64 (cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)))))))
42.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re))))
48.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1) re))))
42.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
41.4b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) 2/3) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2/3))) 1/2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
56.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (/.f64 (pow.f64 (hypot.f64 re im) 3) (+.f64 (pow.f64 (hypot.f64 re im) 2) (+.f64 0 (*.f64 (hypot.f64 re im) 0)))) re))))
Compiler

Compiled 22421 to 15374 computations (31.4% saved)

localize14.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(pow.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)) 2)
1.1b
(+.f64 re (hypot.f64 re im))
2.2b
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2))
3.4b
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)

series85.0ms (0.8%)

Counts
1 → 24
Calls

1 calls:

85.0ms
(pow.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)) 2)

rewrite67.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
490×prod-diff_binary64
220×expm1-udef_binary64
220×log1p-udef_binary64
135×log1p-expm1-u_binary64
135×expm1-log1p-u_binary64
Counts
1 → 51
Calls

1 calls:

65.0ms
(pow.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)) 2)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01419
133213
2349613
3496213
000
100

simplify117.0ms (1.1%)

Algorithm
egg-herbie
Rules
410×rules-21_binary64
346×fma-neg_binary64
252×rules-7-rev_binary64
248×rules-20_binary64
233×rules-41_binary64
Counts
75 → 99
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01501408
110411328
244931214
349511131
449971131
548451131

prune830.0ms (7.5%)

Pruning

34 alts after pruning (33 fresh and 1 done)

PrunedKeptTotal
New6407647
Fresh42630
Picked011
Done000
Total64434678
Error
32.9b
Counts
678 → 34
Alt Table
StatusErrorProgram
59.8b
(*.f64 1/2 (sqrt.f64 (fma.f64 2 (sqrt.f64 2) 2)))
53.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 2)) 1/2)) re))))
43.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (expm1.f64 (log1p.f64 (hypot.f64 re im))) re))))
50.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (sqrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
41.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
41.8b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
43.2b
(*.f64 1/2 (*.f64 (sqrt.f64 2) (sqrt.f64 im)))
41.4b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)) 2)) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
63.9b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (-.f64 (fma.f64 1/18 (/.f64 (*.f64 (*.f64 re re) (exp.f64 (*.f64 1/3 (-.f64 (log.f64 2) (log.f64 (/.f64 -1 im)))))) (*.f64 im im)) (fma.f64 4/81 (/.f64 (*.f64 (pow.f64 re 3) (exp.f64 (*.f64 1/3 (-.f64 (log.f64 2) (log.f64 (/.f64 -1 im)))))) (pow.f64 im 3)) (exp.f64 (*.f64 1/3 (-.f64 (log.f64 2) (log.f64 (/.f64 -1 im))))))) (*.f64 1/3 (/.f64 (*.f64 re (exp.f64 (*.f64 1/3 (-.f64 (log.f64 2) (log.f64 (/.f64 -1 im)))))) im))) 2)) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
56.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3) re))))
45.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (/.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) (+.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) (+.f64 0 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
54.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))))
45.2b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (/.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) (+.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) (-.f64 0 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)))) 2)) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
45.4b
(*.f64 1/2 (-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1))
53.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))) re))))
42.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (+.f64 (cbrt.f64 (hypot.f64 re im)) (/.f64 re (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))))
42.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im))) re))))
54.1b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 (log.f64 (/.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2) (+.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 4/3) (+.f64 0 (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) 0))))) 1/2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
46.3b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2)) (sqrt.f64 (*.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 4))) (sqrt.f64 (cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)))))))
41.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (*.f64 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) 2/3) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2/3))) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
45.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 (-.f64 re (fma.f64 1/2 (/.f64 (*.f64 re re) im) im)) 2)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
44.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (pow.f64 (cbrt.f64 re) 2) (+.f64 (cbrt.f64 re) (/.f64 (hypot.f64 re im) (pow.f64 (cbrt.f64 re) 2)))))))
42.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re))))
48.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1) re))))
45.7b
(*.f64 1/2 (*.f64 (sqrt.f64 (-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3))) 1)) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
42.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
43.8b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 1/3 (-.f64 (log.f64 2) (log.f64 (/.f64 1 im))))) 2)) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
42.6b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 re (+.f64 1 (/.f64 (hypot.f64 re im) re))))))
41.7b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) 2)) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
56.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (/.f64 (pow.f64 (hypot.f64 re im) 3) (+.f64 (pow.f64 (hypot.f64 re im) 2) (+.f64 0 (*.f64 (hypot.f64 re im) 0)))) re))))
41.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (*.f64 (sqrt.f64 (hypot.f64 re im)) (+.f64 (sqrt.f64 (hypot.f64 re im)) (/.f64 re (sqrt.f64 (hypot.f64 re im))))))))
54.0b
(*.f64 1/2 (*.f64 (sqrt.f64 (pow.f64 (exp.f64 (*.f64 (log.f64 (/.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2) (+.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 4/3) (-.f64 0 (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3) 0))))) 1/2)) 2)) (sqrt.f64 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2/3)) 1/2)))))
Compiler

Compiled 31672 to 22582 computations (28.7% saved)

regimes4.2s (38.3%)

Accuracy

Total 4.9b remaining (39.7%)

Threshold costs 0b (0%)

Counts
355 → 2
Compiler

Compiled 74784 to 54493 computations (27.1% saved)

bsearch69.0ms (0.6%)

Steps
ItersRangePoint
8
-1.0315144708934782e+64
-6.930294750975624e+60
-3.9425870866783413e+62
Compiler

Compiled 3 to 2 computations (33.3% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02347
12347

end808.0ms (7.3%)

Remove

(sort re im)

Compiler

Compiled 1122 to 815 computations (27.4% saved)

Profiling

Loading profile data...