Details

Time bar (total: 10.2s)

analyze196.0ms (1.9%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
12.5%12.5%87.4%0.1%0%0%0%5
18.8%18.7%81.2%0.1%0%0%0%6
37.5%37.5%62.4%0.1%0%0%0%7
42.2%42.1%57.8%0.1%0%0%0%8
54.7%54.6%45.3%0.1%0%0%0%9
57.4%57.4%42.5%0.1%0%0%0%10
64.5%64.4%35.5%0.1%0%0%0%11
65.9%65.9%34%0.1%0%0%0%12
Compiler

Compiled 18 to 13 computations (27.8% saved)

sample1.6s (16.2%)

Results
816.0ms6327×body256valid
321.0ms661×body2048valid
291.0ms564×body4096valid
151.0ms442×body1024valid
54.0ms262×body512valid
Bogosity

preprocess16.0ms (0.2%)

Algorithm
egg-herbie
Rules
10×fma-def_binary64
*-commutative_binary64
distribute-lft-in_binary64
distribute-rgt-in_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01930
14530
25530
35930
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 im im) (*.f64 re re))) im))))
Outputs
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 im im) (*.f64 re re))) im))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 im (hypot.f64 re im)))))
Compiler

Compiled 19 to 14 computations (26.3% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
fma-def_binary64
*-commutative_binary64
+-commutative_binary64
distribute-lft-in_binary64
distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01315
12515
23415
33615
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
Outputs
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))

eval1.0ms (0%)

Compiler

Compiled 27 to 19 computations (29.6% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
13.3b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
37.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
13.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
Compiler

Compiled 29 to 21 computations (27.6% saved)

localize41.0ms (0.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
1.4b
(+.f64 re (hypot.f64 re im))
Compiler

Compiled 39 to 16 computations (59% saved)

series121.0ms (1.2%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
1.0ms
im
@0
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
1.0ms
re
@-inf
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
1.0ms
re
@-inf
(+.f64 re (hypot.f64 re im))
1.0ms
re
@0
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
1.0ms
im
@0
(+.f64 re (hypot.f64 re im))
Compiler

Compiled 7940 to 6275 computations (21% saved)

rewrite48.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
907×pow1_binary64
845×add-log-exp_binary64
844×log1p-expm1-u_binary64
844×expm1-log1p-u_binary64
827×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
117819
2236119
Stop Event
node limit
Counts
2 → 55
Calls
Call 1
Inputs
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 re re) (-.f64 re (hypot.f64 re im))) (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (/.f64 1 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))) (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 re (hypot.f64 re im)) (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (neg.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (neg.f64 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.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))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))

simplify44.0ms (0.4%)

Algorithm
egg-herbie
Rules
631×fma-neg_binary64
463×associate-*l*_binary64
414×associate-*r*_binary64
382×log-prod_binary64
347×div-sub_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0125971
1289824
2899694
34982668
Stop Event
node limit
Counts
55 → 66
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(-.f64 (/.f64 (*.f64 re re) (-.f64 re (hypot.f64 re im))) (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(*.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (/.f64 1 (-.f64 re (hypot.f64 re im))))
(/.f64 1 (/.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))) (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))))
(/.f64 1 (/.f64 (-.f64 re (hypot.f64 re im)) (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (neg.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (neg.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(/.f64 (neg.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (neg.f64 (-.f64 re (hypot.f64 re im))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(fma.f64 1 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.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))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
Outputs
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(-.f64 (/.f64 (*.f64 re re) (-.f64 re (hypot.f64 re im))) (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (/.f64 1 (-.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(/.f64 1 (/.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))) (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 1 (/.f64 (-.f64 re (hypot.f64 re im)) (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 re (hypot.f64 re im)))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(/.f64 (neg.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (neg.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (neg.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (neg.f64 (-.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(fma.f64 1 re (hypot.f64 re im))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(+.f64 (+.f64 (+.f64 1 re) (hypot.f64 re im)) -1)
(+.f64 (+.f64 re (hypot.f64 re im)) 0)
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

localize19.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
1.4b
(+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)
29.1b
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
Compiler

Compiled 77 to 19 computations (75.3% saved)

series109.0ms (1.1%)

Counts
3 → 0
Calls

18 calls:

TimeVariablePointExpression
1.0ms
re
@0
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
1.0ms
im
@0
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
1.0ms
im
@inf
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
1.0ms
im
@0
(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
0.0ms
im
@inf
(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
Compiler

Compiled 10780 to 8575 computations (20.5% saved)

rewrite66.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
541×log-prod_binary64
540×fma-def_binary64
404×pow-prod-down_binary64
298×pow2_binary64
265×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01123
124623
2342023
Stop Event
node limit
Counts
3 → 112
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
(+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)
(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4))) (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (hypot.f64 (pow.f64 im 3) (pow.f64 re 3)) (hypot.f64 (*.f64 re re) (sqrt.f64 (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 re im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 re im)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 im re)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (hypot.f64 re im) 1 re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (cbrt.f64 re) re)) (sqrt.f64 (pow.f64 (cbrt.f64 re) 2)) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 1 1/2) (hypot.f64 re im) re)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))))))

simplify62.0ms (0.6%)

Algorithm
egg-herbie
Rules
644×fma-def_binary64
485×distribute-rgt-in_binary64
433×distribute-lft-in_binary64
350×times-frac_binary64
201×*-commutative_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02411349
15241296
216911261
Stop Event
node limit
Counts
112 → 133
Calls
Call 1
Inputs
(+.f64 0 (hypot.f64 re im))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(*.f64 (hypot.f64 re im) 1)
(*.f64 1 (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(*.f64 (pow.f64 1 1/2) (hypot.f64 re im))
(/.f64 (sqrt.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4))) (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (hypot.f64 (pow.f64 im 3) (pow.f64 re 3)) (hypot.f64 (*.f64 re re) (sqrt.f64 (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2)))))
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)
(pow.f64 (hypot.f64 re im) 1)
(pow.f64 (pow.f64 (hypot.f64 re im) 4) 1/4)
(pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/6)
(pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
(pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)
(fabs.f64 (hypot.f64 re im))
(log.f64 (exp.f64 (hypot.f64 re im)))
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(hypot.f64 re im)
(hypot.f64 im re)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(exp.f64 (log.f64 (hypot.f64 re im)))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1/2))
(exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)
(pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))
(log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))
(log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))
(fma.f64 re 1 (hypot.f64 re im))
(fma.f64 (hypot.f64 re im) 1 re)
(fma.f64 1 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(fma.f64 (sqrt.f64 (*.f64 (cbrt.f64 re) re)) (sqrt.f64 (pow.f64 (cbrt.f64 re) 2)) (hypot.f64 re im))
(fma.f64 (pow.f64 1 1/2) (hypot.f64 re im) re)
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4) 1/4)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
(hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
Outputs
(+.f64 0 (hypot.f64 re im))
(hypot.f64 re im)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))))) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(*.f64 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))) 3)
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))
(*.f64 2 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(hypot.f64 re im)
(*.f64 (hypot.f64 re im) 1)
(hypot.f64 re im)
(*.f64 1 (hypot.f64 re im))
(hypot.f64 re im)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(hypot.f64 re im)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(*.f64 (pow.f64 1 1/2) (hypot.f64 re im))
(hypot.f64 re im)
(/.f64 (sqrt.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4))) (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (hypot.f64 (pow.f64 im 3) (pow.f64 re 3)) (hypot.f64 (*.f64 re re) (sqrt.f64 (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2)))))
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)
(hypot.f64 re im)
(pow.f64 (hypot.f64 re im) 1)
(hypot.f64 re im)
(pow.f64 (pow.f64 (hypot.f64 re im) 4) 1/4)
(pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/6)
(pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)
(hypot.f64 re im)
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
(hypot.f64 re im)
(pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)
(hypot.f64 re im)
(fabs.f64 (hypot.f64 re im))
(hypot.f64 re im)
(log.f64 (exp.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(hypot.f64 re im)
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(hypot.f64 re im)
(hypot.f64 re im)
(hypot.f64 im re)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(exp.f64 (log.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1/2))
(hypot.f64 re im)
(exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))
(hypot.f64 re im)
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 re (hypot.f64 re im))
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(+.f64 re (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 re (hypot.f64 re im))
(fma.f64 re 1 (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (hypot.f64 re im) 1 re)
(+.f64 re (hypot.f64 re im))
(fma.f64 1 re (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 (*.f64 (cbrt.f64 re) re)) (sqrt.f64 (pow.f64 (cbrt.f64 re) 2)) (hypot.f64 re im))
(fma.f64 (sqrt.f64 (*.f64 re (cbrt.f64 re))) (sqrt.f64 (pow.f64 (cbrt.f64 re) 2)) (hypot.f64 re im))
(fma.f64 (sqrt.f64 (*.f64 re (cbrt.f64 re))) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))
(fma.f64 (cbrt.f64 re) (sqrt.f64 (*.f64 re (cbrt.f64 re))) (hypot.f64 re im))
(fma.f64 (pow.f64 1 1/2) (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(*.f64 2 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6) 3)
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6) 3)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4) 1/4)
(pow.f64 (*.f64 4 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/4)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)
(pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 8) 1/6)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6) 3)
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 3/2)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
(hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))

eval69.0ms (0.7%)

Compiler

Compiled 3186 to 1768 computations (44.5% saved)

prune41.0ms (0.4%)

Pruning

16 alts after pruning (14 fresh and 2 done)

PrunedKeptTotal
New18514199
Fresh000
Picked011
Done011
Total18516201
Error
13.0b
Counts
201 → 16
Alt Table
Click to see full alt table
StatusErrorProgram
17.6b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3))
32.3b
(*.f64 1/2 (hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2))))
13.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2)))
15.5b
(*.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))))
14.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
15.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
19.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 re) (sqrt.f64 (*.f64 re (cbrt.f64 re))) (hypot.f64 re im)))))
15.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2) re))))
14.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
15.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
53.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (/.f64 (hypot.f64 (pow.f64 im 3) (pow.f64 re 3)) (hypot.f64 (*.f64 re re) (sqrt.f64 (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2))))) re))))
37.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
18.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re))))
46.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re))))
13.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
16.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))))
Compiler

Compiled 499 to 371 computations (25.7% saved)

localize13.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
0.3b
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
1.4b
(+.f64 re (hypot.f64 re im))
Compiler

Compiled 42 to 17 computations (59.5% saved)

series117.0ms (1.1%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
4.0ms
im
@0
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
1.0ms
re
@0
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
1.0ms
re
@-inf
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
1.0ms
im
@inf
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
1.0ms
re
@inf
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
Compiler

Compiled 10925 to 8660 computations (20.7% saved)

rewrite79.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
923×pow1_binary64
857×add-log-exp_binary64
856×log1p-expm1-u_binary64
856×expm1-log1p-u_binary64
837×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0921
119221
2238921
Stop Event
node limit
Counts
2 → 38
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) (*.f64 2 (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 2 (sqrt.f64 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) 1/2) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (sqrt.f64 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (sqrt.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 re) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))))))

