Details

Time bar (total: 1.4s)

analyze50.0ms (3.6%)

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
25%25%74.9%0.1%0%0%0%5
33.3%25%50%0.1%25%0%0%6
44.4%25%31.2%0.1%43.7%0%0%7
55.6%31.2%25%0.1%43.7%0%0%8
69.4%39%17.2%0.1%43.7%0%0%9
76.4%42.9%13.3%0.1%43.7%0%0%10
84%47.2%9%0.1%43.7%0%0%11
87.8%49.4%6.8%0.1%43.7%0%0%12
Compiler

Compiled 10 to 6 computations (40% saved)

sample773.0ms (55%)

Results
762.0ms8256×body256valid
0.0msbody256infinite
Bogosity

preprocess15.0ms (1.1%)

Algorithm
egg-herbie
Rules
fma-def_binary64
swap-re-im
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0716
1916
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 (*.f64 im im) (*.f64 re re))
Outputs
(+.f64 (*.f64 re re) (*.f64 im im))
(fma.f64 re re (*.f64 im im))
(+.f64 (*.f64 im im) (*.f64 re re))
(fma.f64 re re (*.f64 im im))
Symmetry

(sort re im)

Compiler

Compiled 11 to 7 computations (36.4% saved)

simplify6.0ms (0.4%)

Algorithm
egg-herbie
Rules
fma-def_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
188
298
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (*.f64 re re) (*.f64 im im))
Outputs
(+.f64 (*.f64 re re) (*.f64 im im))
(fma.f64 re re (*.f64 im im))

eval0.0ms (0%)

Compiler

Compiled 15 to 6 computations (60% saved)

prune1.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(fma.f64 re re (*.f64 im im))
0.0b
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 17 to 9 computations (47.1% saved)

