math.abs on complex (squared)

Time bar (total: 1.8s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 10 to 6 computations (40% saved)

sample693.0ms (38%)

Results
386.0ms4614×body256valid
296.0ms3642×body256infinite
Bogosity

preprocess69.0ms (3.8%)

Algorithm
egg-herbie
Rules
190×fma-def
38×distribute-lft-neg-in
26×unsub-neg
26×neg-sub0
26×neg-mul-1
Problems
256×No Errors
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
020197
147197
2100197
3226197
4312197
5339197
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 (*.f64 (neg.f64 re) (neg.f64 re)) (*.f64 im im))
(+.f64 (*.f64 re re) (*.f64 (neg.f64 im) (neg.f64 im)))
(neg.f64 (+.f64 (*.f64 (neg.f64 re) (neg.f64 re)) (*.f64 im im)))
(neg.f64 (+.f64 (*.f64 re re) (*.f64 (neg.f64 im) (neg.f64 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 re re) (*.f64 im im))
(fma.f64 re re (*.f64 im im))
(+.f64 (*.f64 (neg.f64 re) (neg.f64 re)) (*.f64 im im))
(fma.f64 re re (*.f64 im im))
(+.f64 (*.f64 re re) (*.f64 (neg.f64 im) (neg.f64 im)))
(fma.f64 re re (*.f64 im im))
(neg.f64 (+.f64 (*.f64 (neg.f64 re) (neg.f64 re)) (*.f64 im im)))
(neg.f64 (fma.f64 re re (*.f64 im im)))
(neg.f64 (+.f64 (*.f64 re re) (*.f64 (neg.f64 im) (neg.f64 im))))
(neg.f64 (fma.f64 re re (*.f64 im im)))
(+.f64 (*.f64 im im) (*.f64 re re))
(fma.f64 re re (*.f64 im im))
Symmetry

(abs re)

(abs im)

(sort re im)

Compiler

Compiled 27 to 11 computations (59.3% saved)

eval0.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

prune1.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 18 to 10 computations (44.4% saved)

localize23.0ms (1.3%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 18 to 6 computations (66.7% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite191.0ms (10.5%)

Algorithm
batch-egg-rewrite
Rules
1146×prod-diff
712×unpow-prod-down
534×prod-exp
502×log1p-expm1-u
502×expm1-log1p-u
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01024
111719
2146519
Stop Event
node limit
Counts
1 → 58
Calls
Call 1
Inputs
(+.f64 (*.f64 re re) (*.f64 im im))
Outputs
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2))) 1)
(-.f64 (/.f64 (pow.f64 re 4) (-.f64 (pow.f64 re 2) (pow.f64 im 2))) (/.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 2) (pow.f64 im 2))))
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(*.f64 (pow.f64 (hypot.f64 re im) 2) (log.f64 (exp.f64 1)))
(*.f64 1 (pow.f64 (hypot.f64 re im) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (cbrt.f64 (pow.f64 (hypot.f64 re im) 4)))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 4)) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (hypot.f64 re im) (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (/.f64 1 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2))))
(*.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (/.f64 1 (-.f64 (pow.f64 re 2) (pow.f64 im 2))))
(*.f64 (pow.f64 1 1/3) (pow.f64 (hypot.f64 re im) 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 2) 3) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3))
(*.f64 (pow.f64 (sqrt.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3))
(*.f64 (pow.f64 (*.f64 (pow.f64 (hypot.f64 re im) 4) (cbrt.f64 (pow.f64 (hypot.f64 re im) 4))) 1/3) (cbrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (pow.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 5/2) 1/3) (cbrt.f64 (hypot.f64 re im)))
(/.f64 1 (/.f64 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)) (+.f64 (pow.f64 im 6) (pow.f64 re 6))))
(/.f64 1 (/.f64 (-.f64 (pow.f64 re 2) (pow.f64 im 2)) (-.f64 (pow.f64 re 4) (pow.f64 im 4))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 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 (pow.f64 re 2) (pow.f64 im 2)))
(/.f64 (neg.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6))) (neg.f64 (-.f64 (+.f64 (pow.f64 re 4) (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 (pow.f64 re 2) (pow.f64 im 2))))
(/.f64 (-.f64 (pow.f64 im 4) (pow.f64 re 4)) (-.f64 (pow.f64 im 2) (pow.f64 re 2)))
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 3)
(pow.f64 (pow.f64 (hypot.f64 re im) 4) 1/2)
(pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/3)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (/.f64 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)) (+.f64 (pow.f64 im 6) (pow.f64 re 6))) -1)
(pow.f64 (/.f64 (-.f64 (pow.f64 re 2) (pow.f64 im 2)) (-.f64 (pow.f64 re 4) (pow.f64 im 4))) -1)
(sqrt.f64 (pow.f64 (hypot.f64 re im) 4))
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))
(cbrt.f64 (pow.f64 (hypot.f64 re im) 6))
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))
(exp.f64 (*.f64 2 (log.f64 (hypot.f64 re im))))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1))
(exp.f64 (*.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1) 1))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3))
(exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 2)))
(fma.f64 re re (pow.f64 im 2))
(fma.f64 (pow.f64 re 2) 1 (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 im 2) 1 (pow.f64 re 2))
(fma.f64 1 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 1 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 2) (pow.f64 (cbrt.f64 im) 4) (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 4) (pow.f64 (cbrt.f64 im) 2) (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 re) 4) (pow.f64 im 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 4) (pow.f64 (cbrt.f64 re) 2) (pow.f64 im 2))
(fma.f64 (sqrt.f64 im) (pow.f64 im 3/2) (pow.f64 re 2))
(fma.f64 (sqrt.f64 re) (pow.f64 re 3/2) (pow.f64 im 2))
(fma.f64 (pow.f64 im 3/2) (sqrt.f64 im) (pow.f64 re 2))
(fma.f64 (pow.f64 re 3/2) (sqrt.f64 re) (pow.f64 im 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 5) (cbrt.f64 im) (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 re) (pow.f64 im 2))