simplify43.0ms (0.4%)

Algorithm
egg-herbie
Rules
511×log-prod_binary64
376×fma-def_binary64
318×exp-sum_binary64
310×fma-neg_binary64
290×exp-prod_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
095672
1192586
2580504
32819484
46615484
Stop Event
node limit
Counts
38 → 50
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2)
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(cbrt.f64 (pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3))
(cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) (*.f64 2 (sqrt.f64 2))))
(cbrt.f64 (*.f64 (*.f64 2 (sqrt.f64 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2)))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(-.f64 (+.f64 1 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 1)
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1)
(*.f64 1 (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) 1/2) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 1/2))
(/.f64 (sqrt.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (sqrt.f64 (-.f64 re (hypot.f64 re im))))
(/.f64 (sqrt.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (sqrt.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1/2)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 3)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) 2)
(fabs.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(log.f64 (exp.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2))
(hypot.f64 (sqrt.f64 re) (sqrt.f64 (hypot.f64 re im)))
(hypot.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 re))
(expm1.f64 (log1p.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(log1p.f64 (expm1.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(exp.f64 (log.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
Outputs
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3) 1/3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) (*.f64 2 (sqrt.f64 2))))
(cbrt.f64 (*.f64 2 (*.f64 (sqrt.f64 2) (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2))))
(cbrt.f64 (*.f64 2 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) (sqrt.f64 2))))
(cbrt.f64 (*.f64 (*.f64 2 (sqrt.f64 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2)))
(cbrt.f64 (*.f64 2 (*.f64 (sqrt.f64 2) (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2))))
(cbrt.f64 (*.f64 2 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) (sqrt.f64 2))))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(-.f64 (+.f64 1 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(*.f64 1 (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))
(*.f64 (fabs.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3/2)
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) 1/2) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 1/2))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2)) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))
(*.f64 (fabs.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3/2)
(/.f64 (sqrt.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (sqrt.f64 (-.f64 re (hypot.f64 re im))))
(/.f64 (sqrt.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (sqrt.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(/.f64 (hypot.f64 (pow.f64 (hypot.f64 re im) 3/2) (pow.f64 re 3/2)) (sqrt.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(/.f64 (hypot.f64 (pow.f64 re 3/2) (pow.f64 (hypot.f64 re im) 3/2)) (sqrt.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2) 1/3)
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(fabs.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(log.f64 (exp.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3/2))
(hypot.f64 (sqrt.f64 re) (sqrt.f64 (hypot.f64 re im)))
(hypot.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 re))
(expm1.f64 (log1p.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(log1p.f64 (expm1.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))
(exp.f64 (log.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 0)
(sqrt.f64 (+.f64 re (hypot.f64 re im)))

localize21.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.6b
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
1.4b
(+.f64 re (hypot.f64 re im))
3.2b
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
Compiler

Compiled 56 to 28 computations (50% saved)

series487.0ms (4.8%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
10.0ms
re
@-inf
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
8.0ms
im
@0
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
5.0ms
im
@0
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
5.0ms
re
@inf
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
4.0ms
im
@inf
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
Compiler

Compiled 45305 to 39725 computations (12.3% saved)

rewrite54.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
506×prod-diff_binary64
488×log-prod_binary64
293×pow-prod-down_binary64
287×pow2_binary64
214×pow-to-exp_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01126
125025
2297925
Stop Event
node limit
Counts
2 → 56
Calls
Call 1
Inputs
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (pow.f64 2 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 2 1/6) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/12 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (*.f64 (pow.f64 2 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6)) (pow.f64 2 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4)) 2))))))

simplify55.0ms (0.5%)

Algorithm
egg-herbie
Rules
455×exp-prod_binary64
422×log-prod_binary64
377×associate-/l*_binary64
348×exp-sum_binary64
344×sqr-pow_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0135968
1254927
2637927
31924927
44775927
Stop Event
node limit
Counts
56 → 67
Calls
Call 1
Inputs
(+.f64 0 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 1)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 1)
(*.f64 1 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (pow.f64 2 1/6))
(*.f64 (pow.f64 2 1/6) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(log.f64 (+.f64 1 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))
(cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(expm1.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(log1p.f64 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(exp.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 1))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 3/2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/12))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18)) 3))
(exp.f64 (*.f64 (*.f64 1/12 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2))
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (*.f64 (pow.f64 2 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6)) (pow.f64 2 1/6))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2)) 1/3))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4)) 2))
Outputs
(+.f64 0 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(*.f64 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))) 3)
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 1)
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 1)
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 1 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (pow.f64 2 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 (pow.f64 2 1/6) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(log.f64 (+.f64 1 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(expm1.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(log1p.f64 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 1))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 3/2))
(pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2)
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))
(cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/12))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18)) 3))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 1/12 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2))
(sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (*.f64 (pow.f64 2 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))
(*.f64 (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6)) (pow.f64 2 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2)) 1/3))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4)) 2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

localize24.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(pow.f64 (hypot.f64 re im) 3)
0.0b
(sqrt.f64 (*.f64 2 (+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re)))
1.4b
(+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re)
40.4b
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
Compiler

Compiled 63 to 37 computations (41.3% saved)

series577.0ms (5.7%)

Counts
4 → 0
Calls

24 calls:

TimeVariablePointExpression
9.0ms
im
@0
(+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re)
6.0ms
im
@0
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
6.0ms
im
@0
(sqrt.f64 (*.f64 2 (+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re)))
5.0ms
re
@-inf
(+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re)
5.0ms
re
@0
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
Compiler

Compiled 47405 to 40385 computations (14.8% saved)

rewrite62.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
649×prod-diff_binary64
463×log-prod_binary64
302×pow-prod-down_binary64
268×fma-def_binary64
258×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01130
124530
2280130
Stop Event
node limit
Counts
4 → 141
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re)
(sqrt.f64 (*.f64 2 (+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re)))
(pow.f64 (hypot.f64 re im) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 9) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (hypot.f64 re im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 re im)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 im re)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (hypot.f64 re im))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 (hypot.f64 re im)))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (hypot.f64 re im))) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (+.f64 re (hypot.f64 re im)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (hypot.f64 re im) 1 re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3/2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/4 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (hypot.f64 re im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 re im) (pow.f64 (hypot.f64 re im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 re im) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (hypot.f64 re im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 re im) 2) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 5/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 re im) 3/2) (pow.f64 (hypot.f64 re im) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 re im) 5/2) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (hypot.f64 re im) 2) 1) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (hypot.f64 re im) (cbrt.f64 (hypot.f64 re im))) 2) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (hypot.f64 re im) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (hypot.f64 re im) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 re im) 9))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (hypot.f64 re im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 9)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3/2 (log.f64 (hypot.f64 re im))) 2))))))

simplify68.0ms (0.7%)