localize6.0ms (0.4%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 17 to 5 computations (70.6% saved)

series6.0ms (0.4%)

Counts
1 → 24
Calls

6 calls:

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

Compiled 248 to 206 computations (16.9% saved)

rewrite39.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
650×pow1_binary64
606×add-log-exp_binary64
606×log1p-expm1-u_binary64
606×expm1-log1p-u_binary64
589×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify43.0ms (3.1%)

Algorithm
egg-herbie
Rules
612×log-prod_binary64
572×fma-neg_binary64
523×div-sub_binary64
410×associate-*l*_binary64
384×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0102755
1249692
2804635
34757569
Stop Event
node limit
Counts
57 → 55
Calls
Call 1
Inputs
(pow.f64 im 2)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(pow.f64 (/.f64 1 re) -2)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(pow.f64 (/.f64 -1 re) -2)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(pow.f64 re 2)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(pow.f64 (/.f64 1 im) -2)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(pow.f64 (/.f64 -1 im) -2)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 1)
(-.f64 (/.f64 (pow.f64 re 4) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (pow.f64 im 4) (-.f64 (*.f64 re re) (*.f64 im im))))
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(*.f64 1 (pow.f64 (hypot.f64 re im) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 2))
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (hypot.f64 re im) (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (/.f64 1 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2)))))
(*.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (/.f64 1 (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 1 (/.f64 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2))) (+.f64 (pow.f64 re 6) (pow.f64 im 6))))
(/.f64 1 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (pow.f64 re 4) (pow.f64 im 4))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 re im) 2))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (neg.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6))) (neg.f64 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2)))))
(/.f64 (neg.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4))) (neg.f64 (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (-.f64 (pow.f64 im 4) (pow.f64 re 4)) (-.f64 (*.f64 im im) (*.f64 re re)))
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 3) 1/3)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 3)
(pow.f64 (hypot.f64 re im) 2)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 2))
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 3))
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 2)))
(exp.f64 (log.f64 (pow.f64 (hypot.f64 re im) 2)))
(fma.f64 re re (*.f64 im im))
(fma.f64 im im (*.f64 re re))
(fma.f64 1 (*.f64 re re) (*.f64 im im))
(fma.f64 1 (*.f64 im im) (*.f64 re re))
(fma.f64 (cbrt.f64 (pow.f64 re 4)) (pow.f64 (cbrt.f64 re) 2) (*.f64 im im))
(fma.f64 (cbrt.f64 (pow.f64 im 4)) (pow.f64 (cbrt.f64 im) 2) (*.f64 re re))
Outputs
(pow.f64 im 2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(pow.f64 (/.f64 1 re) -2)
(*.f64 re re)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 im im (*.f64 re re))
(pow.f64 (/.f64 -1 re) -2)
(pow.f64 (/.f64 1 re) -2)
(*.f64 re re)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 im im (*.f64 re re))
(pow.f64 re 2)
(pow.f64 (/.f64 1 re) -2)
(*.f64 re re)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(pow.f64 (/.f64 1 im) -2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 im im (*.f64 re re))
(pow.f64 (/.f64 -1 im) -2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 im im (*.f64 re re))
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 1)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(-.f64 (/.f64 (pow.f64 re 4) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (pow.f64 im 4) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (*.f64 (+.f64 im re) (-.f64 re im)))
(*.f64 (fma.f64 im im (*.f64 re re)) 1)
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(*.f64 1 (pow.f64 (hypot.f64 re im) 2))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 2))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (hypot.f64 re im) (hypot.f64 re im))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (/.f64 1 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2)))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) 1) (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 im re) 2)))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (-.f64 (pow.f64 re 4) (-.f64 (pow.f64 (*.f64 im re) 2) (pow.f64 im 4))))
(*.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (/.f64 1 (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (*.f64 (+.f64 im re) (-.f64 re im)))
(*.f64 (fma.f64 im im (*.f64 re re)) 1)
(/.f64 1 (/.f64 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2))) (+.f64 (pow.f64 re 6) (pow.f64 im 6))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) 1) (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 im re) 2)))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (-.f64 (pow.f64 re 4) (-.f64 (pow.f64 (*.f64 im re) 2) (pow.f64 im 4))))
(/.f64 1 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (pow.f64 re 4) (pow.f64 im 4))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (*.f64 (+.f64 im re) (-.f64 re im)))
(*.f64 (fma.f64 im im (*.f64 re re)) 1)
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) 1) (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 im re) 2)))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (-.f64 (pow.f64 re 4) (-.f64 (pow.f64 (*.f64 im re) 2) (pow.f64 im 4))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 re im) 2))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) 1) (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 im re) 2)))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (-.f64 (pow.f64 re 4) (-.f64 (pow.f64 (*.f64 im re) 2) (pow.f64 im 4))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (*.f64 (+.f64 im re) (-.f64 re im)))
(*.f64 (fma.f64 im im (*.f64 re re)) 1)
(/.f64 (neg.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6))) (neg.f64 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 re im) 2)))))
(/.f64 (*.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) 1) (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 im re) 2)))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (-.f64 (pow.f64 re 4) (-.f64 (pow.f64 (*.f64 im re) 2) (pow.f64 im 4))))
(/.f64 (neg.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4))) (neg.f64 (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (*.f64 (+.f64 im re) (-.f64 re im)))
(*.f64 (fma.f64 im im (*.f64 re re)) 1)
(/.f64 (-.f64 (pow.f64 im 4) (pow.f64 re 4)) (-.f64 (*.f64 im im) (*.f64 re re)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (*.f64 (+.f64 im re) (-.f64 re im)))
(*.f64 (fma.f64 im im (*.f64 re re)) 1)
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 3) 1/3)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 3)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (hypot.f64 re im) 2)
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 2))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 3))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (log.f64 (pow.f64 (hypot.f64 re im) 2)))
(+.f64 1 (-.f64 (pow.f64 (hypot.f64 re im) 2) 1))
(+.f64 (pow.f64 (hypot.f64 re im) 2) 0)
(pow.f64 (hypot.f64 re im) 2)
(fma.f64 re re (*.f64 im im))
(fma.f64 im im (*.f64 re re))
(fma.f64 im im (*.f64 re re))
(fma.f64 1 (*.f64 re re) (*.f64 im im))
(fma.f64 im im (*.f64 re re))
(fma.f64 1 (*.f64 im im) (*.f64 re re))
(fma.f64 im im (*.f64 re re))
(fma.f64 (cbrt.f64 (pow.f64 re 4)) (pow.f64 (cbrt.f64 re) 2) (*.f64 im im))
(fma.f64 im im (*.f64 (cbrt.f64 (pow.f64 re 4)) (pow.f64 (cbrt.f64 re) 2)))
(fma.f64 (cbrt.f64 (pow.f64 im 4)) (pow.f64 (cbrt.f64 im) 2) (*.f64 re re))
(fma.f64 re re (*.f64 (cbrt.f64 (pow.f64 im 4)) (pow.f64 (cbrt.f64 im) 2)))

