math.abs on complex (squared)

Time bar (total: 1.9s)

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)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
Operation ival-add, time spent: 0.0ms, 0.0% of total-time
Operation ival-mult, time spent: 0.0ms, 0.0% of total-time
Operation const, time spent: 0.0ms, 0.0% of total-time

sample1.1s (56%)

Results
650.0ms4667×256valid
421.0ms3589×256infinite
Precisions
Click to see histograms. Total time spent on operations: 367.0ms
Operation ival-mult, time spent: 257.0ms, 70.0% of total-time
Operation ival-add, time spent: 76.0ms, 21.0% of total-time
Operation const, time spent: 34.0ms, 9.0% of total-time
Bogosity

preprocess118.0ms (6.1%)

Algorithm
egg-herbie
Rules
190×fma-def
38×distribute-lft-neg-in
26×unsub-neg
26×neg-sub0
26×neg-mul-1
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-im
00-0-(*.f64 im im)
00-0-(*.f64 re re)
00-0-re
00-0-(+.f64 (*.f64 re re) (*.f64 im im))
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 45 to 17 computations (62.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
Operation ival-mult, time spent: 10.0ms, 59.0% of total-time
Operation ival-add, time spent: 4.0ms, 24.0% of total-time
Operation const, time spent: 2.0ms, 12.0% of total-time

eval0.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

prune1.0ms (0%)

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

Compiled 9 to 5 computations (44.4% saved)

localize34.0ms (1.8%)

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)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
Operation ival-mult, time spent: 5.0ms, 59.0% of total-time
Operation ival-add, time spent: 2.0ms, 24.0% of total-time
Operation const, time spent: 1.0ms, 12.0% of total-time

series4.0ms (0.2%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
im
@0
(+.f64 (*.f64 re re) (*.f64 im im))
0.0ms
re
@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
im
@-inf
(+.f64 (*.f64 re re) (*.f64 im im))

rewrite198.0ms (10.2%)

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))

simplify84.0ms (4.3%)

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))

eval18.0ms (0.9%)

Compiler

Compiled 788 to 509 computations (35.4% saved)

prune8.0ms (0.4%)

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%
(pow.f64 (hypot.f64 re im) 2)
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 16 to 10 computations (37.5% saved)