Algorithm
egg-herbie
Rules
819×fma-def_binary64
759×fma-neg_binary64
357×times-frac_binary64
236×*-commutative_binary64
220×log-pow_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02984294968786
16441446
219961446
372291446
Stop Event
node limit
Counts
141 → 161
Calls
Call 1
Inputs
(+.f64 0 (hypot.f64 re im))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(*.f64 (hypot.f64 re im) 1)
(*.f64 1 (hypot.f64 re im))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(pow.f64 (hypot.f64 re im) 1)
(pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)
(pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/6)
(pow.f64 (pow.f64 (hypot.f64 re im) 9) 1/9)
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)
(pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2)
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
(pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)
(sqrt.f64 (pow.f64 (hypot.f64 re im) 2))
(log.f64 (exp.f64 (hypot.f64 re im)))
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(hypot.f64 re im)
(hypot.f64 im re)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(exp.f64 (log.f64 (hypot.f64 re im)))
(exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (hypot.f64 re im))) 1/3))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 (hypot.f64 re im)))) 3/2))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1/2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))) 3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (hypot.f64 re im))) 2))
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)
(pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))
(log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))
(log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (+.f64 re (hypot.f64 re im)))) 1/3))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))) 3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 2))
(fma.f64 re 1 (hypot.f64 re im))
(fma.f64 (hypot.f64 re im) 1 re)
(fma.f64 1 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2) 1/4)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
(hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(exp.f64 (*.f64 (*.f64 3/2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 3))
(exp.f64 (*.f64 (*.f64 1/4 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))
(+.f64 0 (pow.f64 (hypot.f64 re im) 3))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 3))) 1)
(*.f64 (hypot.f64 re im) (pow.f64 (hypot.f64 re im) 2))
(*.f64 (pow.f64 (hypot.f64 re im) 3) 1)
(*.f64 1 (pow.f64 (hypot.f64 re im) 3))
(*.f64 (pow.f64 (hypot.f64 re im) 2) (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 5/2))
(*.f64 (pow.f64 (hypot.f64 re im) 3/2) (pow.f64 (hypot.f64 re im) 3/2))
(*.f64 (pow.f64 (hypot.f64 re im) 5/2) (sqrt.f64 (hypot.f64 re im)))
(*.f64 (*.f64 (pow.f64 (hypot.f64 re im) 2) 1) (hypot.f64 re im))
(*.f64 (pow.f64 (*.f64 (hypot.f64 re im) (cbrt.f64 (hypot.f64 re im))) 2) (cbrt.f64 (hypot.f64 re im)))
(sqrt.f64 (pow.f64 (hypot.f64 re im) 6))
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))
(log.f64 (+.f64 1 (expm1.f64 (pow.f64 (hypot.f64 re im) 3))))
(cbrt.f64 (pow.f64 (hypot.f64 re im) 9))
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 3)))
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 3)))
(exp.f64 (*.f64 3 (log.f64 (hypot.f64 re im))))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (hypot.f64 re im))) 1))
(exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 9)) 1/3))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 3/2))
(exp.f64 (*.f64 (*.f64 3/2 (log.f64 (hypot.f64 re im))) 2))
Outputs
(+.f64 0 (hypot.f64 re im))
(hypot.f64 re im)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))))) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(*.f64 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))) 3)
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))
(*.f64 2 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(hypot.f64 re im)
(*.f64 (hypot.f64 re im) 1)
(hypot.f64 re im)
(*.f64 1 (hypot.f64 re im))
(hypot.f64 re im)
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(hypot.f64 re im)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(pow.f64 (hypot.f64 re im) 1)
(hypot.f64 re im)
(pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)
(hypot.f64 re im)
(pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/6)
(pow.f64 (pow.f64 (hypot.f64 re im) 9) 1/9)
(*.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 9) 1/18) (pow.f64 (pow.f64 (hypot.f64 re im) 9) 1/18))
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)
(hypot.f64 re im)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)
(hypot.f64 re im)
(pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2)
(hypot.f64 re im)
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
(hypot.f64 re im)
(pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)
(*.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 1/3) (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 1/3))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3/2)) (cbrt.f64 (pow.f64 (hypot.f64 re im) 3/2)))
(sqrt.f64 (pow.f64 (hypot.f64 re im) 2))
(hypot.f64 re im)
(log.f64 (exp.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(hypot.f64 re im)
(hypot.f64 re im)
(hypot.f64 im re)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(exp.f64 (log.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))
(hypot.f64 re im)
(exp.f64 (*.f64 (*.f64 3 (log.f64 (hypot.f64 re im))) 1/3))
(hypot.f64 re im)
(exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 (hypot.f64 re im)))) 3/2))
(hypot.f64 re im)
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1/2))
(hypot.f64 re im)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))) 3))
(hypot.f64 re im)
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (hypot.f64 re im))) 2))
(hypot.f64 re im)
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 re (hypot.f64 re im))
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(+.f64 re (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 re (hypot.f64 re im))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (+.f64 re (hypot.f64 re im)))) 1/3))
(+.f64 re (hypot.f64 re im))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im)))) 3))
(+.f64 re (hypot.f64 re im))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im)))) 2))
(+.f64 re (hypot.f64 re im))
(fma.f64 re 1 (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (hypot.f64 re im) 1 re)
(+.f64 re (hypot.f64 re im))
(fma.f64 1 re (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(*.f64 2 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 2) 1/4)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 2) 1/4)
(pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4) 1/4)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)
(pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 8) 1/6)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 3/2)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
(hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (*.f64 3/2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 3))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (*.f64 1/4 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(+.f64 0 (pow.f64 (hypot.f64 re im) 3))
(pow.f64 (hypot.f64 re im) 3)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))
(*.f64 2 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))))
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 3))) 1)
(pow.f64 (hypot.f64 re im) 3)
(*.f64 (hypot.f64 re im) (pow.f64 (hypot.f64 re im) 2))
(pow.f64 (hypot.f64 re im) 3)
(*.f64 (pow.f64 (hypot.f64 re im) 3) 1)
(pow.f64 (hypot.f64 re im) 3)
(*.f64 1 (pow.f64 (hypot.f64 re im) 3))
(pow.f64 (hypot.f64 re im) 3)
(*.f64 (pow.f64 (hypot.f64 re im) 2) (hypot.f64 re im))
(pow.f64 (hypot.f64 re im) 3)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 3)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 5/2))
(*.f64 (pow.f64 (hypot.f64 re im) 3/2) (pow.f64 (hypot.f64 re im) 3/2))
(pow.f64 (hypot.f64 re im) 3)
(*.f64 (pow.f64 (hypot.f64 re im) 5/2) (sqrt.f64 (hypot.f64 re im)))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 5/2))
(*.f64 (*.f64 (pow.f64 (hypot.f64 re im) 2) 1) (hypot.f64 re im))
(pow.f64 (hypot.f64 re im) 3)
(*.f64 (pow.f64 (*.f64 (hypot.f64 re im) (cbrt.f64 (hypot.f64 re im))) 2) (cbrt.f64 (hypot.f64 re im)))
(pow.f64 (hypot.f64 re im) 3)
(sqrt.f64 (pow.f64 (hypot.f64 re im) 6))
(pow.f64 (hypot.f64 re im) 3)
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 3)))
(pow.f64 (hypot.f64 re im) 3)
(log.f64 (+.f64 1 (expm1.f64 (pow.f64 (hypot.f64 re im) 3))))
(pow.f64 (hypot.f64 re im) 3)
(cbrt.f64 (pow.f64 (hypot.f64 re im) 9))
(pow.f64 (hypot.f64 re im) 3)
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 3)))
(pow.f64 (hypot.f64 re im) 3)
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 3)))
(pow.f64 (hypot.f64 re im) 3)
(exp.f64 (*.f64 3 (log.f64 (hypot.f64 re im))))
(pow.f64 (hypot.f64 re im) 3)
(exp.f64 (*.f64 (*.f64 3 (log.f64 (hypot.f64 re im))) 1))
(pow.f64 (hypot.f64 re im) 3)
(exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 9)) 1/3))
(pow.f64 (hypot.f64 re im) 3)
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 3/2))
(pow.f64 (hypot.f64 re im) 3)
(exp.f64 (*.f64 (*.f64 3/2 (log.f64 (hypot.f64 re im))) 2))
(pow.f64 (hypot.f64 re im) 3)

localize19.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
Compiler

Compiled 51 to 31 computations (39.2% saved)

series178.0ms (1.7%)

Counts
1 → 0
Calls

6 calls:

TimeVariablePointExpression
10.0ms
im
@inf
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
3.0ms
im
@0
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
3.0ms
re
@inf
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
2.0ms
re
@0
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
1.0ms
re
@-inf
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
Compiler

Compiled 11530 to 9820 computations (14.8% saved)

rewrite64.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
867×pow1_binary64
795×add-log-exp_binary64
795×log1p-expm1-u_binary64
795×expm1-log1p-u_binary64
775×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01015
120212
2226912
Stop Event
node limit
Counts
1 → 17
Calls
Call 1
Inputs
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) (cbrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))))))

simplify44.0ms (0.4%)

Algorithm
egg-herbie
Rules
553×fma-neg_binary64
420×log-prod_binary64
286×*-commutative_binary64
276×fma-def_binary64
274×associate-*l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
037306
179255
2335204
32414204
45460204
57594204
Stop Event
node limit
Counts
17 → 20
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 1)
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 1)
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) (cbrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(*.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 1)
(pow.f64 (pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 3) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 3)
(pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 2)
(pow.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)) 1/2)
(sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(cbrt.f64 (pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 3))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
Outputs
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 1)
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 1)
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) (cbrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 1)
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 3) 1/3)
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 3)
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (sqrt.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))) 2)
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)) 1/2)
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re))) 3))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 (hypot.f64 re im) re)))))
(+.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) -1)
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))

localize23.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))
0.5b
(pow.f64 (cbrt.f64 re) 2)
0.6b
(cbrt.f64 re)
14.6b
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
Compiler

Compiled 65 to 30 computations (53.8% saved)

series146.0ms (1.4%)

Counts
4 → 0
Calls

18 calls:

TimeVariablePointExpression
3.0ms
im
@0
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))
1.0ms
re
@0
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))
1.0ms
re
@-inf
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
1.0ms
im
@inf
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))
1.0ms
im
@0
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
Compiler

Compiled 12995 to 10385 computations (20.1% saved)

rewrite96.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
836×pow1_binary64
771×add-log-exp_binary64
771×log1p-expm1-u_binary64
771×expm1-log1p-u_binary64
751×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01028
120328
2222528
Stop Event
node limit
Counts
4 → 78
Calls
Call 1
Inputs
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(cbrt.f64 re)
(pow.f64 (cbrt.f64 re) 2)
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 re)) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 re 1/6) (pow.f64 re 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 re) 1/3) (pow.f64 (sqrt.f64 re) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 re 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 re) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 re)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 re 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 re)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 re) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 re) (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 re) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (*.f64 re (cbrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (*.f64 (cbrt.f64 (cbrt.f64 re)) (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 re) (pow.f64 re 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 re 1/6) (*.f64 (pow.f64 re 1/6) (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)) (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 re (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 re re))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (cbrt.f64 re))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))))

simplify46.0ms (0.4%)

Algorithm
egg-herbie
Rules
767×fma-def_binary64
615×distribute-rgt-in_binary64
570×distribute-lft-in_binary64
383×exp-prod_binary64
335×log-prod_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01531002
1314861
21081726
33826685
Stop Event
node limit
Counts
78 → 102
Calls
Call 1
Inputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(-.f64 (+.f64 1 (cbrt.f64 re)) 1)
(*.f64 (cbrt.f64 re) 1)
(*.f64 1 (cbrt.f64 re))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (cbrt.f64 (cbrt.f64 re)) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))
(*.f64 (pow.f64 re 1/6) (pow.f64 re 1/6))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 re))
(*.f64 (pow.f64 (sqrt.f64 re) 1/3) (pow.f64 (sqrt.f64 re) 1/3))
(pow.f64 re 1/3)
(pow.f64 (cbrt.f64 re) 1)
(pow.f64 (pow.f64 (cbrt.f64 re) 2) 1/2)
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 3)
(pow.f64 (pow.f64 re 1/6) 2)
(sqrt.f64 (pow.f64 (cbrt.f64 re) 2))
(fabs.f64 (cbrt.f64 re))
(log.f64 (exp.f64 (cbrt.f64 re)))
(expm1.f64 (log1p.f64 (cbrt.f64 re)))
(log1p.f64 (expm1.f64 (cbrt.f64 re)))
(exp.f64 (log.f64 (cbrt.f64 re)))
(-.f64 (+.f64 1 (pow.f64 (cbrt.f64 re) 2)) 1)
(*.f64 (cbrt.f64 re) (cbrt.f64 re))
(*.f64 (pow.f64 (cbrt.f64 re) 2) 1)
(*.f64 1 (pow.f64 (cbrt.f64 re) 2))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (*.f64 re (cbrt.f64 re))))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (*.f64 (cbrt.f64 (cbrt.f64 re)) (cbrt.f64 re)))
(*.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))
(*.f64 (sqrt.f64 re) (pow.f64 re 1/6))
(*.f64 (pow.f64 re 1/6) (*.f64 (pow.f64 re 1/6) (cbrt.f64 re)))
(*.f64 (*.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)) (cbrt.f64 (cbrt.f64 re)))
(sqrt.f64 (*.f64 re (cbrt.f64 re)))
(log.f64 (exp.f64 (pow.f64 (cbrt.f64 re) 2)))
(cbrt.f64 (*.f64 re re))
(expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 re) 2)))
(log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 re) 2)))
(exp.f64 (*.f64 2 (log.f64 (cbrt.f64 re))))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1/2))
(pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
Outputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (cbrt.f64 re)) 1)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (cbrt.f64 re) 1)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 1 (cbrt.f64 re))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (cbrt.f64 (cbrt.f64 re)) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 re 1/6) (pow.f64 re 1/6))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))) (fabs.f64 (cbrt.f64 (cbrt.f64 re))))
(*.f64 (cbrt.f64 (cbrt.f64 re)) (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 re))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 (sqrt.f64 re) 1/3) (pow.f64 (sqrt.f64 re) 1/3))
(*.f64 (cbrt.f64 (sqrt.f64 re)) (cbrt.f64 (sqrt.f64 re)))
(pow.f64 (pow.f64 (sqrt.f64 re) 1/6) 4)
(pow.f64 re 1/3)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(pow.f64 (cbrt.f64 re) 1)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(pow.f64 (pow.f64 (cbrt.f64 re) 2) 1/2)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 3)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(pow.f64 (pow.f64 re 1/6) 2)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(sqrt.f64 (pow.f64 (cbrt.f64 re) 2))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(fabs.f64 (cbrt.f64 re))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(log.f64 (exp.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(expm1.f64 (log1p.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(log1p.f64 (expm1.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(exp.f64 (log.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(-.f64 (+.f64 1 (pow.f64 (cbrt.f64 re) 2)) 1)
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(*.f64 (cbrt.f64 re) (cbrt.f64 re))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(*.f64 (pow.f64 (cbrt.f64 re) 2) 1)
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(*.f64 1 (pow.f64 (cbrt.f64 re) 2))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (*.f64 re (cbrt.f64 re))))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (*.f64 (cbrt.f64 (cbrt.f64 re)) (cbrt.f64 re)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(*.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (*.f64 re (cbrt.f64 re))))
(*.f64 (sqrt.f64 re) (pow.f64 re 1/6))
(*.f64 (pow.f64 re 1/6) (sqrt.f64 re))
(*.f64 (pow.f64 re 1/6) (*.f64 (pow.f64 re 1/6) (cbrt.f64 re)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(*.f64 (*.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)) (cbrt.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(sqrt.f64 (*.f64 re (cbrt.f64 re)))
(log.f64 (exp.f64 (pow.f64 (cbrt.f64 re) 2)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(cbrt.f64 (*.f64 re re))
(expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 re) 2)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 re) 2)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(exp.f64 (*.f64 2 (log.f64 (cbrt.f64 re))))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 re) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 re) 2) 0)
(pow.f64 (cbrt.f64 re) 2)
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

eval144.0ms (1.4%)

Compiler

Compiled 8526 to 4834 computations (43.3% saved)

prune148.0ms (1.5%)

Pruning

27 alts after pruning (20 fresh and 7 done)

PrunedKeptTotal
New49112503
Fresh189
Picked011
Done066
Total49227519
Error
13.0b
Counts
519 → 27
Alt Table
Click to see full alt table
StatusErrorProgram
19.2b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3))
19.1b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)) 2) 1/6) 3))
19.2b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3))
17.6b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3))
32.3b
(*.f64 1/2 (hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2))))
15.1b
(*.f64 1/2 (*.f64 (sqrt.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))) (sqrt.f64 2)))
13.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2)))
15.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (cbrt.f64 re) (hypot.f64 re im)))))
15.5b
(*.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))))
15.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) (hypot.f64 re im)))))
14.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im)))))
14.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
15.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
19.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (*.f64 re (cbrt.f64 re))) (cbrt.f64 re) (hypot.f64 re im)))))
25.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im)))))
33.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re))))
15.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2) re))))
14.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
15.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
53.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (/.f64 (hypot.f64 (pow.f64 im 3) (pow.f64 re 3)) (hypot.f64 (*.f64 re re) (sqrt.f64 (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2))))) re))))
37.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
18.6b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (*.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))) 3)) re))))
18.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re))))
46.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re))))
13.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
16.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))))
17.5b
(*.f64 1/2 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 3)))
Compiler