localize5.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 re re (*.f64 im im))
Compiler

Compiled 13 to 4 computations (69.2% saved)

series6.0ms (0.4%)

Counts
1 → 24
Calls

6 calls:

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

Compiled 248 to 206 computations (16.9% saved)

rewrite34.0ms (2.4%)

Algorithm
batch-egg-rewrite
Rules
437×pow1_binary64
418×add-sqr-sqrt_binary64
412×*-un-lft-identity_binary64
401×add-log-exp_binary64
401×log1p-expm1-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify39.0ms (2.8%)

Algorithm
egg-herbie
Rules
508×associate-/l*_binary64
459×associate-*l*_binary64
420×associate-*r*_binary64
406×unswap-sqr_binary64
271×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
085448
1209422
2702396
33994385
Stop Event
node limit
Counts
49 → 48
Calls
Call 1
Inputs
(pow.f64 im 2)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(pow.f64 (/.f64 1 re) -2)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(pow.f64 (/.f64 -1 re) -2)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(pow.f64 re 2)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(pow.f64 (/.f64 1 im) -2)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(pow.f64 (/.f64 -1 im) -2)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(+.f64 (*.f64 im im) (*.f64 re re))
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 0 (pow.f64 (hypot.f64 re im) 2))
(+.f64 (*.f64 (*.f64 re re) 1) (*.f64 im im))
(+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2))) (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))))
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 1)
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(*.f64 1 (pow.f64 (hypot.f64 re im) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 2))
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (hypot.f64 re im) (hypot.f64 re im))
(/.f64 (+.f64 (pow.f64 (*.f64 re re) 3) (pow.f64 (*.f64 im im) 3)) (fma.f64 (*.f64 re re) (*.f64 re re) (-.f64 (pow.f64 im 4) (*.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (-.f64 (*.f64 (*.f64 re re) (*.f64 re re)) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 3) 1/3)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 3)
(pow.f64 (hypot.f64 re im) 2)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 2))
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))
(log.f64 (*.f64 (pow.f64 (exp.f64 im) im) (exp.f64 (*.f64 re re))))
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 3))
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 2)))
(exp.f64 (*.f64 2 (log.f64 (hypot.f64 re im))))
Outputs
(pow.f64 im 2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(pow.f64 (/.f64 1 re) -2)
(*.f64 re re)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 im im (*.f64 re re))
(pow.f64 (/.f64 -1 re) -2)
(pow.f64 (/.f64 1 re) -2)
(*.f64 re re)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 im im (*.f64 re re))
(pow.f64 re 2)
(pow.f64 (/.f64 1 re) -2)
(*.f64 re re)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (*.f64 re re))
(pow.f64 (/.f64 1 im) -2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 im im (*.f64 re re))
(pow.f64 (/.f64 -1 im) -2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 im im (*.f64 re re))
(+.f64 (*.f64 im im) (*.f64 re re))
(fma.f64 im im (*.f64 re re))
(+.f64 (*.f64 re re) (*.f64 im im))
(fma.f64 im im (*.f64 re re))
(+.f64 0 (pow.f64 (hypot.f64 re im) 2))
(pow.f64 (hypot.f64 re im) 2)
(+.f64 (*.f64 (*.f64 re re) 1) (*.f64 im im))
(fma.f64 im im (*.f64 re re))
(+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2))) (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))))
(pow.f64 (hypot.f64 re im) 2)
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 1)
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(pow.f64 (hypot.f64 re im) 2)
(*.f64 1 (pow.f64 (hypot.f64 re im) 2))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 2))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (hypot.f64 re im) (hypot.f64 re im))
(pow.f64 (hypot.f64 re im) 2)
(/.f64 (+.f64 (pow.f64 (*.f64 re re) 3) (pow.f64 (*.f64 im im) 3)) (fma.f64 (*.f64 re re) (*.f64 re re) (-.f64 (pow.f64 im 4) (*.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (+.f64 (pow.f64 (*.f64 re re) 3) (pow.f64 (*.f64 im im) 3)) (fma.f64 (*.f64 re re) (*.f64 re re) (-.f64 (pow.f64 im 4) (*.f64 (*.f64 (*.f64 re re) im) im))))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (+.f64 (-.f64 (pow.f64 im 4) (*.f64 im (*.f64 im (*.f64 re re)))) (pow.f64 re 4)))
(/.f64 (+.f64 (pow.f64 re 6) (pow.f64 im 6)) (fma.f64 (*.f64 im (+.f64 im re)) (*.f64 im (-.f64 im re)) (pow.f64 re 4)))
(/.f64 (-.f64 (*.f64 (*.f64 re re) (*.f64 re re)) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (*.f64 (+.f64 im re) (-.f64 re im)))
(/.f64 (fma.f64 im im (*.f64 re re)) 1)
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 3) 1/3)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 3)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (hypot.f64 re im) 2)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 2))
(pow.f64 (hypot.f64 re im) 2)
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(log.f64 (*.f64 (pow.f64 (exp.f64 im) im) (exp.f64 (*.f64 re re))))
(fma.f64 im im (*.f64 re re))
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 3))
(pow.f64 (hypot.f64 re im) 2)
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (*.f64 2 (log.f64 (hypot.f64 re im))))
(pow.f64 (hypot.f64 re im) 2)