simplify74.0ms (4.1%)

Algorithm
egg-herbie
Rules
1002×fma-neg
850×associate-*r*
822×div-sub
750×associate-*l*
620×distribute-lft-neg-in
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01512418
13612382
29202382
343162207
Stop Event
node limit
Counts
82 → 66
Calls
Call 1
Inputs
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(pow.f64 re 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(pow.f64 re 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(pow.f64 re 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2))) 1)
(-.f64 (/.f64 (pow.f64 re 4) (-.f64 (pow.f64 re 2) (pow.f64 im 2))) (/.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 2) (pow.f64 im 2))))
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(*.f64 (pow.f64 (hypot.f64 re im) 2) (log.f64 (exp.f64 1)))
(*.f64 1 (pow.f64 (hypot.f64 re im) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) (cbrt.f64 (pow.f64 (hypot.f64 re im) 4)))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 4)) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (hypot.f64 re im) (hypot.f64 re im))
(*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (/.f64 1 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2))))
(*.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (/.f64 1 (-.f64 (pow.f64 re 2) (pow.f64 im 2))))
(*.f64 (pow.f64 1 1/3) (pow.f64 (hypot.f64 re im) 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 2) 3) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3))
(*.f64 (pow.f64 (sqrt.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3))
(*.f64 (pow.f64 (*.f64 (pow.f64 (hypot.f64 re im) 4) (cbrt.f64 (pow.f64 (hypot.f64 re im) 4))) 1/3) (cbrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (pow.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 5/2) 1/3) (cbrt.f64 (hypot.f64 re im)))
(/.f64 1 (/.f64 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)) (+.f64 (pow.f64 im 6) (pow.f64 re 6))))
(/.f64 1 (/.f64 (-.f64 (pow.f64 re 2) (pow.f64 im 2)) (-.f64 (pow.f64 re 4) (pow.f64 im 4))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 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 (pow.f64 re 2) (pow.f64 im 2)))
(/.f64 (neg.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6))) (neg.f64 (-.f64 (+.f64 (pow.f64 re 4) (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 (pow.f64 re 2) (pow.f64 im 2))))
(/.f64 (-.f64 (pow.f64 im 4) (pow.f64 re 4)) (-.f64 (pow.f64 im 2) (pow.f64 re 2)))
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)) 3)
(pow.f64 (pow.f64 (hypot.f64 re im) 4) 1/2)
(pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/3)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (/.f64 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)) (+.f64 (pow.f64 im 6) (pow.f64 re 6))) -1)
(pow.f64 (/.f64 (-.f64 (pow.f64 re 2) (pow.f64 im 2)) (-.f64 (pow.f64 re 4) (pow.f64 im 4))) -1)
(sqrt.f64 (pow.f64 (hypot.f64 re im) 4))
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))
(cbrt.f64 (pow.f64 (hypot.f64 re im) 6))
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))
(exp.f64 (*.f64 2 (log.f64 (hypot.f64 re im))))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1))
(exp.f64 (*.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1) 1))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3))
(exp.f64 (*.f64 (log.f64 (hypot.f64 re im)) 2))
(log1p.f64 (expm1.f64 (pow.f64 (hypot.f64 re im) 2)))
(fma.f64 re re (pow.f64 im 2))
(fma.f64 (pow.f64 re 2) 1 (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 im 2) 1 (pow.f64 re 2))
(fma.f64 1 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 1 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 2) (pow.f64 (cbrt.f64 im) 4) (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 4) (pow.f64 (cbrt.f64 im) 2) (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 re) 4) (pow.f64 im 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 4) (pow.f64 (cbrt.f64 re) 2) (pow.f64 im 2))
(fma.f64 (sqrt.f64 im) (pow.f64 im 3/2) (pow.f64 re 2))
(fma.f64 (sqrt.f64 re) (pow.f64 re 3/2) (pow.f64 im 2))
(fma.f64 (pow.f64 im 3/2) (sqrt.f64 im) (pow.f64 re 2))
(fma.f64 (pow.f64 re 3/2) (sqrt.f64 re) (pow.f64 im 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 5) (cbrt.f64 im) (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 re) (pow.f64 im 2))
Outputs
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(pow.f64 re 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(pow.f64 re 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(pow.f64 re 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(-.f64 (exp.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2))) 1)
(pow.f64 (hypot.f64 re im) 2)
(-.f64 (/.f64 (pow.f64 re 4) (-.f64 (pow.f64 re 2) (pow.f64 im 2))) (/.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 2) (pow.f64 im 2))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (pow.f64 re 2) (pow.f64 im 2)))
(*.f64 (fma.f64 im im (pow.f64 re 2)) 1)
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (hypot.f64 re im) 2) (log.f64 (exp.f64 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)) (cbrt.f64 (pow.f64 (hypot.f64 re im) 4)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 4)) (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 im 6) (pow.f64 re 6)) (/.f64 1 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2))))
(/.f64 (*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) 1) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(*.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (/.f64 1 (-.f64 (pow.f64 re 2) (pow.f64 im 2))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (pow.f64 re 2) (pow.f64 im 2)))
(*.f64 (fma.f64 im im (pow.f64 re 2)) 1)
(*.f64 (pow.f64 1 1/3) (pow.f64 (hypot.f64 re im) 2))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 2) 3) (cbrt.f64 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (sqrt.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (*.f64 (pow.f64 (hypot.f64 re im) 4) (cbrt.f64 (pow.f64 (hypot.f64 re im) 4))) 1/3) (cbrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) (cbrt.f64 (*.f64 (pow.f64 (hypot.f64 re im) 4) (cbrt.f64 (pow.f64 (hypot.f64 re im) 4)))))
(*.f64 (pow.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 5/2) 1/3) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 2) 5/2)) (cbrt.f64 (hypot.f64 re im)))
(/.f64 1 (/.f64 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)) (+.f64 (pow.f64 im 6) (pow.f64 re 6))))
(/.f64 (*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) 1) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 1 (/.f64 (-.f64 (pow.f64 re 2) (pow.f64 im 2)) (-.f64 (pow.f64 re 4) (pow.f64 im 4))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (pow.f64 re 2) (pow.f64 im 2)))
(*.f64 (fma.f64 im im (pow.f64 re 2)) 1)
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)))
(/.f64 (*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) 1) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 re im) 2))))
(/.f64 (*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) 1) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (pow.f64 re 2) (pow.f64 im 2)))
(*.f64 (fma.f64 im im (pow.f64 re 2)) 1)
(/.f64 (neg.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6))) (neg.f64 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2))))
(/.f64 (*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) 1) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (neg.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4))) (neg.f64 (-.f64 (pow.f64 re 2) (pow.f64 im 2))))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (pow.f64 re 2) (pow.f64 im 2)))
(*.f64 (fma.f64 im im (pow.f64 re 2)) 1)
(/.f64 (-.f64 (pow.f64 im 4) (pow.f64 re 4)) (-.f64 (pow.f64 im 2) (pow.f64 re 2)))
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (pow.f64 re 2) (pow.f64 im 2)))
(*.f64 (fma.f64 im im (pow.f64 re 2)) 1)
(pow.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(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 (pow.f64 (hypot.f64 re im) 4) 1/2)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (pow.f64 (hypot.f64 re im) 6) 1/3)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (hypot.f64 re im) 2)
(pow.f64 (/.f64 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2)) (+.f64 (pow.f64 im 6) (pow.f64 re 6))) -1)
(/.f64 (*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) 1) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (pow.f64 (*.f64 im re) 2))))
(pow.f64 (/.f64 (-.f64 (pow.f64 re 2) (pow.f64 im 2)) (-.f64 (pow.f64 re 4) (pow.f64 im 4))) -1)
(/.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4)) (-.f64 (pow.f64 re 2) (pow.f64 im 2)))
(*.f64 (fma.f64 im im (pow.f64 re 2)) 1)
(sqrt.f64 (pow.f64 (hypot.f64 re im) 4))
(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)
(cbrt.f64 (pow.f64 (hypot.f64 re im) 6))
(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)
(exp.f64 (*.f64 2 (log.f64 (hypot.f64 re im))))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (*.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1) 1))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 2))) 3))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (*.f64 (log.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)
(fma.f64 re re (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 re 2) 1 (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 im 2) 1 (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 1 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 1 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 2) (pow.f64 (cbrt.f64 im) 4) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 4) (pow.f64 (cbrt.f64 im) 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 re) 4) (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 4) (pow.f64 (cbrt.f64 re) 2) (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (sqrt.f64 im) (pow.f64 im 3/2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (sqrt.f64 re) (pow.f64 re 3/2) (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 im 3/2) (sqrt.f64 im) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 re 3/2) (sqrt.f64 re) (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 5) (cbrt.f64 im) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(fma.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 re) (pow.f64 im 2))
(fma.f64 im im (pow.f64 re 2))