Compiled 834 to 617 computations (26% saved)

localize27.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))))
0.0b
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))
0.5b
(pow.f64 (cbrt.f64 re) 2)
0.6b
(cbrt.f64 re)
Compiler

Compiled 72 to 31 computations (56.9% saved)

series110.0ms (1.1%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
2.0ms
im
@0
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))))
1.0ms
re
@0
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))))
1.0ms
im
@inf
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))))
1.0ms
im
@-inf
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))))
1.0ms
re
@-inf
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))
Compiler

Compiled 9645 to 7800 computations (19.1% saved)

rewrite49.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
865×pow1_binary64
799×add-log-exp_binary64
799×log1p-expm1-u_binary64
799×expm1-log1p-u_binary64
779×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01139
122419
2254519
Stop Event
node limit
Counts
2 → 42
Calls
Call 1
Inputs
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))))

simplify37.0ms (0.4%)

Algorithm
egg-herbie
Rules
700×distribute-rgt-in_binary64
673×distribute-lft-in_binary64
665×fma-def_binary64
361×associate-*l*_binary64
359×log-prod_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
091615
1206564
2671518
33476480
Stop Event
node limit
Counts
42 → 55
Calls
Call 1
Inputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1/2))
(pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
Outputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

localize17.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))
1.4b
(+.f64 re (hypot.f64 re im))
4.5b
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
Compiler

Compiled 58 to 18 computations (69% saved)

series80.0ms (0.8%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
1.0ms
im
@inf
(sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))
0.0ms
im
@0
(sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))
0.0ms
im
@-inf
(sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))
0.0ms
im
@0
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
0.0ms
re
@-inf
(sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))
Compiler

Compiled 7940 to 6275 computations (21% saved)

rewrite53.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
932×pow1_binary64
865×add-log-exp_binary64
864×log1p-expm1-u_binary64
864×expm1-log1p-u_binary64
845×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01019
119619
2238819
Stop Event
node limit
Counts
2 → 60
Calls
Call 1
Inputs
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (+.f64 re (hypot.f64 re im)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 re re) (-.f64 re (hypot.f64 re im))) (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (/.f64 1 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))) (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 re (hypot.f64 re im)) (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (neg.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (neg.f64 (-.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))) 2)) (cbrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (+.f64 re (hypot.f64 re im))))) (sqrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.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))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))

simplify52.0ms (0.5%)

Algorithm
egg-herbie
Rules
593×fma-neg_binary64
438×associate-*l*_binary64
394×associate-*r*_binary64
359×log-prod_binary64
321×div-sub_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0136896
1309833
2934787
34792761
Stop Event
node limit
Counts
60 → 69
Calls
Call 1
Inputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(+.f64 1 (-.f64 (+.f64 re (hypot.f64 re im)) 1))
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(-.f64 (/.f64 (*.f64 re re) (-.f64 re (hypot.f64 re im))) (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(*.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (/.f64 1 (-.f64 re (hypot.f64 re im))))
(/.f64 1 (/.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))) (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))))
(/.f64 1 (/.f64 (-.f64 re (hypot.f64 re im)) (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (neg.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (neg.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(/.f64 (neg.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (neg.f64 (-.f64 re (hypot.f64 re im))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(pow.f64 (exp.f64 1) (log.f64 (+.f64 re (hypot.f64 re im))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))) 2)) (cbrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (+.f64 re (hypot.f64 re im))))) (sqrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(fma.f64 1 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(fma.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (cbrt.f64 (hypot.f64 re im)) re)
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.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))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
Outputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(+.f64 1 (-.f64 (+.f64 re (hypot.f64 re im)) 1))
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 re (hypot.f64 re im))
(-.f64 (/.f64 (*.f64 re re) (-.f64 re (hypot.f64 re im))) (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (/.f64 1 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(*.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (/.f64 1 (-.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(/.f64 1 (/.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))) (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(/.f64 1 (/.f64 (-.f64 re (hypot.f64 re im)) (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))))
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 re (hypot.f64 re im)))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(/.f64 (neg.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3))) (neg.f64 (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re)))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) 1) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(/.f64 (neg.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2))) (neg.f64 (-.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(+.f64 re (hypot.f64 re im))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(pow.f64 (exp.f64 1) (log.f64 (+.f64 re (hypot.f64 re im))))
(pow.f64 (E.f64) (log.f64 (+.f64 re (hypot.f64 re im))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))) 2)) (cbrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (+.f64 re (hypot.f64 re im))))) (sqrt.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(fma.f64 1 re (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (cbrt.f64 (hypot.f64 re im)) re)
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

localize50.0ms (0.5%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re)))
14.8b
(+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re)
23.4b
(pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)
Compiler

Compiled 69 to 43 computations (37.7% saved)

series550.0ms (5.4%)

Counts
3 → 0
Calls

18 calls:

TimeVariablePointExpression
14.0ms
im
@-inf
(sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re)))
7.0ms
im
@0
(pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)
5.0ms
re
@0
(pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)
5.0ms
im
@inf
(pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)
5.0ms
re
@inf
(pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)
Compiler

Compiled 41405 to 36385 computations (12.1% saved)

rewrite60.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
642×prod-diff_binary64
487×log-prod_binary64
295×pow-prod-down_binary64
287×pow2_binary64
243×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01223
127423
2316323
Stop Event
node limit
Counts
3 → 100
Calls
Call 1
Inputs
(pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3)
(+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re)
(sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 2/3) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (hypot.f64 re im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 re im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 re im)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 im re)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 re 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (hypot.f64 re im) 1 re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 1 2/3) (hypot.f64 re im) re)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))))))

simplify57.0ms (0.6%)

Algorithm
egg-herbie
Rules
727×div-sub_binary64
496×fma-neg_binary64
411×distribute-rgt-in_binary64
368×distribute-lft-in_binary64
333×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02091194
14421144
213011111
359271111
Stop Event
node limit
Counts
100 → 114
Calls
Call 1
Inputs
(+.f64 0 (hypot.f64 re im))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(*.f64 (hypot.f64 re im) 1)
(*.f64 1 (hypot.f64 re im))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(*.f64 (pow.f64 1 2/3) (hypot.f64 re im))
(sqrt.f64 (pow.f64 (hypot.f64 re im) 2))
(log.f64 (exp.f64 (hypot.f64 re im)))
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(hypot.f64 re im)
(hypot.f64 im re)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(exp.f64 (log.f64 (hypot.f64 re im)))
(exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)
(pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))
(log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))
(log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))
(fma.f64 re 1 (hypot.f64 re im))
(fma.f64 (hypot.f64 re im) 1 re)
(fma.f64 1 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(fma.f64 (pow.f64 1 2/3) (hypot.f64 re im) re)
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4) 1/4)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
(hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
Outputs
(+.f64 0 (hypot.f64 re im))
(hypot.f64 re im)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))) 2)) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im))))) (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))))
(*.f64 (log.f64 (cbrt.f64 (exp.f64 (hypot.f64 re im)))) 3)
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))) (log.f64 (sqrt.f64 (exp.f64 (hypot.f64 re im)))))
(hypot.f64 re im)
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(hypot.f64 re im)
(*.f64 (hypot.f64 re im) 1)
(hypot.f64 re im)
(*.f64 1 (hypot.f64 re im))
(hypot.f64 re im)
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(hypot.f64 re im)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(*.f64 (pow.f64 1 2/3) (hypot.f64 re im))
(hypot.f64 re im)
(sqrt.f64 (pow.f64 (hypot.f64 re im) 2))
(hypot.f64 re im)
(log.f64 (exp.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(hypot.f64 re im)
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(hypot.f64 re im)
(hypot.f64 re im)
(hypot.f64 im re)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(exp.f64 (log.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 1))
(hypot.f64 re im)
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 re (hypot.f64 re im))
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(+.f64 re (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 1 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(pow.f64 (/.f64 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) -1)
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(pow.f64 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) -1)
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (exp.f64 (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (exp.f64 re) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 re)) (+.f64 1 (expm1.f64 (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (exp.f64 re)))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (exp.f64 (hypot.f64 re im)) (+.f64 1 (expm1.f64 re))))
(+.f64 re (hypot.f64 re im))
(log.f64 (*.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))) (+.f64 1 (expm1.f64 re))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (*.f64 (log.f64 (+.f64 re (hypot.f64 re im))) 1))
(+.f64 re (hypot.f64 re im))
(fma.f64 re 1 (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (hypot.f64 re im) 1 re)
(+.f64 re (hypot.f64 re im))
(fma.f64 1 re (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 2) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 1 2/3) (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/12) 6)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/12) 6)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4) 1/4)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3) 1/6)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3) 1/6)
(pow.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 8) 1/6)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 3/2)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3)
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/6))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/12) 6)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2)))
(hypot.f64 (sqrt.f64 (*.f64 re 2)) (sqrt.f64 (*.f64 (hypot.f64 re im) 2)))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))))
0.6b
(cbrt.f64 re)
14.7b
(fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))
31.4b
(cbrt.f64 (*.f64 re re))
Compiler