eval22.0ms (1.6%)

Compiler

Compiled 1111 to 619 computations (44.3% saved)

prune11.0ms (0.8%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New1003103
Fresh000
Picked011
Done011
Total1005105
Error
0b
Counts
105 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(fma.f64 re re (*.f64 im im))
0.0b
(fma.f64 im im (*.f64 re re))
0.0b
(+.f64 (*.f64 re re) (*.f64 im im))
28.4b
(*.f64 re re)
29.2b
(*.f64 im im)
Compiler

Compiled 35 to 19 computations (45.7% saved)

localize3.0ms (0.2%)

Compiler

Compiled 6 to 3 computations (50% saved)

localize3.0ms (0.2%)

Compiler

Compiled 6 to 3 computations (50% saved)

localize5.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 im im (*.f64 re re))
Compiler

Compiled 13 to 4 computations (69.2% saved)

series6.0ms (0.4%)

Counts
1 → 24
Calls

6 calls:

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

Compiled 248 to 206 computations (16.9% saved)

rewrite35.0ms (2.5%)

Algorithm
batch-egg-rewrite
Rules
437×pow1_binary64
418×add-sqr-sqrt_binary64
412×*-un-lft-identity_binary64
401×add-log-exp_binary64
401×log1p-expm1-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify41.0ms (2.9%)