eval21.0ms (1.2%)

Compiler

Compiled 788 to 509 computations (35.4% saved)

prune10.0ms (0.6%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New65166
Fresh000
Picked011
Done000
Total65267
Accuracy
100.0%
Counts
67 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 im im (pow.f64 re 2))
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
100.0%
(fma.f64 im im (pow.f64 re 2))
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 34 to 20 computations (41.2% saved)

localize28.0ms (1.6%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(pow.f64 re 2)
Compiler

Compiled 15 to 9 computations (40% saved)

series1.0ms (0.1%)

Counts
1 → 0
Calls

3 calls:

TimeVariablePointExpression
1.0ms
re
@-inf
(pow.f64 re 2)
0.0ms
re
@inf
(pow.f64 re 2)
0.0ms
re
@0
(pow.f64 re 2)

rewrite124.0ms (6.8%)

Algorithm
batch-egg-rewrite
Rules
1380×fma-def
793×log1p-expm1-u
793×expm1-log1p-u
448×expm1-udef
448×log1p-udef
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
14810
245910
3426110
Stop Event
node limit
Counts
1 → 44
Calls
Call 1
Inputs
(pow.f64 re 2)
Outputs
(+.f64 (fma.f64 re re 1) -1)
(+.f64 0 (pow.f64 re 2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 re 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 re 2)))))
(-.f64 (fma.f64 re re 1) 1)
(*.f64 re re)
(*.f64 (pow.f64 re 2) 1)
(*.f64 (pow.f64 re 2) (log.f64 (E.f64)))
(*.f64 1 (pow.f64 re 2))
(*.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 re) 4))
(*.f64 (pow.f64 (cbrt.f64 re) 4) (pow.f64 (cbrt.f64 re) 2))
(*.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 5))
(*.f64 (cbrt.f64 re) (*.f64 (pow.f64 re 1/6) (pow.f64 re 3/2)))
(*.f64 (sqrt.f64 re) (pow.f64 re 3/2))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 re 8))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (pow.f64 re 3/2) (sqrt.f64 re))
(*.f64 (pow.f64 re 1/4) (*.f64 (pow.f64 re 1/4) (pow.f64 re 3/2)))
(*.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 re))
(*.f64 (pow.f64 1 1/3) (pow.f64 re 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 re 8)) 2) 1/3) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 re 8)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 re) 2) 5)) (cbrt.f64 re))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 (cbrt.f64 (pow.f64 re 8)))) (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 4) (cbrt.f64 (pow.f64 (cbrt.f64 re) 4))) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (*.f64 (pow.f64 re 3/2) (cbrt.f64 re)) (pow.f64 re 1/6))
(*.f64 (*.f64 (pow.f64 re 3/2) (pow.f64 re 1/4)) (pow.f64 re 1/4))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 5) (pow.f64 re 1/6)) (pow.f64 re 1/6))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2))) (cbrt.f64 (cbrt.f64 re)))
(/.f64 (-.f64 (pow.f64 (fma.f64 re re 1) 3) 1) (fma.f64 (fma.f64 re re 1) (fma.f64 re re 1) (+.f64 1 (fma.f64 re re 1))))
(/.f64 (-.f64 (*.f64 (fma.f64 re re 1) (fma.f64 re re 1)) 1) (+.f64 (fma.f64 re re 1) 1))
(sqrt.f64 (pow.f64 re 4))
(fabs.f64 (pow.f64 re 2))
(log.f64 (exp.f64 (pow.f64 re 2)))
(cbrt.f64 (pow.f64 re 6))
(expm1.f64 (log1p.f64 (pow.f64 re 2)))
(exp.f64 (log.f64 (pow.f64 re 2)))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 re))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 re 6)) 1/3))
(log1p.f64 (expm1.f64 (pow.f64 re 2)))
(fma.f64 1 (fma.f64 re re 1) -1)
(fma.f64 (fma.f64 re re 1) 1 -1)
(fma.f64 (*.f64 (cbrt.f64 (fma.f64 re re 1)) (cbrt.f64 (fma.f64 re re 1))) (cbrt.f64 (fma.f64 re re 1)) -1)
(fma.f64 (hypot.f64 1 re) (hypot.f64 1 re) -1)