Compiled 68 to 19 computations (72.1% saved)

series128.0ms (1.3%)

Counts
3 → 0
Calls

15 calls:

TimeVariablePointExpression
13.0ms
im
@0
(fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))
2.0ms
im
@0
(sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))))
1.0ms
im
@inf
(sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))))
1.0ms
re
@0
(sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))))
1.0ms
im
@-inf
(sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))))
Compiler

Compiled 10065 to 7910 computations (21.4% saved)

rewrite51.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
889×pow1_binary64
819×add-log-exp_binary64
819×log1p-expm1-u_binary64
819×expm1-log1p-u_binary64
796×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01125
121725
2236125
Stop Event
node limit
Counts
3 → 64
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 re re))
(fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))
(sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 re re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 re re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 re) (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (cbrt.f64 (*.f64 re (cbrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (*.f64 (cbrt.f64 (cbrt.f64 re)) (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re))) (cbrt.f64 (cbrt.f64 (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 re 1/6) (*.f64 (pow.f64 re 1/6) (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 re) (pow.f64 re 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 re re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 re (cbrt.f64 re)) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 re) (cbrt.f64 (cbrt.f64 (*.f64 re re)))) (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 re 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 re re) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 re re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 re) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 re (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 re re))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.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))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))

simplify67.0ms (0.7%)

Algorithm
egg-herbie
Rules
788×fma-def_binary64
450×log-prod_binary64
420×associate-*l*_binary64
375×associate-*r*_binary64
339×fma-neg_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0133882
1283798
2867719
34172681
Stop Event
node limit
Counts
64 → 84
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (cbrt.f64 (*.f64 re re))) 1)
(*.f64 (cbrt.f64 (*.f64 re re)) 1)
(*.f64 (cbrt.f64 re) (cbrt.f64 re))
(*.f64 1 (cbrt.f64 (*.f64 re re)))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (cbrt.f64 (*.f64 re (cbrt.f64 re))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (*.f64 (cbrt.f64 (cbrt.f64 re)) (cbrt.f64 re)))
(*.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re))) (cbrt.f64 (cbrt.f64 (*.f64 re re))))
(*.f64 (pow.f64 re 1/6) (*.f64 (pow.f64 re 1/6) (cbrt.f64 re)))
(*.f64 (sqrt.f64 re) (pow.f64 re 1/6))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 re re)))
(*.f64 (pow.f64 (*.f64 re (cbrt.f64 re)) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 re re))))
(*.f64 (*.f64 (cbrt.f64 re) (cbrt.f64 (cbrt.f64 (*.f64 re re)))) (cbrt.f64 (cbrt.f64 re)))
(pow.f64 re 2/3)
(pow.f64 (*.f64 re re) 1/3)
(pow.f64 (cbrt.f64 (*.f64 re re)) 1)
(pow.f64 (cbrt.f64 re) 2)
(pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) 3)
(sqrt.f64 (*.f64 re (cbrt.f64 re)))
(log.f64 (exp.f64 (cbrt.f64 (*.f64 re re))))
(expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 re re))))
(log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 re re))))
(exp.f64 (log.f64 (cbrt.f64 (*.f64 re re))))
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.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))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
Outputs
(-.f64 (+.f64 1 (cbrt.f64 (*.f64 re re))) 1)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(*.f64 (cbrt.f64 (*.f64 re re)) 1)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(*.f64 (cbrt.f64 re) (cbrt.f64 re))
(pow.f64 (cbrt.f64 re) 2)
(*.f64 1 (cbrt.f64 (*.f64 re re)))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (cbrt.f64 (*.f64 re (cbrt.f64 re))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (*.f64 (cbrt.f64 (cbrt.f64 re)) (cbrt.f64 re)))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (*.f64 (cbrt.f64 re) (cbrt.f64 (cbrt.f64 re))))
(*.f64 (cbrt.f64 re) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (cbrt.f64 (cbrt.f64 re))))
(*.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re))) (cbrt.f64 (cbrt.f64 (*.f64 re re))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (cbrt.f64 (*.f64 re (cbrt.f64 re))))
(*.f64 (pow.f64 re 1/6) (*.f64 (pow.f64 re 1/6) (cbrt.f64 re)))
(pow.f64 (cbrt.f64 re) 2)
(*.f64 (sqrt.f64 re) (pow.f64 re 1/6))
(*.f64 (pow.f64 re 1/6) (sqrt.f64 re))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 re re)))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(*.f64 (pow.f64 (*.f64 re (cbrt.f64 re)) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 re re))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (cbrt.f64 (*.f64 re (cbrt.f64 re))))
(*.f64 (*.f64 (cbrt.f64 re) (cbrt.f64 (cbrt.f64 (*.f64 re re)))) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (*.f64 (cbrt.f64 re) (cbrt.f64 (cbrt.f64 re))))
(*.f64 (cbrt.f64 re) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) (cbrt.f64 (cbrt.f64 re))))
(pow.f64 re 2/3)
(pow.f64 (cbrt.f64 re) 2)
(pow.f64 (*.f64 re re) 1/3)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(pow.f64 (cbrt.f64 (*.f64 re re)) 1)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(pow.f64 (cbrt.f64 re) 2)
(pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) 3)
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(sqrt.f64 (*.f64 re (cbrt.f64 re)))
(log.f64 (exp.f64 (cbrt.f64 (*.f64 re re))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 re re))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 re re))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(exp.f64 (log.f64 (cbrt.f64 (*.f64 re re))))
(+.f64 1 (-.f64 (cbrt.f64 (*.f64 re re)) 1))
(+.f64 (cbrt.f64 (*.f64 re re)) 0)
(cbrt.f64 (*.f64 re re))
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(+.f64 re (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 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))))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 3/2)
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 3/2)
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1))
(+.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 0)
(sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))

localize25.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))
0.6b
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
0.6b
(cbrt.f64 (hypot.f64 re im))
14.7b
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
Compiler

Compiled 77 to 30 computations (61% saved)

series515.0ms (5%)

Counts
4 → 0
Calls

24 calls:

TimeVariablePointExpression
8.0ms
im
@0
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))
6.0ms
im
@0
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
3.0ms
re
@0
(cbrt.f64 (hypot.f64 re im))
2.0ms
re
@0
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
2.0ms
im
@inf
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
Compiler

Compiled 43690 to 36825 computations (15.7% saved)

rewrite56.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
836×pow1_binary64
771×add-log-exp_binary64
771×log1p-expm1-u_binary64
771×expm1-log1p-u_binary64
751×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01034
120334
2222634
Stop Event
node limit
Counts
4 → 79
Calls
Call 1
Inputs
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(cbrt.f64 (hypot.f64 re im))
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 (hypot.f64 re im) re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 re im) 1/6) (pow.f64 (hypot.f64 re im) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))) (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 1/3) (pow.f64 (sqrt.f64 (hypot.f64 re im)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 re im) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 re im) 1/6) (*.f64 (pow.f64 (hypot.f64 re im) 1/6) (cbrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))) (cbrt.f64 (cbrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 re im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (cbrt.f64 (hypot.f64 re im)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))))

simplify48.0ms (0.5%)