Algorithm
egg-herbie
Rules
508×associate-/l*_binary64
459×associate-*l*_binary64
420×associate-*r*_binary64
406×unswap-sqr_binary64
271×fma-def_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
085448
1209422
2702396
33994385
Stop Event
node limit
Counts
49 → 48
Calls
Call 1
Inputs
(pow.f64 re 2)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(pow.f64 (/.f64 1 im) -2)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(pow.f64 (/.f64 -1 im) -2)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(pow.f64 im 2)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(pow.f64 (/.f64 1 re) -2)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(pow.f64 (/.f64 -1 re) -2)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 (*.f64 im im) (*.f64 re re))
(+.f64 0 (pow.f64 (hypot.f64 im re) 2))
(+.f64 (*.f64 (*.f64 im im) 1) (*.f64 re re))
(+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2))) (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))))
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 im re) 2)) 1)
(*.f64 (pow.f64 (hypot.f64 im re) 2) 1)
(*.f64 1 (pow.f64 (hypot.f64 im re) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)) 2))
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)))
(*.f64 (hypot.f64 im re) (hypot.f64 im re))
(/.f64 (+.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 (*.f64 re re) 3)) (fma.f64 (*.f64 im im) (*.f64 im im) (-.f64 (pow.f64 re 4) (*.f64 (*.f64 im im) (*.f64 re re)))))
(/.f64 (-.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (pow.f64 re 4)) (-.f64 (*.f64 im im) (*.f64 re re)))
(pow.f64 (pow.f64 (hypot.f64 im re) 2) 1)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 im re) 2) 3) 1/3)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)) 3)
(pow.f64 (hypot.f64 im re) 2)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 im re) 2) 2))
(log.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))
(log.f64 (*.f64 (pow.f64 (exp.f64 re) re) (exp.f64 (*.f64 im im))))
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 im re) 2) 3))
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 im re) 2)))
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 im re) 2)))
(exp.f64 (*.f64 2 (log.f64 (hypot.f64 im re))))
Outputs
(pow.f64 re 2)
(*.f64 re re)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 re re (*.f64 im im))
(pow.f64 (/.f64 1 im) -2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 1 im) -2))
(fma.f64 re re (*.f64 im im))
(pow.f64 (/.f64 -1 im) -2)
(pow.f64 (/.f64 1 im) -2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 re 2) (pow.f64 (/.f64 -1 im) -2))
(fma.f64 re re (*.f64 im im))
(pow.f64 im 2)
(pow.f64 (/.f64 1 im) -2)
(*.f64 im im)
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 re re (*.f64 im im))
(pow.f64 (/.f64 1 re) -2)
(*.f64 re re)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 1 re) -2))
(fma.f64 re re (*.f64 im im))
(pow.f64 (/.f64 -1 re) -2)
(*.f64 re re)
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (pow.f64 im 2) (pow.f64 (/.f64 -1 re) -2))
(fma.f64 re re (*.f64 im im))
(+.f64 (*.f64 re re) (*.f64 im im))
(fma.f64 re re (*.f64 im im))
(+.f64 (*.f64 im im) (*.f64 re re))
(fma.f64 re re (*.f64 im im))
(+.f64 0 (pow.f64 (hypot.f64 im re) 2))
(pow.f64 (hypot.f64 im re) 2)
(+.f64 (*.f64 (*.f64 im im) 1) (*.f64 re re))
(fma.f64 re re (*.f64 im im))
(+.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2))) (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))))
(pow.f64 (hypot.f64 im re) 2)
(-.f64 (+.f64 1 (pow.f64 (hypot.f64 im re) 2)) 1)
(pow.f64 (hypot.f64 im re) 2)
(*.f64 (pow.f64 (hypot.f64 im re) 2) 1)
(pow.f64 (hypot.f64 im re) 2)
(*.f64 1 (pow.f64 (hypot.f64 im re) 2))
(pow.f64 (hypot.f64 im re) 2)
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)) (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)) 2))
(pow.f64 (hypot.f64 im re) 2)
(*.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)) 2) (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)))
(pow.f64 (hypot.f64 im re) 2)
(*.f64 (hypot.f64 im re) (hypot.f64 im re))
(pow.f64 (hypot.f64 im re) 2)
(/.f64 (+.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 (*.f64 re re) 3)) (fma.f64 (*.f64 im im) (*.f64 im im) (-.f64 (pow.f64 re 4) (*.f64 (*.f64 im im) (*.f64 re re)))))
(/.f64 (+.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 (*.f64 re re) 3)) (fma.f64 (*.f64 im im) (*.f64 im im) (-.f64 (pow.f64 re 4) (*.f64 (*.f64 (*.f64 im im) re) re))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (-.f64 (pow.f64 re 4) (*.f64 re (*.f64 re (*.f64 im im)))) (pow.f64 im 4)))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (fma.f64 (*.f64 re (+.f64 re im)) (*.f64 re (-.f64 re im)) (pow.f64 im 4)))
(/.f64 (-.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (pow.f64 re 4)) (-.f64 (*.f64 im im) (*.f64 re re)))
(/.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (pow.f64 re 4)) (-.f64 (*.f64 im im) (*.f64 re re)))
(/.f64 (-.f64 (pow.f64 im 4) (pow.f64 re 4)) (-.f64 (*.f64 im im) (*.f64 re re)))
(/.f64 (-.f64 (pow.f64 im 4) (pow.f64 re 4)) (*.f64 (+.f64 re im) (-.f64 im re)))
(/.f64 (fma.f64 re re (*.f64 im im)) 1)
(pow.f64 (pow.f64 (hypot.f64 im re) 2) 1)
(pow.f64 (hypot.f64 im re) 2)
(pow.f64 (pow.f64 (pow.f64 (hypot.f64 im re) 2) 3) 1/3)
(pow.f64 (hypot.f64 im re) 2)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 im re) 2)) 3)
(pow.f64 (hypot.f64 im re) 2)
(pow.f64 (hypot.f64 im re) 2)
(sqrt.f64 (pow.f64 (pow.f64 (hypot.f64 im re) 2) 2))
(pow.f64 (hypot.f64 im re) 2)
(log.f64 (exp.f64 (pow.f64 (hypot.f64 im re) 2)))
(pow.f64 (hypot.f64 im re) 2)
(log.f64 (*.f64 (pow.f64 (exp.f64 re) re) (exp.f64 (*.f64 im im))))
(fma.f64 re re (*.f64 im im))
(cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 im re) 2) 3))
(pow.f64 (hypot.f64 im re) 2)
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 im re) 2)))
(pow.f64 (hypot.f64 im re) 2)
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 im re) 2)))
(pow.f64 (hypot.f64 im re) 2)
(exp.f64 (*.f64 2 (log.f64 (hypot.f64 im re))))
(pow.f64 (hypot.f64 im re) 2)