simplify87.0ms (4.8%)

Algorithm
egg-herbie
Rules
1596×fma-neg
1292×distribute-lft-in
1136×distribute-rgt-in
1050×log-prod
686×associate-+r+
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
01251323
1258950
2602935
32167921
46726917
Stop Event
node limit
Counts
44 → 63
Calls
Call 1
Inputs
(+.f64 (fma.f64 re re 1) -1)
(+.f64 0 (pow.f64 re 2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 re 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 re 2)))))
(-.f64 (fma.f64 re re 1) 1)
(*.f64 re re)
(*.f64 (pow.f64 re 2) 1)
(*.f64 (pow.f64 re 2) (log.f64 (E.f64)))
(*.f64 1 (pow.f64 re 2))
(*.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 re) 4))
(*.f64 (pow.f64 (cbrt.f64 re) 4) (pow.f64 (cbrt.f64 re) 2))
(*.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 5))
(*.f64 (cbrt.f64 re) (*.f64 (pow.f64 re 1/6) (pow.f64 re 3/2)))
(*.f64 (sqrt.f64 re) (pow.f64 re 3/2))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 re 8))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (pow.f64 re 3/2) (sqrt.f64 re))
(*.f64 (pow.f64 re 1/4) (*.f64 (pow.f64 re 1/4) (pow.f64 re 3/2)))
(*.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 re))
(*.f64 (pow.f64 1 1/3) (pow.f64 re 2))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 re 8)) 2) 1/3) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 re 8)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 re) 2) 5)) (cbrt.f64 re))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 (cbrt.f64 (pow.f64 re 8)))) (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 4) (cbrt.f64 (pow.f64 (cbrt.f64 re) 4))) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (*.f64 (pow.f64 re 3/2) (cbrt.f64 re)) (pow.f64 re 1/6))
(*.f64 (*.f64 (pow.f64 re 3/2) (pow.f64 re 1/4)) (pow.f64 re 1/4))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 5) (pow.f64 re 1/6)) (pow.f64 re 1/6))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2))) (cbrt.f64 (cbrt.f64 re)))
(/.f64 (-.f64 (pow.f64 (fma.f64 re re 1) 3) 1) (fma.f64 (fma.f64 re re 1) (fma.f64 re re 1) (+.f64 1 (fma.f64 re re 1))))
(/.f64 (-.f64 (*.f64 (fma.f64 re re 1) (fma.f64 re re 1)) 1) (+.f64 (fma.f64 re re 1) 1))
(sqrt.f64 (pow.f64 re 4))
(fabs.f64 (pow.f64 re 2))
(log.f64 (exp.f64 (pow.f64 re 2)))
(cbrt.f64 (pow.f64 re 6))
(expm1.f64 (log1p.f64 (pow.f64 re 2)))
(exp.f64 (log.f64 (pow.f64 re 2)))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 re))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 re 6)) 1/3))
(log1p.f64 (expm1.f64 (pow.f64 re 2)))
(fma.f64 1 (fma.f64 re re 1) -1)
(fma.f64 (fma.f64 re re 1) 1 -1)
(fma.f64 (*.f64 (cbrt.f64 (fma.f64 re re 1)) (cbrt.f64 (fma.f64 re re 1))) (cbrt.f64 (fma.f64 re re 1)) -1)
(fma.f64 (hypot.f64 1 re) (hypot.f64 1 re) -1)
Outputs
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(+.f64 0 (pow.f64 re 2))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2)))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2))))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2)))))
(*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2)))))
(*.f64 (log.f64 (cbrt.f64 (exp.f64 (pow.f64 re 2)))) 3)
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 re 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 re 2)))))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(-.f64 (fma.f64 re re 1) 1)
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 re re)
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (pow.f64 re 2) 1)
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (pow.f64 re 2) (log.f64 (E.f64)))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 1 (pow.f64 re 2))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (pow.f64 (cbrt.f64 re) 2) (pow.f64 (cbrt.f64 re) 4))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (pow.f64 (cbrt.f64 re) 4) (pow.f64 (cbrt.f64 re) 2))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (cbrt.f64 re) (pow.f64 (cbrt.f64 re) 5))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (cbrt.f64 re) (*.f64 (pow.f64 re 1/6) (pow.f64 re 3/2)))
(*.f64 (pow.f64 re 3/2) (pow.f64 (pow.f64 re 1/6) 3))
(*.f64 (sqrt.f64 re) (pow.f64 re 3/2))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (*.f64 (pow.f64 (cbrt.f64 re) 4) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 re 8))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 re 8))) (*.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 (pow.f64 (cbrt.f64 re) 4))))
(*.f64 (pow.f64 (cbrt.f64 re) 2) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (cbrt.f64 (cbrt.f64 (pow.f64 re 8)))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (*.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 (cbrt.f64 (pow.f64 re 8)))))
(*.f64 (pow.f64 re 3/2) (sqrt.f64 re))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (pow.f64 re 1/4) (*.f64 (pow.f64 re 1/4) (pow.f64 re 3/2)))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 re))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (pow.f64 1 1/3) (pow.f64 re 2))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 re 8)) 2) 1/3) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 re 8)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 re 8)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 re 8)) 2)))
(*.f64 (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 re) 2) 5)) (cbrt.f64 re))
(*.f64 (cbrt.f64 re) (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 re) 2) 5)))
(*.f64 (cbrt.f64 re) (pow.f64 (pow.f64 (cbrt.f64 re) 2) 5/2))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 (cbrt.f64 (pow.f64 re 8)))) (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 re 8))) (*.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 (pow.f64 (cbrt.f64 re) 4))))
(*.f64 (pow.f64 (cbrt.f64 re) 2) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (cbrt.f64 (cbrt.f64 (pow.f64 re 8)))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (*.f64 (pow.f64 (cbrt.f64 re) 2) (cbrt.f64 (cbrt.f64 (pow.f64 re 8)))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 4) (cbrt.f64 (pow.f64 (cbrt.f64 re) 4))) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (*.f64 (pow.f64 (cbrt.f64 re) 4) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 4)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (pow.f64 (cbrt.f64 re) 4)))
(*.f64 (*.f64 (pow.f64 re 3/2) (cbrt.f64 re)) (pow.f64 re 1/6))
(*.f64 (cbrt.f64 re) (*.f64 (pow.f64 re 1/6) (pow.f64 re 3/2)))
(*.f64 (pow.f64 re 3/2) (pow.f64 (pow.f64 re 1/6) 3))
(*.f64 (*.f64 (pow.f64 re 3/2) (pow.f64 re 1/4)) (pow.f64 re 1/4))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 5) (pow.f64 re 1/6)) (pow.f64 re 1/6))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 (pow.f64 (cbrt.f64 re) 2))) (cbrt.f64 (cbrt.f64 re)))
(*.f64 (pow.f64 (cbrt.f64 re) 5) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (cbrt.f64 (cbrt.f64 re))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 re) 2)) (*.f64 (pow.f64 (cbrt.f64 re) 5) (cbrt.f64 (cbrt.f64 re))))
(/.f64 (-.f64 (pow.f64 (fma.f64 re re 1) 3) 1) (fma.f64 (fma.f64 re re 1) (fma.f64 re re 1) (+.f64 1 (fma.f64 re re 1))))
(/.f64 (+.f64 (pow.f64 (fma.f64 re re 1) 3) -1) (fma.f64 (fma.f64 re re 1) (fma.f64 re re 1) (+.f64 1 (fma.f64 re re 1))))
(/.f64 (+.f64 -1 (pow.f64 (fma.f64 re re 1) 3)) (fma.f64 (fma.f64 re re 1) (fma.f64 re re 1) (+.f64 (pow.f64 re 2) 2)))
(/.f64 (+.f64 -1 (pow.f64 (fma.f64 re re 1) 3)) (+.f64 1 (*.f64 (fma.f64 re re 1) (fma.f64 re re 2))))
(/.f64 (+.f64 -1 (pow.f64 (fma.f64 re re 1) 3)) (fma.f64 (fma.f64 re re 1) (fma.f64 re re 2) 1))
(/.f64 (-.f64 (*.f64 (fma.f64 re re 1) (fma.f64 re re 1)) 1) (+.f64 (fma.f64 re re 1) 1))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(sqrt.f64 (pow.f64 re 4))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(fabs.f64 (pow.f64 re 2))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(log.f64 (exp.f64 (pow.f64 re 2)))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(cbrt.f64 (pow.f64 re 6))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(expm1.f64 (log1p.f64 (pow.f64 re 2)))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(exp.f64 (log.f64 (pow.f64 re 2)))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 re))) 3))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(exp.f64 (*.f64 (log.f64 (pow.f64 re 6)) 1/3))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(log1p.f64 (expm1.f64 (pow.f64 re 2)))
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(fma.f64 1 (fma.f64 re re 1) -1)
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(fma.f64 (fma.f64 re re 1) 1 -1)
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(fma.f64 (*.f64 (cbrt.f64 (fma.f64 re re 1)) (cbrt.f64 (fma.f64 re re 1))) (cbrt.f64 (fma.f64 re re 1)) -1)
(+.f64 (fma.f64 re re 1) -1)
(pow.f64 re 2)
(fma.f64 (hypot.f64 1 re) (hypot.f64 1 re) -1)