Algorithm
egg-herbie
Rules
658×distribute-rgt-in_binary64
493×unswap-sqr_binary64
412×times-frac_binary64
354×exp-prod_binary64
354×fma-neg_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01551138
1322995
21086856
34299812
Stop Event
node limit
Counts
79 → 101
Calls
Call 1
Inputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 (hypot.f64 re im) re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(-.f64 (+.f64 1 (cbrt.f64 (hypot.f64 re im))) 1)
(*.f64 (cbrt.f64 (hypot.f64 re im)) 1)
(*.f64 1 (cbrt.f64 (hypot.f64 re im)))
(*.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (hypot.f64 re im))))
(*.f64 (pow.f64 (hypot.f64 re im) 1/6) (pow.f64 (hypot.f64 re im) 1/6))
(*.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))) (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 1/3) (pow.f64 (sqrt.f64 (hypot.f64 re im)) 1/3))
(pow.f64 (hypot.f64 re im) 1/3)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1/2)
(pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 3)
(pow.f64 (pow.f64 (hypot.f64 re im) 1/6) 2)
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/6)
(sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(fabs.f64 (cbrt.f64 (hypot.f64 re im)))
(log.f64 (exp.f64 (cbrt.f64 (hypot.f64 re im))))
(expm1.f64 (log1p.f64 (cbrt.f64 (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (cbrt.f64 (hypot.f64 re im))))
(exp.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))))
(-.f64 (+.f64 1 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) 1)
(*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1)
(*.f64 1 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (hypot.f64 re im))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (hypot.f64 re im) 1/6) (*.f64 (pow.f64 (hypot.f64 re im) 1/6) (cbrt.f64 (hypot.f64 re im))))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/6))
(*.f64 (*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))) (cbrt.f64 (cbrt.f64 (hypot.f64 re im))))
(sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))
(log.f64 (exp.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(cbrt.f64 (pow.f64 (hypot.f64 re im) 2))
(expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(exp.f64 (*.f64 2 (log.f64 (cbrt.f64 (hypot.f64 re im)))))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1/2))
(pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
Outputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (cbrt.f64 (hypot.f64 re im))) 1)
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(*.f64 (cbrt.f64 (hypot.f64 re im)) 1)
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(*.f64 1 (cbrt.f64 (hypot.f64 re im)))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(*.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (hypot.f64 re im))))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(*.f64 (pow.f64 (hypot.f64 re im) 1/6) (pow.f64 (hypot.f64 re im) 1/6))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(*.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))) (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2)))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 (hypot.f64 re im)))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(*.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 1/3) (pow.f64 (sqrt.f64 (hypot.f64 re im)) 1/3))
(*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (hypot.f64 re im))))
(pow.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 1/6) 4)
(pow.f64 (hypot.f64 re im) 1/3)
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 1)
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1/2)
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 3)
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(pow.f64 (pow.f64 (hypot.f64 re im) 1/6) 2)
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/6)
(sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(fabs.f64 (cbrt.f64 (hypot.f64 re im)))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(log.f64 (exp.f64 (cbrt.f64 (hypot.f64 re im))))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(expm1.f64 (log1p.f64 (cbrt.f64 (hypot.f64 re im))))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(log1p.f64 (expm1.f64 (cbrt.f64 (hypot.f64 re im))))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(exp.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))))
(+.f64 1 (-.f64 (cbrt.f64 (hypot.f64 re im)) 1))
(+.f64 (cbrt.f64 (hypot.f64 re im)) 0)
(cbrt.f64 (hypot.f64 re im))
(-.f64 (+.f64 1 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (hypot.f64 re im)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1)
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(*.f64 1 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (hypot.f64 re im))))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2))
(*.f64 (pow.f64 (hypot.f64 re im) 1/6) (*.f64 (pow.f64 (hypot.f64 re im) 1/6) (cbrt.f64 (hypot.f64 re im))))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/6))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(*.f64 (*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))) (cbrt.f64 (cbrt.f64 (hypot.f64 re im))))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(log.f64 (exp.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(cbrt.f64 (pow.f64 (hypot.f64 re im) 2))
(expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(exp.f64 (*.f64 2 (log.f64 (cbrt.f64 (hypot.f64 re im)))))
(+.f64 1 (-.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1))
(+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 0)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

eval159.0ms (1.6%)

Compiler

Compiled 10269 to 5375 computations (47.7% saved)

prune120.0ms (1.2%)

Pruning

34 alts after pruning (22 fresh and 12 done)

PrunedKeptTotal
New5818589
Fresh11415
Picked011
Done01111
Total58234616
Error
13.0b
Counts
616 → 34
Alt Table
Click to see full alt table
StatusErrorProgram
19.2b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3))
19.1b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)) 2) 1/6) 3))
19.2b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3))
17.6b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3))
32.3b
(*.f64 1/2 (hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2))))
15.1b
(*.f64 1/2 (*.f64 (sqrt.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))) (sqrt.f64 2)))
13.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2)))
15.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 3) 2) (cbrt.f64 (hypot.f64 re im)) re))))
15.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (cbrt.f64 re) (hypot.f64 re im)))))
15.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (hypot.f64 re im)))) re))))
15.5b
(*.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))))
25.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) 3) (cbrt.f64 re) (hypot.f64 re im)))))
15.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) (hypot.f64 re im)))))
14.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im)))))
14.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
17.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/6)) (cbrt.f64 (hypot.f64 re im)) re))))
26.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2)) (cbrt.f64 (hypot.f64 re im)) re))))
15.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
19.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (*.f64 re (cbrt.f64 re))) (cbrt.f64 re) (hypot.f64 re im)))))
37.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (cbrt.f64 (hypot.f64 re im)) re))))
25.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im)))))
33.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re))))
15.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2) re))))
14.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
15.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
37.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
18.6b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (*.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))) 3)) re))))
18.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re))))
46.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re))))
13.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
18.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))))
18.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))))
16.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))))
17.5b
(*.f64 1/2 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 3)))
Compiler

Compiled 1040 to 740 computations (28.8% saved)

localize20.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re)))
0.5b
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
7.5b
(+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re)
Compiler

Compiled 61 to 30 computations (50.8% saved)

series246.0ms (2.4%)

Counts
3 → 0
Calls

18 calls:

TimeVariablePointExpression
2.0ms
im
@0
(sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re)))
2.0ms
im
@0
(+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re)
2.0ms
im
@inf
(sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re)))
1.0ms
re
@0
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
1.0ms
im
@-inf
(sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re)))
Compiler

Compiled 20015 to 16630 computations (16.9% saved)

rewrite55.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
971×pow1_binary64
904×add-log-exp_binary64
903×log1p-expm1-u_binary64
903×expm1-log1p-u_binary64
101×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01023
122323
2259123
Stop Event
node limit
Counts
3 → 75
Calls
Call 1
Inputs
(+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re)
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
(sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (sqrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 re im) 1/4) (*.f64 (pow.f64 (hypot.f64 re im) 1/4) (sqrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/4)) (pow.f64 (hypot.f64 re im) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (hypot.f64 re im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 re im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 re im)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (hypot.f64 re im)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))))))

simplify50.0ms (0.5%)

Algorithm
egg-herbie
Rules
623×div-sub_binary64
371×fma-neg_binary64
333×cancel-sign-sub-inv_binary64
260×log-prod_binary64
242×distribute-rgt-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0158868
1329837
21040833
34511807
Stop Event
node limit
Counts
75 → 89
Calls
Call 1
Inputs
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 1 (/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(fma.f64 1 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(*.f64 (hypot.f64 re im) 1)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(*.f64 1 (hypot.f64 re im))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (sqrt.f64 (hypot.f64 re im))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (pow.f64 (hypot.f64 re im) 1/4) (*.f64 (pow.f64 (hypot.f64 re im) 1/4) (sqrt.f64 (hypot.f64 re im))))
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/4)) (pow.f64 (hypot.f64 re im) 1/4))
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (hypot.f64 re im))))
(sqrt.f64 (pow.f64 (hypot.f64 re im) 2))
(log.f64 (exp.f64 (hypot.f64 re im)))
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(hypot.f64 re im)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(exp.f64 (log.f64 (hypot.f64 re im)))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))) 1)
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1/2))
(pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
Outputs
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 re (hypot.f64 re im))
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(+.f64 re (hypot.f64 re im))
(/.f64 1 (/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(+.f64 re (hypot.f64 re im))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(+.f64 re (hypot.f64 re im))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 1 re (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(hypot.f64 re im)
(*.f64 (hypot.f64 re im) 1)
(hypot.f64 re im)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(*.f64 1 (hypot.f64 re im))
(hypot.f64 re im)
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(hypot.f64 re im)
(*.f64 (cbrt.f64 (hypot.f64 re im)) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (sqrt.f64 (hypot.f64 re im))))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (*.f64 (sqrt.f64 (hypot.f64 re im)) (cbrt.f64 (sqrt.f64 (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (*.f64 (sqrt.f64 (hypot.f64 re im)) (cbrt.f64 (hypot.f64 re im))))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (sqrt.f64 (hypot.f64 re im)))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(*.f64 (pow.f64 (hypot.f64 re im) 1/4) (*.f64 (pow.f64 (hypot.f64 re im) 1/4) (sqrt.f64 (hypot.f64 re im))))
(hypot.f64 re im)
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/4)) (pow.f64 (hypot.f64 re im) 1/4))
(hypot.f64 re im)
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (cbrt.f64 (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (hypot.f64 re im))))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (*.f64 (sqrt.f64 (hypot.f64 re im)) (cbrt.f64 (sqrt.f64 (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (*.f64 (sqrt.f64 (hypot.f64 re im)) (cbrt.f64 (hypot.f64 re im))))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (sqrt.f64 (hypot.f64 re im)))))
(sqrt.f64 (pow.f64 (hypot.f64 re im) 2))
(hypot.f64 re im)
(log.f64 (exp.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(hypot.f64 re im)
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(hypot.f64 re im)
(hypot.f64 re im)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(exp.f64 (log.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(*.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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 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))))
(*.f64 (fabs.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 3/2)
(pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/2)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))) 3)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 1/4) 2)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))) 3/2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im))))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

localize18.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)))
5.8b
(exp.f64 (log.f64 (hypot.f64 re im)))
14.3b
(+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)
Compiler

Compiled 56 to 18 computations (67.9% saved)

series103.0ms (1%)

Counts
3 → 0
Calls

18 calls:

TimeVariablePointExpression
0.0ms
im
@-inf
(sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)))
0.0ms
im
@0
(sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)))
0.0ms
re
@-inf
(sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)))
0.0ms
re
@0
(+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)
0.0ms
re
@-inf
(+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)
Compiler

Compiled 10780 to 8575 computations (20.5% saved)

rewrite52.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
976×pow1_binary64
907×add-log-exp_binary64
906×log1p-expm1-u_binary64
906×expm1-log1p-u_binary64
100×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01023
120223
2255123
Stop Event
node limit
Counts
3 → 78
Calls
Call 1
Inputs
(+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)
(exp.f64 (log.f64 (hypot.f64 re im)))
(sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (hypot.f64 re im)))) (sqrt.f64 (log.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (hypot.f64 re im))) 2)) (cbrt.f64 (log.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (hypot.f64 re im) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 re im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 re im)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (hypot.f64 re im)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 4 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))

simplify52.0ms (0.5%)

Algorithm
egg-herbie
Rules
539×fma-neg_binary64
362×log-prod_binary64
337×times-frac_binary64
314×unswap-sqr_binary64
275×distribute-rgt-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0163963
1337938
21202938
36485938
Stop Event
node limit
Counts
78 → 85
Calls
Call 1
Inputs
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 1 (/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(fma.f64 1 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(*.f64 (hypot.f64 re im) 1)
(*.f64 1 (hypot.f64 re im))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(pow.f64 (hypot.f64 re im) 1)
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
(pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (hypot.f64 re im)))) (sqrt.f64 (log.f64 (hypot.f64 re im))))
(pow.f64 (exp.f64 1) (log.f64 (hypot.f64 re im)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (hypot.f64 re im))) 2)) (cbrt.f64 (log.f64 (hypot.f64 re im))))
(sqrt.f64 (pow.f64 (hypot.f64 re im) 2))
(log.f64 (exp.f64 (hypot.f64 re im)))
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(hypot.f64 re im)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 4 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
Outputs
(-.f64 (exp.f64 (log1p.f64 (+.f64 re (hypot.f64 re im)))) 1)
(+.f64 re (hypot.f64 re im))
(-.f64 (/.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (hypot.f64 re im) re)) (/.f64 (*.f64 re re) (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (/.f64 1 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(*.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (/.f64 1 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 1 (/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))) (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 1 (/.f64 (-.f64 (hypot.f64 re im) re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3))) (neg.f64 (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im))))))
(/.f64 (*.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) 1) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (neg.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re))) (neg.f64 (-.f64 (hypot.f64 re im) re)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log.f64 (+.f64 1 (expm1.f64 (+.f64 re (hypot.f64 re im)))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(fma.f64 1 re (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 1 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 re) (sqrt.f64 re) (hypot.f64 re im))
(+.f64 re (hypot.f64 re im))
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(+.f64 re (hypot.f64 re im))
(-.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)
(hypot.f64 re im)
(*.f64 (hypot.f64 re im) 1)
(hypot.f64 re im)
(*.f64 1 (hypot.f64 re im))
(hypot.f64 re im)
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(hypot.f64 re im)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(pow.f64 (hypot.f64 re im) 1)
(hypot.f64 re im)
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)
(hypot.f64 re im)
(pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)
(hypot.f64 re im)
(pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)
(hypot.f64 re im)
(pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)
(hypot.f64 re im)
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (hypot.f64 re im)))) (sqrt.f64 (log.f64 (hypot.f64 re im))))
(pow.f64 (exp.f64 1) (log.f64 (hypot.f64 re im)))
(pow.f64 (E.f64) (log.f64 (hypot.f64 re im)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (hypot.f64 re im))) 2)) (cbrt.f64 (log.f64 (hypot.f64 re im))))
(sqrt.f64 (pow.f64 (hypot.f64 re im) 2))
(hypot.f64 re im)
(log.f64 (exp.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))
(hypot.f64 re im)
(cbrt.f64 (pow.f64 (hypot.f64 re im) 3))
(hypot.f64 re im)
(hypot.f64 re im)
(expm1.f64 (log1p.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(log1p.f64 (expm1.f64 (hypot.f64 re im)))
(hypot.f64 re im)
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 (+.f64 re (hypot.f64 re im)) 2)))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 4 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