eval10.0ms (0.7%)

Compiler

Compiled 508 to 274 computations (46.1% saved)

prune8.0ms (0.5%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New48048
Fresh000
Picked011
Done044
Total48553
Error
0b
Counts
53 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(fma.f64 re re (*.f64 im im))
0.0b
(fma.f64 im im (*.f64 re re))
0.0b
(+.f64 (*.f64 re re) (*.f64 im im))
28.4b
(*.f64 re re)
29.2b
(*.f64 im im)
Compiler

Compiled 35 to 19 computations (45.7% saved)

regimes23.0ms (1.7%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 im im)
(*.f64 re re)
(+.f64 (*.f64 re re) (*.f64 im im))
(fma.f64 im im (*.f64 re re))
(fma.f64 re re (*.f64 im im))
Outputs
(fma.f64 im im (*.f64 re re))
Calls

6 calls:

4.0ms
(*.f64 re re)
4.0ms
im
4.0ms
re
4.0ms
(+.f64 (*.f64 re re) (*.f64 im im))
3.0ms
(*.f64 im im)
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(+.f64 (*.f64 re re) (*.f64 im im))
0.0b1(*.f64 re re)
0.0b1(*.f64 im im)
0.0b1(*.f64 im im)
Compiler

Compiled 57 to 25 computations (56.1% saved)

regimes17.0ms (1.2%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 im im)
(*.f64 re re)
(+.f64 (*.f64 re re) (*.f64 im im))
Outputs
(+.f64 (*.f64 re re) (*.f64 im im))
Calls

5 calls:

3.0ms
(*.f64 re re)
3.0ms
im
3.0ms
re
3.0ms
(+.f64 (*.f64 re re) (*.f64 im im))
3.0ms
(*.f64 im im)
Results
ErrorSegmentsBranch
0.0b1re
0.0b1im
0.0b1(+.f64 (*.f64 re re) (*.f64 im im))
0.0b1(*.f64 re re)
0.0b1(*.f64 im im)
Compiler

Compiled 40 to 20 computations (50% saved)

regimes29.0ms (2.1%)

Accuracy

Total -51.1b remaining (-882.9%)

Threshold costs -51.1b (-882.9%)

Counts
2 → 4
Calls
Call 1
Inputs
(*.f64 im im)
(*.f64 re re)
Outputs
(*.f64 re re)
(*.f64 im im)
(*.f64 re re)
(*.f64 im im)
Calls

4 calls:

11.0ms
im
6.0ms
(*.f64 re re)
6.0ms
re
5.0ms
(*.f64 im im)
Results
ErrorSegmentsBranch
7.7b2re
5.8b4im
11.1b2(*.f64 re re)
11.7b2(*.f64 im im)
Compiler

Compiled 24 to 14 computations (41.7% saved)

bsearch30.0ms (2.1%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
5.488429879176881e-81
5.868559173447863e-78
9.0ms
1.0619158744720323e-92
3.856922985771628e-92
10.0ms
1.5177658240149548e-148
1.04924075246869e-146
Results
25.0ms320×body256valid
Compiler

Compiled 254 to 169 computations (33.5% saved)

simplify4.0ms (0.3%)

Algorithm
egg-herbie
Rules
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01756
11856
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f64 im im (*.f64 re re))
(+.f64 (*.f64 re re) (*.f64 im im))
(if (<=.f64 im 8278001381959481/899782758908639276562107701537196371773939423660383326620151114522367516134297574063808137220778171429984182126704179024641653211098859937801703036173032771026944) (*.f64 re re) (if (<=.f64 im 6458492102628041/587135645693458306972370149197334256843920637227079967676822742883052256278652110865924749596192175757983744) (*.f64 im im) (if (<=.f64 im 5736293309357913/1042962419883256876169444192465601618458351817556959360325703910069443225478828393565899456512) (*.f64 re re) (*.f64 im im))))
(*.f64 im im)
Outputs
(fma.f64 im im (*.f64 re re))
(+.f64 (*.f64 re re) (*.f64 im im))
(if (<=.f64 im 8278001381959481/899782758908639276562107701537196371773939423660383326620151114522367516134297574063808137220778171429984182126704179024641653211098859937801703036173032771026944) (*.f64 re re) (if (<=.f64 im 6458492102628041/587135645693458306972370149197334256843920637227079967676822742883052256278652110865924749596192175757983744) (*.f64 im im) (if (<=.f64 im 5736293309357913/1042962419883256876169444192465601618458351817556959360325703910069443225478828393565899456512) (*.f64 re re) (*.f64 im im))))
(*.f64 im im)
Compiler

Compiled 48 to 25 computations (47.9% saved)

soundness98.0ms (7%)

Algorithm
egg-herbie
Rules
612×log-prod_binary64
572×fma-neg_binary64
523×div-sub_binary64
410×associate-*l*_binary64
384×associate-*r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0102755
1249692
2804635
34757569
Stop Event
node limit
Compiler

Compiled 44 to 27 computations (38.6% saved)

end37.0ms (2.7%)

Compiler

Compiled 58 to 23 computations (60.3% saved)

Profiling

Loading profile data...