localize49.0ms (2.5%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(pow.f64 (hypot.f64 re im) 2)
Compiler

Compiled 14 to 7 computations (50% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
Operation ival-pow, time spent: 16.0ms, 73.0% of total-time
Operation ival-hypot, time spent: 4.0ms, 18.0% of total-time
Operation const, time spent: 2.0ms, 9.0% of total-time

series5.0ms (0.3%)

Counts
1 → 24
Calls

6 calls:

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

rewrite66.0ms (3.4%)

Algorithm
batch-egg-rewrite
Rules
450×unpow-prod-down
338×log-prod
330×cbrt-prod
302×log1p-expm1-u
302×expm1-log1p-u
Iterations

Useful iterations: 0 (0.0ms)

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

simplify59.0ms (3.1%)

Algorithm
egg-herbie
Rules
1598×fma-def
1356×times-frac
1152×associate-*r*
970×associate-*l*
798×associate-+r+
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02213642
15703105
217672810
Stop Event
node limit
Counts
82 → 88
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 (*.f64 (pow.f64 re 8) (+.f64 (*.f64 -1 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 im 6))) (pow.f64 (/.f64 -1/8 (pow.f64 im 3)) 2))) (*.f64 5/64 (/.f64 1 (pow.f64 im 6))))) (+.f64 (pow.f64 im 2) (pow.f64 re 2)))
(pow.f64 re 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 im 6) (pow.f64 re 4))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 6) (pow.f64 re 4))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 im 4) (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 (*.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 im 6) (pow.f64 re 4))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 6) (pow.f64 re 4))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 im 4) (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 (*.f64 (pow.f64 im 8) (+.f64 (*.f64 -1 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 re 6))) (pow.f64 (/.f64 -1/8 (pow.f64 re 3)) 2))) (*.f64 5/64 (/.f64 1 (pow.f64 re 6))))) (+.f64 (pow.f64 im 2) (pow.f64 re 2)))
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))))
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))))
(+.f64 (pow.f64 re 2) (pow.f64 im 2))
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(+.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) -1)
(+.f64 0 (pow.f64 (hypot.f64 re im) 2))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)) 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 (/.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 (hypot.f64 re im) (hypot.f64 re im))
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(*.f64 (pow.f64 (hypot.f64 re im) 2) (log.f64 (E.f64)))
(*.f64 1 (pow.f64 (hypot.f64 re im) 2))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 3/2))
(*.f64 (pow.f64 (hypot.f64 re im) 3/2) (sqrt.f64 (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 (pow.f64 re 2) (pow.f64 im 2))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 5) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (pow.f64 1 1/3) (pow.f64 (hypot.f64 re im) 2))
(*.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 5) 1/3) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 8)) 2) 1/3) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 5)) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 8)) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2))
(*.f64 (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 5)) (cbrt.f64 (hypot.f64 re 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 (pow.f64 re 2) (pow.f64 im 2)) (-.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 4) (pow.f64 im 4)) (-.f64 (pow.f64 re 2) (pow.f64 im 2)))
(/.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 (pow.f64 re 2) (pow.f64 im 2))))
(/.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (*.f64 (pow.f64 im 2) (pow.f64 re 2)))))
(/.f64 (-.f64 (pow.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 3) 1) (+.f64 (*.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 1 (pow.f64 (hypot.f64 re im) 2))) (+.f64 1 (*.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 1))))
(/.f64 (-.f64 (pow.f64 im 4) (pow.f64 re 4)) (-.f64 (pow.f64 im 2) (pow.f64 re 2)))
(/.f64 (-.f64 (*.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 1 (pow.f64 (hypot.f64 re im) 2))) 1) (+.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 1))
(sqrt.f64 (pow.f64 (hypot.f64 re im) 4))
(fabs.f64 (pow.f64 (hypot.f64 re im) 2))
(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 (log.f64 (pow.f64 (hypot.f64 re im) 2)))
(exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 (hypot.f64 re im)))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3))
(log1p.f64 (expm1.f64 (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 1 (pow.f64 re 2) (pow.f64 im 2))
(fma.f64 1 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 (cbrt.f64 (pow.f64 re 2)) (cbrt.f64 (pow.f64 re 4)) (pow.f64 im 2))
(fma.f64 (pow.f64 (cbrt.f64 im) 2) (pow.f64 (cbrt.f64 im) 4) (pow.f64 re 2))
(fma.f64 (sqrt.f64 re) (pow.f64 re 3/2) (pow.f64 im 2))
(fma.f64 (sqrt.f64 im) (pow.f64 im 3/2) (pow.f64 re 2))
(fma.f64 (cbrt.f64 (pow.f64 re 4)) (cbrt.f64 (pow.f64 re 2)) (pow.f64 im 2))
(fma.f64 (pow.f64 re 3/2) (sqrt.f64 re) (pow.f64 im 2))
(fma.f64 (pow.f64 im 3/2) (sqrt.f64 im) (pow.f64 re 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))
(fma.f64 (pow.f64 (cbrt.f64 im) 4) (pow.f64 (cbrt.f64 im) 2) (pow.f64 re 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 (*.f64 (pow.f64 re 8) (+.f64 (*.f64 -1 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 im 6))) (pow.f64 (/.f64 -1/8 (pow.f64 im 3)) 2))) (*.f64 5/64 (/.f64 1 (pow.f64 im 6))))) (+.f64 (pow.f64 im 2) (pow.f64 re 2)))
(fma.f64 (pow.f64 re 8) (fma.f64 -1 (+.f64 (/.f64 1/16 (pow.f64 im 6)) (pow.f64 (/.f64 -1/8 (pow.f64 im 3)) 2)) (/.f64 5/64 (pow.f64 im 6))) (fma.f64 im im (pow.f64 re 2)))
(fma.f64 (pow.f64 re 8) (-.f64 (/.f64 5/64 (pow.f64 im 6)) (+.f64 (/.f64 1/16 (pow.f64 im 6)) (pow.f64 (/.f64 -1/8 (pow.f64 im 3)) 2))) (fma.f64 im im (pow.f64 re 2)))
(fma.f64 (pow.f64 re 8) (-.f64 (*.f64 (/.f64 1 (pow.f64 im 6)) 1/64) (pow.f64 (/.f64 -1/8 (pow.f64 im 3)) 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 (*.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))
(fma.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 im im (pow.f64 re 2))))
(+.f64 (fma.f64 im im (pow.f64 re 2)) (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) 0))
(+.f64 (fma.f64 im im (pow.f64 re 2)) 0)
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 im 6) (pow.f64 re 4))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 6) (pow.f64 re 4))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))))
(fma.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 im im (pow.f64 re 2))))
(+.f64 (fma.f64 im im (pow.f64 re 2)) (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) 0))
(+.f64 (fma.f64 im im (pow.f64 re 2)) 0)
(pow.f64 re 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))
(fma.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 im im (pow.f64 re 2))))
(+.f64 (fma.f64 im im (pow.f64 re 2)) (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) 0))
(+.f64 (fma.f64 im im (pow.f64 re 2)) 0)
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 im 6) (pow.f64 re 4))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 6) (pow.f64 re 4))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))))
(fma.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 im im (pow.f64 re 2))))
(+.f64 (fma.f64 im im (pow.f64 re 2)) (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) 0))
(+.f64 (fma.f64 im im (pow.f64 re 2)) 0)
(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 (*.f64 (pow.f64 im 8) (+.f64 (*.f64 -1 (+.f64 (*.f64 1/16 (/.f64 1 (pow.f64 re 6))) (pow.f64 (/.f64 -1/8 (pow.f64 re 3)) 2))) (*.f64 5/64 (/.f64 1 (pow.f64 re 6))))) (+.f64 (pow.f64 im 2) (pow.f64 re 2)))
(fma.f64 (pow.f64 im 8) (fma.f64 -1 (+.f64 (/.f64 1/16 (pow.f64 re 6)) (pow.f64 (/.f64 -1/8 (pow.f64 re 3)) 2)) (/.f64 5/64 (pow.f64 re 6))) (fma.f64 im im (pow.f64 re 2)))
(fma.f64 (pow.f64 im 8) (-.f64 (/.f64 5/64 (pow.f64 re 6)) (+.f64 (/.f64 1/16 (pow.f64 re 6)) (pow.f64 (/.f64 -1/8 (pow.f64 re 3)) 2))) (fma.f64 im im (pow.f64 re 2)))
(fma.f64 (pow.f64 im 8) (-.f64 (*.f64 (/.f64 1 (pow.f64 re 6)) 1/64) (pow.f64 (/.f64 -1/8 (pow.f64 re 3)) 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 (*.f64 -1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))
(fma.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 im im (pow.f64 re 2))))
(+.f64 (fma.f64 im im (pow.f64 re 2)) (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) 0))
(+.f64 (fma.f64 im im (pow.f64 re 2)) 0)
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))))
(fma.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 im im (pow.f64 re 2))))
(+.f64 (fma.f64 im im (pow.f64 re 2)) (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) 0))
(+.f64 (fma.f64 im im (pow.f64 re 2)) 0)
(pow.f64 im 2)
(+.f64 (pow.f64 im 2) (pow.f64 re 2))
(fma.f64 im im (pow.f64 re 2))
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))
(fma.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 im im (pow.f64 re 2))))
(+.f64 (fma.f64 im im (pow.f64 re 2)) (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) 0))
(+.f64 (fma.f64 im im (pow.f64 re 2)) 0)
(+.f64 (*.f64 -1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 6) (pow.f64 im 4))) (+.f64 (*.f64 1/4 (/.f64 (pow.f64 re 4) (pow.f64 im 2))) (+.f64 (pow.f64 im 2) (pow.f64 re 2))))))
(fma.f64 -1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 1/4 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) (fma.f64 im im (pow.f64 re 2))))
(+.f64 (fma.f64 im im (pow.f64 re 2)) (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 2)) 0))
(+.f64 (fma.f64 im im (pow.f64 re 2)) 0)
(+.f64 (pow.f64 re 2) (pow.f64 im 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 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) -1)
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(+.f64 0 (pow.f64 (hypot.f64 re im) 2))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)) 2))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))))
(+.f64 (log.f64 (cbrt.f64 (exp.f64 (*.f64 2 (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 -1 (+.f64 1 (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)
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(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 (hypot.f64 re im) (hypot.f64 re im))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (hypot.f64 re im) 2) 1)
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (hypot.f64 re im) 2) (log.f64 (E.f64)))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 1 (pow.f64 (hypot.f64 re im) 2))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 4) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 3/2))
(*.f64 (pow.f64 (hypot.f64 re im) 3/2) (sqrt.f64 (hypot.f64 re im)))
(*.f64 (pow.f64 (hypot.f64 re im) 3/2) (sqrt.f64 (hypot.f64 re im)))
(*.f64 (sqrt.f64 (hypot.f64 re im)) (pow.f64 (hypot.f64 re im) 3/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 (pow.f64 im 6) (pow.f64 re 6)) (/.f64 1 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 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 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 5) (cbrt.f64 (hypot.f64 re im)))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 1 1/3) (pow.f64 (hypot.f64 re im) 2))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(*.f64 (pow.f64 (pow.f64 (hypot.f64 re im) 5) 1/3) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (pow.f64 (hypot.f64 re im) 5)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 8)) 2) 1/3) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 8)) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2))
(*.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 5)) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (cbrt.f64 (pow.f64 (hypot.f64 re im) 5)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (hypot.f64 re im) 8)) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 re im))) 2))
(*.f64 (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 5)) (cbrt.f64 (hypot.f64 re im)))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 5)))
(*.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 5/2))
(/.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 (pow.f64 im 6) (pow.f64 re 6)) (/.f64 1 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 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 (+.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 im 6) (pow.f64 re 6)) (/.f64 1 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 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 (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 (pow.f64 im 6) (pow.f64 re 6)) (/.f64 1 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 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 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (+.f64 (pow.f64 im 4) (-.f64 (pow.f64 re 4) (*.f64 (pow.f64 im 2) (pow.f64 re 2)))))
(*.f64 (+.f64 (pow.f64 im 6) (pow.f64 re 6)) (/.f64 1 (+.f64 (pow.f64 re 4) (-.f64 (pow.f64 im 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 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 3) 1) (+.f64 (*.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 1 (pow.f64 (hypot.f64 re im) 2))) (+.f64 1 (*.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 1))))
(/.f64 (+.f64 (pow.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 3) -1) (fma.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))))
(/.f64 (+.f64 -1 (pow.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 3)) (fma.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 2 (pow.f64 (hypot.f64 re im) 2))))
(/.f64 (+.f64 -1 (pow.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 3)) (+.f64 1 (*.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 2 (pow.f64 (hypot.f64 re im) 2)))))
(/.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 (-.f64 (*.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) (+.f64 1 (pow.f64 (hypot.f64 re im) 2))) 1) (+.f64 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)) 1))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(sqrt.f64 (pow.f64 (hypot.f64 re im) 4))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(fabs.f64 (pow.f64 (hypot.f64 re im) 2))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(log.f64 (exp.f64 (pow.f64 (hypot.f64 re im) 2)))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(cbrt.f64 (pow.f64 (hypot.f64 re im) 6))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(expm1.f64 (log1p.f64 (pow.f64 (hypot.f64 re im) 2)))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (log.f64 (pow.f64 (hypot.f64 re im) 2)))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 (hypot.f64 re im)))) 3))
(+.f64 -1 (+.f64 1 (pow.f64 (hypot.f64 re im) 2)))
(pow.f64 (hypot.f64 re im) 2)
(exp.f64 (*.f64 (log.f64 (pow.f64 (hypot.f64 re im) 6)) 1/3))
(+.f64 -1 (+.f64 1 (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)))
(+.f64 -1 (+.f64 1 (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 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 (cbrt.f64 (pow.f64 re 2)) (cbrt.f64 (pow.f64 re 4)) (pow.f64 im 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 (sqrt.f64 re) (pow.f64 re 3/2) (pow.f64 im 2))
(fma.f64 (pow.f64 re 3/2) (sqrt.f64 re) (pow.f64 im 2))
(fma.f64 (sqrt.f64 im) (pow.f64 im 3/2) (pow.f64 re 2))
(fma.f64 (pow.f64 im 3/2) (sqrt.f64 im) (pow.f64 re 2))
(fma.f64 (cbrt.f64 (pow.f64 re 4)) (cbrt.f64 (pow.f64 re 2)) (pow.f64 im 2))
(fma.f64 (cbrt.f64 (pow.f64 re 2)) (cbrt.f64 (pow.f64 re 4)) (pow.f64 im 2))
(fma.f64 (pow.f64 re 3/2) (sqrt.f64 re) (pow.f64 im 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 (sqrt.f64 im) (pow.f64 im 3/2) (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))
(+.f64 (pow.f64 im 2) (pow.f64 (cbrt.f64 re) 6))
(fma.f64 im im (pow.f64 (cbrt.f64 re) 6))
(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))

eval28.0ms (1.5%)

Compiler

Compiled 1397 to 937 computations (32.9% saved)

prune19.0ms (1%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New88088
Fresh000
Picked011
Done011
Total88290
Accuracy
100.0%
Counts
90 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(pow.f64 (hypot.f64 re im) 2)
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 30 to 18 computations (40% saved)

regimes39.0ms (2%)

Accuracy

Total -0.0b remaining (-200%)

Threshold costs -0b (-200%)

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

5 calls:

28.0ms
re
3.0ms
im
3.0ms
(+.f64 (*.f64 re re) (*.f64 im im))
3.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 25 to 15 computations (40% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Rules
+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01031
11131
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 re re) (*.f64 im im))
Outputs
(+.f64 (*.f64 re re) (*.f64 im im))
Compiler

Compiled 9 to 5 computations (44.4% saved)

soundness0.0ms (0%)

end0.0ms (0%)

preprocess118.0ms (6.1%)

Remove

(sort re im)

(abs im)

(abs re)

Compiler

Compiled 144 to 80 computations (44.4% saved)

Profiling

Loading profile data...