localize15.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))
15.0b
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
Compiler

Compiled 63 to 17 computations (73% saved)

series165.0ms (1.6%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
1.0ms
im
@0
(sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))
1.0ms
im
@inf
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
1.0ms
im
@inf
(sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))
1.0ms
im
@-inf
(sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))
1.0ms
im
@0
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
Compiler

Compiled 14075 to 11670 computations (17.1% saved)

rewrite48.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
774×pow1_binary64
711×add-log-exp_binary64
711×log1p-expm1-u_binary64
711×expm1-log1p-u_binary64
693×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
118019
2200619
Stop Event
node limit
Counts
2 → 42
Calls
Call 1
Inputs
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
(sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 (hypot.f64 re im) re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))

simplify45.0ms (0.4%)

Algorithm
egg-herbie
Rules
709×fma-def_binary64
469×fma-neg_binary64
387×associate-*l*_binary64
382×log-prod_binary64
350×*-commutative_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
093614
1205570
2676528
33706516
47875516
Stop Event
node limit
Counts
42 → 48
Calls
Call 1
Inputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 (hypot.f64 re im) re))))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
Outputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(+.f64 re (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (-.f64 (*.f64 re re) (*.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (+.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (-.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 (hypot.f64 re im) 3) (pow.f64 re 3)) (fma.f64 re (-.f64 re (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 2)))
(/.f64 (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re re)) (-.f64 (hypot.f64 re im) re))
(/.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2) 4))) (sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2) 1/3)
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(+.f64 1 (-.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1))
(+.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 0)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

localize23.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.6b
(pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3)
3.4b
(pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6)
15.0b
(fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re)
Compiler

Compiled 85 to 29 computations (65.9% saved)

series848.0ms (8.3%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
13.0ms
re
@0
(pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6)
10.0ms
im
@inf
(pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3)
8.0ms
im
@0
(pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3)
6.0ms
re
@inf
(pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6)
4.0ms
re
@-inf
(pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3)
Compiler

Compiled 61705 to 53310 computations (13.6% saved)

rewrite135.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
488×log-prod_binary64
362×exp-prod_binary64
289×pow-prod-down_binary64
283×pow2_binary64
214×pow-to-exp_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01226
125925
2280525
Stop Event
node limit
Counts
2 → 66
Calls
Call 1
Inputs
(pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6)
(pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (pow.f64 2 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 2 1/6) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/12 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/12) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (*.f64 (pow.f64 2 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6)) (pow.f64 2 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/4 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2) 2))))))

simplify47.0ms (0.5%)

Algorithm
egg-herbie
Rules
1006×fma-def_binary64
473×exp-prod_binary64
360×associate-*l*_binary64
285×associate-*r*_binary64
267×log-prod_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01581015
1311974
2804974
33081952
Stop Event
node limit
Counts
66 → 76
Calls
Call 1
Inputs
(+.f64 0 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 1)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 1)
(*.f64 1 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (pow.f64 2 1/6))
(*.f64 (pow.f64 2 1/6) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(log.f64 (+.f64 1 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))
(cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(expm1.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(log1p.f64 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(exp.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/12))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18)) 3))
(exp.f64 (*.f64 (*.f64 1/12 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 3/2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) 1/6))
(exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2) 1/3))
(exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1/3))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/12) 2))
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (*.f64 (pow.f64 2 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6)) (pow.f64 2 1/6))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2)) 1/3))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2))
(exp.f64 (*.f64 (*.f64 1/4 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) 1/2))
(exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 3))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2) 1))
(exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1))
(exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2) 2))
Outputs
(+.f64 0 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(*.f64 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))) 3)
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))) 1)
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 1)
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 1 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (pow.f64 2 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 (pow.f64 2 1/6) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(sqrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(log.f64 (exp.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(log.f64 (+.f64 1 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(cbrt.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(expm1.f64 (log1p.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(log1p.f64 (expm1.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/3))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 2 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/12))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18)) 3))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 1/12 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 3/2))
(pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1/2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) 1/6))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2) 1/3))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1/3))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/12) 2))
(pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)
(+.f64 0 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(-.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1)
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 1 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) 7))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (sqrt.f64 2) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2))
(*.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6) (*.f64 (pow.f64 2 1/6) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/4))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/12) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 5/12))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18))
(*.f64 (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (*.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(*.f64 (cbrt.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/18) 7))
(*.f64 (*.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) (pow.f64 (+.f64 re (hypot.f64 re im)) 1/6)) (pow.f64 2 1/6))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(fabs.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(cbrt.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 3/2)) 1/3))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (*.f64 1/4 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1) 1/2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 3))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2)) 1/2) 1))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 1) 1))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))
(exp.f64 (*.f64 (*.f64 (*.f64 1/6 (log.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))) 3/2) 2))
(sqrt.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2))

localize29.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.6b
(cbrt.f64 (cbrt.f64 re))
0.6b
(cbrt.f64 re)
0.8b
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 3)
14.6b
(fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (cbrt.f64 re) (hypot.f64 re im))
Compiler

Compiled 89 to 44 computations (50.6% saved)

series490.0ms (4.8%)

Counts
3 → 0
Calls

12 calls:

TimeVariablePointExpression
6.0ms
re
@-inf
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 3)
5.0ms
re
@inf
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 3)
4.0ms
re
@0
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 3)
2.0ms
im
@0
(fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (cbrt.f64 re) (hypot.f64 re im))
1.0ms
re
@-inf
(cbrt.f64 (cbrt.f64 re))
Compiler

Compiled 24800 to 20365 computations (17.9% saved)

rewrite48.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
812×pow1_binary64
758×add-log-exp_binary64
757×log1p-expm1-u_binary64
757×expm1-log1p-u_binary64
737×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01115
123215
2224215
Stop Event
node limit
Counts
3 → 63
Calls
Call 1
Inputs
(fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (cbrt.f64 re) (hypot.f64 re im))
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 3)
(cbrt.f64 (cbrt.f64 re))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 re (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (hypot.f64 re im) re)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 re (hypot.f64 re im)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 re) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 re)) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 re 1/6) (pow.f64 re 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 re) 1/6) (*.f64 (pow.f64 (cbrt.f64 re) 1/6) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))) (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 re) 1/3) (pow.f64 (sqrt.f64 re) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) 3) (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 3) (pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1) (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (pow.f64 (cbrt.f64 re) 1/6)) (pow.f64 (cbrt.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 re))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 re)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 re)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 re) 1/6) (pow.f64 (cbrt.f64 re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (cbrt.f64 re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1/3) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 re 1/6) 1/3) (pow.f64 (pow.f64 re 1/6) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 re 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 re) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (cbrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (cbrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (cbrt.f64 re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (cbrt.f64 re))))))))

simplify44.0ms (0.4%)