eval19.0ms (1%)

Compiler

Compiled 873 to 534 computations (38.8% saved)

prune9.0ms (0.5%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New62163
Fresh000
Picked101
Done011
Total63265
Accuracy
100.0%
Counts
65 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 im im (*.f64 re re))
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
100.0%
(fma.f64 im im (*.f64 re re))
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 34 to 18 computations (47.1% saved)

localize108.0ms (5.9%)

Compiler

Compiled 14 to 5 computations (64.3% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0.1%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done011
Total022
Accuracy
100.0%
Counts
2 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 im im (*.f64 re re))
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 38 to 18 computations (52.6% saved)

regimes17.0ms (0.9%)

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

5 calls:

5.0ms
(+.f64 (*.f64 re re) (*.f64 im im))
3.0ms
im
3.0ms
(*.f64 im im)
3.0ms
re
2.0ms
(*.f64 re re)
Results
AccuracySegmentsBranch
100.0%1re
100.0%1im
100.0%1(+.f64 (*.f64 re re) (*.f64 im im))
100.0%1(*.f64 re re)
100.0%1(*.f64 im im)
Compiler

Compiled 46 to 24 computations (47.8% saved)

regimes14.0ms (0.8%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

5 calls:

5.0ms
im
2.0ms
(+.f64 (*.f64 re re) (*.f64 im im))
2.0ms
re
2.0ms
(*.f64 im im)
2.0ms
(*.f64 re re)
Results
AccuracySegmentsBranch
100.0%1re
100.0%1im
100.0%1(+.f64 (*.f64 re re) (*.f64 im im))
100.0%1(*.f64 re re)
100.0%1(*.f64 im im)
Compiler

Compiled 34 to 20 computations (41.2% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01258
11358
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f64 im im (*.f64 re re))
(+.f64 (*.f64 re re) (*.f64 im im))
Outputs
(fma.f64 im im (*.f64 re re))
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 17 to 9 computations (47.1% saved)

soundness283.0ms (15.5%)

Rules
1380×fma-def
1002×fma-neg
850×associate-*r*
822×div-sub
793×log1p-expm1-u
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01512418
13612382
29202382
343162207
0710
14810
245910
3426110
Stop Event
node limit
node limit
Compiler

Compiled 36 to 21 computations (41.7% saved)

end0.0ms (0%)

preprocess43.0ms (2.3%)

Remove

(sort re im)

(abs im)

(abs re)

Compiler

Compiled 192 to 94 computations (51% saved)

Profiling

Loading profile data...