Algorithm
egg-herbie
Rules
639×unswap-sqr_binary64
572×log-prod_binary64
509×exp-prod_binary64
431×fma-neg_binary64
409×fabs-mul_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0125623
1274503
2911386
33974367
Stop Event
node limit
Counts
63 → 78
Calls
Call 1
Inputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(-.f64 (+.f64 1 (cbrt.f64 re)) 1)
(*.f64 (cbrt.f64 re) 1)
(*.f64 (cbrt.f64 (cbrt.f64 re)) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))
(*.f64 1 (cbrt.f64 re))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))
(*.f64 (pow.f64 re 1/6) (pow.f64 re 1/6))
(*.f64 (pow.f64 (cbrt.f64 re) 1/6) (*.f64 (pow.f64 (cbrt.f64 re) 1/6) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 re))
(*.f64 (pow.f64 (sqrt.f64 re) 1/3) (pow.f64 (sqrt.f64 re) 1/3))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) 3) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 3) (pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 3))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (pow.f64 (cbrt.f64 re) 1/6)) (pow.f64 (cbrt.f64 re) 1/6))
(sqrt.f64 (pow.f64 (cbrt.f64 re) 2))
(fabs.f64 (cbrt.f64 re))
(log.f64 (exp.f64 (cbrt.f64 re)))
(cbrt.f64 re)
(expm1.f64 (log1p.f64 (cbrt.f64 re)))
(log1p.f64 (expm1.f64 (cbrt.f64 re)))
(exp.f64 (log.f64 (cbrt.f64 re)))
(-.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) 1)
(*.f64 (cbrt.f64 (cbrt.f64 re)) 1)
(*.f64 1 (cbrt.f64 (cbrt.f64 re)))
(*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2))
(*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1/3))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))
(*.f64 (pow.f64 (cbrt.f64 re) 1/6) (pow.f64 (cbrt.f64 re) 1/6))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1/3) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))
(*.f64 (pow.f64 (pow.f64 re 1/6) 1/3) (pow.f64 (pow.f64 re 1/6) 1/3))
(pow.f64 re 1/9)
(pow.f64 (cbrt.f64 re) 1/3)
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 1)
(pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 3)
(pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 2)
(sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))
(log.f64 (exp.f64 (cbrt.f64 (cbrt.f64 re))))
(expm1.f64 (log1p.f64 (cbrt.f64 (cbrt.f64 re))))
(log1p.f64 (expm1.f64 (cbrt.f64 (cbrt.f64 re))))
(exp.f64 (log.f64 (cbrt.f64 (cbrt.f64 re))))
Outputs
(+.f64 re (hypot.f64 re im))
(+.f64 (hypot.f64 re im) re)
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (+.f64 re (hypot.f64 re im))) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(*.f64 1 (+.f64 re (hypot.f64 re im)))
(+.f64 re (hypot.f64 re im))
(*.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2))
(+.f64 re (hypot.f64 re im))
(*.f64 (pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 2) (cbrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (+.f64 (*.f64 re re) (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (-.f64 (pow.f64 (hypot.f64 re im) 2) (*.f64 re (hypot.f64 re im)))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 re re (*.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re))))
(/.f64 (+.f64 (pow.f64 re 3) (pow.f64 (hypot.f64 re im) 3)) (fma.f64 (hypot.f64 re im) (-.f64 (hypot.f64 re im) re) (*.f64 re re)))
(/.f64 (-.f64 (*.f64 re re) (pow.f64 (hypot.f64 re im) 2)) (-.f64 re (hypot.f64 re im)))
(/.f64 (+.f64 re (hypot.f64 re im)) 1)
(pow.f64 (+.f64 re (hypot.f64 re im)) 1)
(+.f64 re (hypot.f64 re im))
(pow.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3) 1/3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (cbrt.f64 (+.f64 re (hypot.f64 re im))) 3)
(+.f64 re (hypot.f64 re im))
(pow.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) 2)
(+.f64 re (hypot.f64 re im))
(sqrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 2))
(+.f64 re (hypot.f64 re im))
(log.f64 (exp.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(cbrt.f64 (pow.f64 (+.f64 re (hypot.f64 re im)) 3))
(+.f64 re (hypot.f64 re im))
(expm1.f64 (log1p.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(log1p.f64 (expm1.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(exp.f64 (log.f64 (+.f64 re (hypot.f64 re im))))
(+.f64 re (hypot.f64 re im))
(-.f64 (+.f64 1 (cbrt.f64 re)) 1)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (cbrt.f64 re) 1)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (cbrt.f64 (cbrt.f64 re)) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 1 (cbrt.f64 re))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (cbrt.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 re 1/6) (pow.f64 re 1/6))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 (cbrt.f64 re) 1/6) (*.f64 (pow.f64 (cbrt.f64 re) 1/6) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (cbrt.f64 (cbrt.f64 re)) (sqrt.f64 (cbrt.f64 (*.f64 re (cbrt.f64 re)))))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 re))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 (sqrt.f64 re) 1/3) (pow.f64 (sqrt.f64 re) 1/3))
(*.f64 (cbrt.f64 (sqrt.f64 re)) (cbrt.f64 (sqrt.f64 re)))
(pow.f64 (pow.f64 (sqrt.f64 re) 1/6) 4)
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) 3) (cbrt.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 3) (pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 3))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1) (cbrt.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) (pow.f64 (cbrt.f64 re) 1/6)) (pow.f64 (cbrt.f64 re) 1/6))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(sqrt.f64 (pow.f64 (cbrt.f64 re) 2))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(fabs.f64 (cbrt.f64 re))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(log.f64 (exp.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(cbrt.f64 re)
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(expm1.f64 (log1p.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(log1p.f64 (expm1.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(exp.f64 (log.f64 (cbrt.f64 re)))
(+.f64 1 (-.f64 (cbrt.f64 re) 1))
(+.f64 (cbrt.f64 re) 0)
(cbrt.f64 re)
(-.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) 1)
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 (cbrt.f64 (cbrt.f64 re)) 1)
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 1 (cbrt.f64 (cbrt.f64 re)))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1/3))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 2) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 (pow.f64 (cbrt.f64 re) 1/6) (pow.f64 (cbrt.f64 re) 1/6))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 (pow.f64 1 1/3) (cbrt.f64 (cbrt.f64 re)))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2) 1/3) (cbrt.f64 (cbrt.f64 (cbrt.f64 re))))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(*.f64 (pow.f64 (pow.f64 re 1/6) 1/3) (pow.f64 (pow.f64 re 1/6) 1/3))
(*.f64 (cbrt.f64 (pow.f64 re 1/6)) (cbrt.f64 (pow.f64 re 1/6)))
(pow.f64 (pow.f64 (pow.f64 re 1/6) 1/6) 4)
(pow.f64 re 1/9)
(*.f64 (pow.f64 re 1/18) (pow.f64 re 1/18))
(pow.f64 (cbrt.f64 re) 1/3)
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(pow.f64 (cbrt.f64 (cbrt.f64 re)) 1)
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(pow.f64 (cbrt.f64 (cbrt.f64 (cbrt.f64 re))) 3)
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(pow.f64 (pow.f64 (cbrt.f64 re) 1/6) 2)
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 2))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(log.f64 (exp.f64 (cbrt.f64 (cbrt.f64 re))))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(expm1.f64 (log1p.f64 (cbrt.f64 (cbrt.f64 re))))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(log1p.f64 (expm1.f64 (cbrt.f64 (cbrt.f64 re))))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))
(exp.f64 (log.f64 (cbrt.f64 (cbrt.f64 re))))
(+.f64 (+.f64 1 (cbrt.f64 (cbrt.f64 re))) -1)
(+.f64 (cbrt.f64 (cbrt.f64 re)) 0)
(cbrt.f64 (cbrt.f64 re))

eval129.0ms (1.3%)

Compiler

Compiled 8063 to 4538 computations (43.7% saved)

prune79.0ms (0.8%)

Pruning

37 alts after pruning (20 fresh and 17 done)

PrunedKeptTotal
New4503453
Fresh01717
Picked011
Done01616
Total45037487
Error
13.0b
Counts
487 → 37
Alt Table
Click to see full alt table
StatusErrorProgram
19.2b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3))
19.1b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)) 2) 1/6) 3))
19.2b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3))
17.6b
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3))
32.3b
(*.f64 1/2 (hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2))))
15.1b
(*.f64 1/2 (*.f64 (sqrt.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))) (sqrt.f64 2)))
13.6b
(*.f64 1/2 (*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2)))
15.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 3) 2) (cbrt.f64 (hypot.f64 re im)) re))))
15.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) (hypot.f64 re im)))))
15.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (cbrt.f64 re) (hypot.f64 re im)))))
15.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (hypot.f64 re im)))) re))))
15.5b
(*.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))))
25.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) 3) (cbrt.f64 re) (hypot.f64 re im)))))
15.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) (hypot.f64 re im)))))
14.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im)))))
14.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
17.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/6)) (cbrt.f64 (hypot.f64 re im)) re))))
26.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2)) (cbrt.f64 (hypot.f64 re im)) re))))
15.0b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
19.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (*.f64 re (cbrt.f64 re))) (cbrt.f64 re) (hypot.f64 re im)))))
37.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (cbrt.f64 (hypot.f64 re im)) re))))
25.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im)))))
33.1b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re))))
15.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2) re))))
14.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
15.2b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
18.8b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (E.f64) (log.f64 (hypot.f64 re im))) re))))
14.6b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (*.f64 (pow.f64 (hypot.f64 re im) 1/4) (*.f64 (pow.f64 (hypot.f64 re im) 1/4) (sqrt.f64 (hypot.f64 re im)))) re))))
37.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
18.6b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (*.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))) 3)) re))))
18.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re))))
46.7b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re))))
13.3b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
18.4b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))))
18.5b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))))
16.9b
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))))
17.5b
(*.f64 1/2 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 3)))
Compiler

Compiled 677 to 485 computations (28.4% saved)

regimes113.0ms (1.1%)

Accuracy

Total -45.3b remaining (-341.3%)

Threshold costs -45.3b (-341.3%)

Counts
39 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
(*.f64 1/2 (*.f64 (sqrt.f64 (+.f64 re (hypot.f64 re im))) (sqrt.f64 2)))
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6) 3))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (+.f64 re (hypot.f64 re im)))))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (log.f64 (hypot.f64 re im))) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 3)) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 3) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (sqrt.f64 (hypot.f64 re im)) 2) re))))
(*.f64 1/2 (hypot.f64 (sqrt.f64 (*.f64 (hypot.f64 re im) 2)) (sqrt.f64 (*.f64 re 2))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 3/2) 2/3) re))))
(*.f64 1/2 (exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (+.f64 re (hypot.f64 re im)) 2) 1/6)) 3)))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (E.f64) (log.f64 (hypot.f64 re im))) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (exp.f64 (*.f64 (log.f64 (cbrt.f64 (hypot.f64 re im))) 3)) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 3/2) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (*.f64 re re)) (cbrt.f64 re) (hypot.f64 re im)))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 re) (sqrt.f64 (*.f64 re (cbrt.f64 re))) (hypot.f64 re im)))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (sqrt.f64 (*.f64 re (cbrt.f64 re))) (cbrt.f64 re) (hypot.f64 re im)))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (fabs.f64 (cbrt.f64 re)) (hypot.f64 re im)))))
(*.f64 1/2 (*.f64 (sqrt.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im))) (sqrt.f64 2)))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (cbrt.f64 (hypot.f64 re im)) re))))
(*.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))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 re re))) 3) (cbrt.f64 re) (hypot.f64 re im)))))
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3))
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)) 2) 1/6) 3))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (*.f64 (pow.f64 (hypot.f64 re im) 1/4) (*.f64 (pow.f64 (hypot.f64 re im) 1/4) (sqrt.f64 (hypot.f64 re im)))) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (fma.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)) re))))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (exp.f64 (log.f64 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 re) (hypot.f64 re im)))))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) (hypot.f64 re im)))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (cbrt.f64 re) (hypot.f64 re im)))))
(*.f64 1/2 (pow.f64 (pow.f64 (*.f64 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)) re) 2) 1/6) 3))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 1/6)) (cbrt.f64 (hypot.f64 re im)) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (/.f64 (hypot.f64 (pow.f64 im 3) (pow.f64 re 3)) (hypot.f64 (*.f64 re re) (sqrt.f64 (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2))))) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 3) 2) (cbrt.f64 (hypot.f64 re im)) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) 2) (pow.f64 (cbrt.f64 (cbrt.f64 re)) 3) (hypot.f64 re im)))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 re im))) (cbrt.f64 (sqrt.f64 (hypot.f64 re im)))) re))))
(*.f64 1/2 (sqrt.f64 (*.f64 2 (fma.f64 (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2)) (cbrt.f64 (hypot.f64 re im)) re))))
Outputs
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
Calls

7 calls:

18.0ms
re
16.0ms
im
13.0ms
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
13.0ms
(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
12.0ms
(+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)
Results
ErrorSegmentsBranch
13.3b1re
13.3b1im
13.3b1(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))))
13.3b1(sqrt.f64 (*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)))
13.3b1(*.f64 2 (+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re))
13.3b1(+.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))) re)
13.3b1(*.f64 im im)
Compiler

Compiled 719 to 411 computations (42.8% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01015
11315
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
Outputs
(*.f64 1/2 (sqrt.f64 (*.f64 2 (+.f64 re (hypot.f64 re im)))))
Compiler

Compiled 12 to 9 computations (25% saved)

soundness8.0ms (0.1%)

Algorithm
egg-herbie
Rules
fma-def_binary64
*-commutative_binary64
+-commutative_binary64
distribute-lft-in_binary64
distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01315
12515
23415
33615
Stop Event
saturated
Compiler

Compiled 46 to 33 computations (28.3% saved)

end14.0ms (0.1%)

Compiler

Compiled 12 to 9 computations (25% saved)

Profiling

Loading profile data...