math.abs on complex

Time bar (total: 3.1s)

analyze1.0ms (0%)

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
100%99.9%0%0.1%0%0%0%3
Compiler

Compiled 11 to 7 computations (36.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-add: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
const: 0.0ms (0% of total)
ival-sqrt: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

sample857.0ms (27.3%)

Results
630.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 370.0ms
ival-mult: 234.0ms (63.3% of total)
ival-sqrt: 79.0ms (21.4% of total)
ival-add: 47.0ms (12.7% of total)
const: 7.0ms (1.9% of total)
backward-pass: 3.0ms (0.8% of total)
Bogosity

preprocess24.0ms (0.8%)

Algorithm
egg-herbie
Rules
164×fmsub-define
160×fnmadd-define
148×fnmsub-define
104×fmm-def
92×sum3-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01820
14420
29520
321520
442620
558320
665820
766120
063
193
2113
0113
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(sqrt (+ (* re re) (* im im)))
Outputs
(sqrt (+ (* re re) (* im im)))
(hypot.f64 re im)
Call 2
Inputs
(sqrt (+ (* re re) (* im im)))
(sqrt (+ (* (neg re) (neg re)) (* im im)))
(sqrt (+ (* re re) (* (neg im) (neg im))))
(neg (sqrt (+ (* (neg re) (neg re)) (* im im))))
(neg (sqrt (+ (* re re) (* (neg im) (neg im)))))
(sqrt (+ (* im im) (* re re)))
Outputs
(sqrt (+ (* re re) (* im im)))
(hypot re im)
(sqrt (+ (* (neg re) (neg re)) (* im im)))
(hypot re im)
(sqrt (+ (* re re) (* (neg im) (neg im))))
(hypot re im)
(neg (sqrt (+ (* (neg re) (neg re)) (* im im))))
(neg (hypot re im))
(neg (sqrt (+ (* re re) (* (neg im) (neg im)))))
(neg (hypot re im))
(sqrt (+ (* im im) (* re re)))
(hypot re im)
Symmetry

(abs re)

(abs im)

(sort re im)

explain75.0ms (2.4%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1310-2(8.40162835872735e-223 6.011259754813324e-158)(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
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))
Results
37.0ms512×0valid
Compiler

Compiled 62 to 20 computations (67.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 15.0ms
ival-mult: 8.0ms (52.6% of total)
ival-sqrt: 4.0ms (26.3% of total)
ival-add: 2.0ms (13.1% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

eval0.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

prune2.0ms (0.1%)

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

Compiled 5 to 3 computations (40% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
cost-diff0
(hypot.f64 re im)
Rules
fma-lowering-fma.f32
fma-define
+-lowering-+.f64
hypot-lowering-hypot.f64
*-lowering-*.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
065
195
2115
0115
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(sqrt (+ (* re re) (* im im)))
re
im
Outputs
(sqrt (+ (* re re) (* im im)))
(hypot.f64 re im)
re
im

localize22.0ms (0.7%)

Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(hypot.f64 re im)
Results
16.0ms256×0valid
Compiler

Compiled 8 to 4 computations (50% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
compiled-spec: 9.0ms (52.3% of total)
ival-mult: 4.0ms (23.3% of total)
ival-add: 2.0ms (11.6% of total)
ival-sqrt: 2.0ms (11.6% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series6.0ms (0.2%)

Counts
1 → 24
Calls
Call 1
Inputs
#<alt (sqrt (+ (* re re) (* im im)))>
Outputs
#<alt im>
#<alt (+ im (* 1/2 (/ (pow re 2) im)))>
#<alt (+ im (* (pow re 2) (+ (* -1/8 (/ (pow re 2) (pow im 3))) (* 1/2 (/ 1 im)))))>
#<alt (+ im (* (pow re 2) (+ (* (pow re 2) (- (* 1/16 (/ (pow re 2) (pow im 5))) (* 1/8 (/ 1 (pow im 3))))) (* 1/2 (/ 1 im)))))>
#<alt re>
#<alt (* re (+ 1 (* 1/2 (/ (pow im 2) (pow re 2)))))>
#<alt (* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2))))))>
#<alt (* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (+ (* 1/16 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2)))))))>
#<alt (* -1 re)>
#<alt (* -1 (* re (+ 1 (* 1/2 (/ (pow im 2) (pow re 2))))))>
#<alt (* -1 (* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))))>
#<alt (* -1 (* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (+ (* 1/16 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))))>
#<alt re>
#<alt (+ re (* 1/2 (/ (pow im 2) re)))>
#<alt (+ re (* (pow im 2) (+ (* -1/8 (/ (pow im 2) (pow re 3))) (* 1/2 (/ 1 re)))))>
#<alt (+ re (* (pow im 2) (+ (* (pow im 2) (- (* 1/16 (/ (pow im 2) (pow re 5))) (* 1/8 (/ 1 (pow re 3))))) (* 1/2 (/ 1 re)))))>
#<alt im>
#<alt (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2))))))>
#<alt (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (+ (* 1/16 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2)))))))>
#<alt (* -1 im)>
#<alt (* -1 (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2))))))>
#<alt (* -1 (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))))>
#<alt (* -1 (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (+ (* 1/16 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))))>
Calls

6 calls:

TimeVariablePointExpression
4.0ms
re
@inf
(sqrt (+ (* re re) (* im im)))
1.0ms
re
@0
(sqrt (+ (* re re) (* im im)))
1.0ms
im
@inf
(sqrt (+ (* re re) (* im im)))
0.0ms
im
@0
(sqrt (+ (* re re) (* im im)))
0.0ms
re
@-inf
(sqrt (+ (* re re) (* im im)))

rewrite309.0ms (9.9%)

Algorithm
batch-egg-rewrite
Rules
2274×fma-lowering-fma.f32
2274×fma-lowering-fma.f64
2148×*-lowering-*.f32
2148×*-lowering-*.f64
1732×fma-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
063
1273
22153
322603
083073
Stop Event
iter limit
node limit
Counts
1 → 46
Calls
Call 1
Inputs
(sqrt (+ (* re re) (* im im)))
Outputs
(exp.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (+.f64 (*.f64 re re) (*.f64 im im)))))
(exp.f64 (*.f64 (log.f64 (pow.f64 (+.f64 (*.f64 re re) (*.f64 im im)) #s(literal 1/4 binary64))) #s(literal 2 binary64)))
(exp.f64 (*.f64 (log.f64 (*.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (+.f64 (*.f64 re re) (*.f64 im im)))) #s(literal 1/4 binary64)))
(exp.f64 (*.f64 (*.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/4 binary64)) #s(literal 2 binary64)))
(exp.f64 (+.f64 (*.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/4 binary64)) (*.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/4 binary64))))
(hypot.f64 re im)
(hypot.f64 im re)
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (hypot.f64 (*.f64 im (*.f64 im im)) (*.f64 re (*.f64 re re))) (sqrt.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))
(/.f64 (sqrt.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 #s(literal 1 binary64) (sqrt.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 #s(literal 1 binary64) (/.f64 (sqrt.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) (hypot.f64 (*.f64 im (*.f64 im im)) (*.f64 re (*.f64 re re)))))
(/.f64 #s(literal 1 binary64) (/.f64 (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im))) (sqrt.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))))
(/.f64 (sqrt.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im (*.f64 im (*.f64 im im))))))) (sqrt.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))
(/.f64 (sqrt.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (sqrt.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (sqrt.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re))))) (sqrt.f64 (-.f64 (*.f64 im im) (*.f64 re re))))
(/.f64 (neg.f64 (hypot.f64 (*.f64 im (*.f64 im im)) (*.f64 re (*.f64 re re)))) (neg.f64 (sqrt.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))
(/.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (neg.f64 (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im)))))
(pow.f64 (+.f64 (*.f64 re re) (*.f64 im im)) #s(literal 1/2 binary64))
(pow.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal -1/2 binary64))
(pow.f64 (pow.f64 (+.f64 (*.f64 re re) (*.f64 im im)) #s(literal 1/4 binary64)) #s(literal 2 binary64))
(pow.f64 (*.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/4 binary64))
(pow.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im)))) #s(literal -1 binary64))
(pow.f64 (/.f64 (sqrt.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) (hypot.f64 (*.f64 im (*.f64 im im)) (*.f64 re (*.f64 re re)))) #s(literal -1 binary64))
(pow.f64 (/.f64 (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im))) (sqrt.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) #s(literal -1 binary64))
(pow.f64 (exp.f64 #s(literal 1/2 binary64)) (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
(*.f64 (hypot.f64 re im) (pow.f64 (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) #s(literal 1/2 binary64)))
(*.f64 (hypot.f64 re im) (pow.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/2 binary64)))
(*.f64 (hypot.f64 (*.f64 im (*.f64 im im)) (*.f64 re (*.f64 re re))) (pow.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) #s(literal -1/2 binary64)))
(*.f64 (sqrt.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) (pow.f64 (*.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) (pow.f64 (/.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (pow.f64 (-.f64 (*.f64 re re) (*.f64 im im)) #s(literal -1/2 binary64)))
(*.f64 (pow.f64 (+.f64 (*.f64 re re) (*.f64 im im)) #s(literal 1/4 binary64)) (pow.f64 (+.f64 (*.f64 re re) (*.f64 im im)) #s(literal 1/4 binary64)))
(*.f64 (pow.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) #s(literal -1/2 binary64)) (hypot.f64 (*.f64 im (*.f64 im im)) (*.f64 re (*.f64 re re))))
(*.f64 (pow.f64 (-.f64 (*.f64 re re) (*.f64 im im)) #s(literal -1/2 binary64)) (sqrt.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))
(*.f64 (sqrt.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im (*.f64 im (*.f64 im im))))))) (pow.f64 (/.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (pow.f64 (/.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re))))) (pow.f64 (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 im im) (*.f64 re re))) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 #s(literal 1 binary64) #s(literal 1/2 binary64)) (hypot.f64 re im))
(*.f64 (pow.f64 (/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) #s(literal 1/2 binary64)) (hypot.f64 re im))
(*.f64 (pow.f64 (/.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (+.f64 re im)) #s(literal 1/2 binary64)) (pow.f64 (+.f64 re im) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 (/.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 (*.f64 re re) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))) (*.f64 (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))) #s(literal 1/2 binary64)) (sqrt.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))) (-.f64 (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))))))
(*.f64 (pow.f64 (/.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im (*.f64 im (*.f64 im im))))) (-.f64 (*.f64 (*.f64 re re) (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))) #s(literal 1/2 binary64)) (sqrt.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))
(*.f64 (pow.f64 (/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im (*.f64 im (*.f64 im im)))))) #s(literal 1/2 binary64)) (sqrt.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (+.f64 (*.f64 re re) (*.f64 im im))))))
(*.f64 (pow.f64 (pow.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im (*.f64 im (*.f64 im im))))) #s(literal 1/4 binary64)) #s(literal 2 binary64)) (pow.f64 (pow.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) #s(literal -1/4 binary64)) #s(literal 2 binary64)))
(*.f64 (pow.f64 (pow.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) #s(literal 1/4 binary64)) #s(literal 2 binary64)) (pow.f64 (pow.f64 (-.f64 (*.f64 re re) (*.f64 im im)) #s(literal -1/4 binary64)) #s(literal 2 binary64)))

simplify202.0ms (6.4%)

Algorithm
egg-herbie
Rules
3804×*-lowering-*.f32
3804×*-lowering-*.f64
2068×+-lowering-+.f64
2068×+-lowering-+.f32
1652×fnmadd-define
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
099386
1292376
21042368
34055340
08391340
Stop Event
iter limit
node limit
Counts
24 → 24
Calls
Call 1
Inputs
im
(+ im (* 1/2 (/ (pow re 2) im)))
(+ im (* (pow re 2) (+ (* -1/8 (/ (pow re 2) (pow im 3))) (* 1/2 (/ 1 im)))))
(+ im (* (pow re 2) (+ (* (pow re 2) (- (* 1/16 (/ (pow re 2) (pow im 5))) (* 1/8 (/ 1 (pow im 3))))) (* 1/2 (/ 1 im)))))
re
(* re (+ 1 (* 1/2 (/ (pow im 2) (pow re 2)))))
(* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (+ (* 1/16 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2)))))))
(* -1 re)
(* -1 (* re (+ 1 (* 1/2 (/ (pow im 2) (pow re 2))))))
(* -1 (* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))))
(* -1 (* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (+ (* 1/16 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))))
re
(+ re (* 1/2 (/ (pow im 2) re)))
(+ re (* (pow im 2) (+ (* -1/8 (/ (pow im 2) (pow re 3))) (* 1/2 (/ 1 re)))))
(+ re (* (pow im 2) (+ (* (pow im 2) (- (* 1/16 (/ (pow im 2) (pow re 5))) (* 1/8 (/ 1 (pow re 3))))) (* 1/2 (/ 1 re)))))
im
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (+ (* 1/16 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2)))))))
(* -1 im)
(* -1 (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2))))))
(* -1 (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))))
(* -1 (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (+ (* 1/16 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))))
Outputs
im
(+ im (* 1/2 (/ (pow re 2) im)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(+ im (* (pow re 2) (+ (* -1/8 (/ (pow re 2) (pow im 3))) (* 1/2 (/ 1 im)))))
(+.f64 im (*.f64 (*.f64 re re) (+.f64 (/.f64 (*.f64 re (*.f64 re #s(literal -1/8 binary64))) (*.f64 im (*.f64 im im))) (/.f64 #s(literal 1/2 binary64) im))))
(+ im (* (pow re 2) (+ (* (pow re 2) (- (* 1/16 (/ (pow re 2) (pow im 5))) (* 1/8 (/ 1 (pow im 3))))) (* 1/2 (/ 1 im)))))
(+.f64 im (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1/2 binary64) im) (*.f64 (*.f64 re re) (+.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal 1/16 binary64)) (pow.f64 im #s(literal 5 binary64))) (/.f64 #s(literal -1/8 binary64) (*.f64 im (*.f64 im im))))))))
re
(* re (+ 1 (* 1/2 (/ (pow im 2) (pow re 2)))))
(+.f64 re (*.f64 im (/.f64 (*.f64 im #s(literal 1/2 binary64)) re)))
(* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(+.f64 (*.f64 im (/.f64 (*.f64 im #s(literal 1/2 binary64)) re)) (*.f64 re (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 im (*.f64 im (*.f64 im im)))) (*.f64 re (*.f64 re (*.f64 re re)))))))
(* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (+ (* 1/16 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2)))))))
(+.f64 (*.f64 im (/.f64 (*.f64 im #s(literal 1/2 binary64)) re)) (*.f64 re (+.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 im (*.f64 im (*.f64 im im)))) (*.f64 re (*.f64 re (*.f64 re re)))) (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 #s(literal 1/16 binary64) (pow.f64 im #s(literal 6 binary64))) (pow.f64 re #s(literal 6 binary64)))))))
(* -1 re)
(-.f64 #s(literal 0 binary64) re)
(* -1 (* re (+ 1 (* 1/2 (/ (pow im 2) (pow re 2))))))
(-.f64 (-.f64 #s(literal 0 binary64) re) (*.f64 im (/.f64 (*.f64 im #s(literal 1/2 binary64)) re)))
(* -1 (* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))))
(-.f64 (*.f64 re (+.f64 #s(literal -1 binary64) (*.f64 #s(literal 1/8 binary64) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re))))))) (*.f64 im (/.f64 (*.f64 im #s(literal 1/2 binary64)) re)))
(* -1 (* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (+ (* 1/16 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))))
(-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (/.f64 (*.f64 im #s(literal 1/2 binary64)) re)) (*.f64 re (+.f64 (/.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 im (*.f64 im (*.f64 im im)))) (*.f64 re (*.f64 re (*.f64 re re)))) (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 #s(literal 1/16 binary64) (pow.f64 im #s(literal 6 binary64))) (pow.f64 re #s(literal 6 binary64))))))))
re
(+ re (* 1/2 (/ (pow im 2) re)))
(+.f64 re (*.f64 im (/.f64 (*.f64 im #s(literal 1/2 binary64)) re)))
(+ re (* (pow im 2) (+ (* -1/8 (/ (pow im 2) (pow re 3))) (* 1/2 (/ 1 re)))))
(+.f64 re (*.f64 im (*.f64 im (+.f64 (*.f64 im (*.f64 im (/.f64 #s(literal -1/8 binary64) (*.f64 re (*.f64 re re))))) (/.f64 #s(literal 1/2 binary64) re)))))
(+ re (* (pow im 2) (+ (* (pow im 2) (- (* 1/16 (/ (pow im 2) (pow re 5))) (* 1/8 (/ 1 (pow re 3))))) (* 1/2 (/ 1 re)))))
(+.f64 re (*.f64 (*.f64 im im) (+.f64 (/.f64 #s(literal 1/2 binary64) re) (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 im (*.f64 im #s(literal 1/16 binary64))) (pow.f64 re #s(literal 5 binary64))) (/.f64 #s(literal -1/8 binary64) (*.f64 re (*.f64 re re))))))))
im
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(+.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) (*.f64 im (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 re (*.f64 re (*.f64 re (*.f64 re #s(literal -1/8 binary64))))) (*.f64 im (*.f64 im (*.f64 im im)))))))
(* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (+ (* 1/16 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2)))))))
(+.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) (*.f64 im (+.f64 (/.f64 (*.f64 #s(literal 1/16 binary64) (pow.f64 re #s(literal 6 binary64))) (pow.f64 im #s(literal 6 binary64))) (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 re (*.f64 re (*.f64 re (*.f64 re #s(literal -1/8 binary64))))) (*.f64 im (*.f64 im (*.f64 im im))))))))
(* -1 im)
(-.f64 #s(literal 0 binary64) im)
(* -1 (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2))))))
(-.f64 (-.f64 #s(literal 0 binary64) im) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* -1 (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))))
(-.f64 (*.f64 im (+.f64 #s(literal -1 binary64) (*.f64 #s(literal 1/8 binary64) (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* -1 (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (+ (* 1/16 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))))
(-.f64 (*.f64 (-.f64 #s(literal 0 binary64) im) (+.f64 (/.f64 (*.f64 #s(literal 1/16 binary64) (pow.f64 re #s(literal 6 binary64))) (pow.f64 im #s(literal 6 binary64))) (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 re (*.f64 re (*.f64 re (*.f64 re #s(literal -1/8 binary64))))) (*.f64 im (*.f64 im (*.f64 im im))))))) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))

eval9.0ms (0.3%)

Compiler

Compiled 1790 to 248 computations (86.1% saved)

prune9.0ms (0.3%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New68270
Fresh000
Picked011
Done000
Total68371
Accuracy
100.0%
Counts
71 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 re im)
93.1%
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
99.2%
im
Compiler

Compiled 19 to 12 computations (36.8% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 re re)
cost-diff0
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
cost-diff0
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
cost-diff0
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
Rules
42×*-lowering-*.f32
42×*-lowering-*.f64
22×fma-define
16×*-commutative
16×fma-lowering-fma.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0728
11327
22327
33727
44727
54827
04827
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
im
(+ im (/ (* 1/2 (* re re)) im))
im
(/ (* 1/2 (* re re)) im)
(* 1/2 (* re re))
1/2
(* re re)
re
Outputs
im
(+ im (/ (* 1/2 (* re re)) im))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
im
(/ (* 1/2 (* re re)) im)
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (* re re))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
1/2
#s(literal 1/2 binary64)
(* re re)
(*.f64 re re)
re

localize30.0ms (0.9%)

Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
accuracy100.0%
(*.f64 re re)
accuracy100.0%
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
accuracy86.9%
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
Results
21.0ms256×0valid
Compiler

Compiled 31 to 8 computations (74.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 10.0ms
ival-mult: 4.0ms (39.5% of total)
ival-div: 3.0ms (29.6% of total)
ival-add: 3.0ms (29.6% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series5.0ms (0.2%)

Counts
4 → 72
Calls
Call 1
Inputs
#<alt (+ im (/ (* 1/2 (* re re)) im))>
#<alt (/ (* 1/2 (* re re)) im)>
#<alt (* 1/2 (* re re))>
#<alt (* re re)>
Outputs
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)>
#<alt (/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)>
#<alt (/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)>
#<alt im>
#<alt (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt im>
#<alt (* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))>
#<alt (* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))>
#<alt (* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))>
#<alt im>
#<alt (+ im (* 1/2 (/ (pow re 2) im)))>
#<alt (+ im (* 1/2 (/ (pow re 2) im)))>
#<alt (+ im (* 1/2 (/ (pow re 2) im)))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (* 1/2 (pow re 2))>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
#<alt (pow re 2)>
Calls

18 calls:

TimeVariablePointExpression
1.0ms
re
@0
(+ im (/ (* 1/2 (* re re)) im))
1.0ms
im
@0
(+ im (/ (* 1/2 (* re re)) im))
0.0ms
re
@inf
(+ im (/ (* 1/2 (* re re)) im))
0.0ms
im
@inf
(+ im (/ (* 1/2 (* re re)) im))
0.0ms
re
@0
(/ (* 1/2 (* re re)) im)

rewrite258.0ms (8.2%)

Algorithm
batch-egg-rewrite
Rules
3028×*-lowering-*.f32
3028×*-lowering-*.f64
1978×/-lowering-/.f32
1978×/-lowering-/.f64
1586×fnmadd-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0724
13623
231223
3543423
0826123
Stop Event
iter limit
node limit
Counts
4 → 147
Calls
Call 1
Inputs
(+ im (/ (* 1/2 (* re re)) im))
(/ (* 1/2 (* re re)) im)
(* 1/2 (* re re))
(* re re)
Outputs
(+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)))
(+.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im)
(+.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (neg.f64 (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(-.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))
(-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) (-.f64 #s(literal 0 binary64) im))
(-.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(-.f64 (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im)) (/.f64 (*.f64 im im) (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im)))
(fma.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im) im)
(fma.f64 (*.f64 re re) (/.f64 #s(literal 1/2 binary64) im) im)
(fma.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (/.f64 #s(literal 1 binary64) im) im)
(fma.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) (/.f64 #s(literal -1 binary64) im) im)
(fma.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im)
(fma.f64 (/.f64 #s(literal 1 binary64) im) (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(fma.f64 (*.f64 #s(literal 1/2 binary64) re) (/.f64 re im) im)
(fma.f64 (/.f64 (*.f64 re re) im) #s(literal 1/2 binary64) im)
(neg.f64 (/.f64 (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))))
(neg.f64 (/.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (+.f64 (-.f64 #s(literal 0 binary64) im) (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)))))
(neg.f64 (/.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))))))
(neg.f64 (/.f64 (+.f64 (*.f64 im (-.f64 #s(literal 0 binary64) im)) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(/.f64 (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)))))
(/.f64 #s(literal 1 binary64) (/.f64 (/.f64 #s(literal 1 binary64) (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)))) #s(literal 1 binary64)))
(/.f64 #s(literal 1 binary64) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (-.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (*.f64 im im))))
(/.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))
(/.f64 #s(literal -1 binary64) (neg.f64 (/.f64 #s(literal 1 binary64) (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))))))
(/.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))))))
(/.f64 (+.f64 (*.f64 im (-.f64 #s(literal 0 binary64) im)) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (+.f64 (-.f64 #s(literal 0 binary64) im) (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))))
(/.f64 (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (*.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))))) (*.f64 (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))) (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (-.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (*.f64 im (*.f64 im im)))))))
(/.f64 (-.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (*.f64 im im)) (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im))
(/.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) (*.f64 (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))) (-.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))))
(/.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (+.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))))))))
(/.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/16 binary64) (*.f64 (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (+.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))))))
(/.f64 (-.f64 (*.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(/.f64 (*.f64 (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (*.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (-.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) #s(literal 1 binary64)) (*.f64 (-.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(/.f64 (*.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/16 binary64) (*.f64 (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(/.f64 (neg.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))))) (neg.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))))
(/.f64 (neg.f64 (+.f64 (*.f64 im (-.f64 #s(literal 0 binary64) im)) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))))) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) im) (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)))))
(/.f64 (neg.f64 (-.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (*.f64 im im))) (neg.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im)))
(/.f64 (-.f64 (pow.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) #s(literal 3 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) #s(literal 3 binary64))) (+.f64 (*.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (+.f64 (*.f64 (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (*.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))))
(/.f64 (-.f64 (*.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (*.f64 (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))) (+.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(/.f64 (*.f64 (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) #s(literal 1 binary64)) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))
(/.f64 (*.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) #s(literal 1 binary64)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))
(/.f64 (*.f64 (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (*.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))) (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (-.f64 (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))) (*.f64 im (*.f64 im im))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))) (-.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/64 binary64) (*.f64 (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (+.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))))))
(/.f64 (*.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 #s(literal 1/16 binary64) (*.f64 (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))))
(pow.f64 (/.f64 #s(literal 1 binary64) (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)))) #s(literal -1 binary64))
(*.f64 (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(*.f64 (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))) (/.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(*.f64 (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))))))
(*.f64 (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))) (*.f64 (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))))
(*.f64 (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))) (/.f64 (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))))))
(*.f64 #s(literal 1 binary64) (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))))
(*.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(*.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) (/.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))))
(*.f64 (+.f64 (*.f64 im (-.f64 #s(literal 0 binary64) im)) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (/.f64 #s(literal 1 binary64) (+.f64 (-.f64 #s(literal 0 binary64) im) (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)))))
(*.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))))) (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))))
(*.f64 (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (-.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))))
(*.f64 (-.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (*.f64 im im)) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im)))
(*.f64 (/.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (-.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))))) (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))))
(*.f64 (/.f64 (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (*.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (*.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im)))))) (+.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (-.f64 (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (*.f64 im im)))))
(*.f64 (/.f64 (+.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re)))))) (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re))) (*.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im))))) (-.f64 (*.f64 im im) (/.f64 (-.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) im) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))))
(*.f64 (/.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/4 binary64)) (/.f64 im (*.f64 re re)))) (-.f64 (*.f64 im (*.f64 im im)) (*.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 (*.f64 re re) im) (/.f64 (/.f64 (*.f64 re re) im) (/.f64 im (*.f64 re re))))))) (+.f64 (*.f64 im im) (*.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) (+.f64 im (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))))))
(exp.f64 (*.f64 (log.f64 (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))) #s(literal -1 binary64)))
(-.f64 #s(literal 0 binary64) (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))
(-.f64 (/.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) im)) (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))
(neg.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))
(neg.f64 (*.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im) #s(literal 1 binary64)))
(/.f64 #s(literal 1/2 binary64) (/.f64 im (*.f64 re re)))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) (-.f64 #s(literal 0 binary64) im))
(/.f64 #s(literal 1 binary64) (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))))
(/.f64 (/.f64 #s(literal 1 binary64) im) (/.f64 #s(literal 2 binary64) (*.f64 re re)))
(/.f64 #s(literal -1 binary64) (/.f64 im (*.f64 (*.f64 re re) #s(literal -1/2 binary64))))
(/.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) #s(literal -1 binary64)) im)
(pow.f64 (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))) #s(literal -1 binary64))
(*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))
(*.f64 #s(literal 1/2 binary64) (*.f64 (/.f64 (*.f64 re re) im) #s(literal 1 binary64)))
(*.f64 re (/.f64 (*.f64 #s(literal 1/2 binary64) re) im))
(*.f64 re (*.f64 (/.f64 re im) #s(literal 1/2 binary64)))
(*.f64 re (*.f64 re (/.f64 #s(literal 1/2 binary64) im)))
(*.f64 re (*.f64 (*.f64 #s(literal 1/2 binary64) re) (/.f64 #s(literal 1 binary64) im)))
(*.f64 re (*.f64 #s(literal 1/2 binary64) (/.f64 re im)))
(*.f64 (*.f64 re re) (/.f64 #s(literal 1/2 binary64) im))
(*.f64 (*.f64 re re) (*.f64 (/.f64 #s(literal 1/2 binary64) im) #s(literal 1 binary64)))
(*.f64 (*.f64 re re) (*.f64 #s(literal -1/2 binary64) (/.f64 #s(literal -1 binary64) im)))
(*.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (/.f64 #s(literal 1 binary64) im))
(*.f64 (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)) #s(literal 1 binary64))
(*.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) (/.f64 #s(literal -1 binary64) im))
(*.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) (*.f64 (/.f64 #s(literal -1 binary64) im) #s(literal 1 binary64)))
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im)))
(*.f64 (/.f64 #s(literal 1 binary64) im) (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))
(*.f64 (/.f64 #s(literal 1 binary64) im) (pow.f64 (/.f64 #s(literal 2 binary64) (*.f64 re re)) #s(literal -1 binary64)))
(*.f64 (*.f64 #s(literal 1/2 binary64) re) (/.f64 re im))
(*.f64 (*.f64 #s(literal 1/2 binary64) re) (*.f64 (/.f64 re im) #s(literal 1 binary64)))
(*.f64 (*.f64 #s(literal 1/2 binary64) re) (*.f64 (-.f64 #s(literal 0 binary64) re) (/.f64 #s(literal -1 binary64) im)))
(*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/2 binary64))
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))
(*.f64 (-.f64 #s(literal 0 binary64) (*.f64 re re)) (*.f64 #s(literal 1/2 binary64) (/.f64 #s(literal -1 binary64) im)))
(*.f64 (-.f64 #s(literal 0 binary64) (*.f64 re re)) (/.f64 #s(literal 1/2 binary64) (-.f64 #s(literal 0 binary64) im)))
(*.f64 (/.f64 #s(literal -1 binary64) im) (*.f64 (*.f64 re re) #s(literal -1/2 binary64)))
(*.f64 #s(literal -1/2 binary64) (/.f64 (-.f64 #s(literal 0 binary64) (*.f64 re re)) im))
(*.f64 #s(literal -1/2 binary64) (/.f64 (*.f64 re re) (-.f64 #s(literal 0 binary64) im)))
(*.f64 #s(literal -1/2 binary64) (*.f64 (*.f64 re re) (/.f64 #s(literal -1 binary64) im)))
(*.f64 (*.f64 re #s(literal -1/2 binary64)) (*.f64 re (/.f64 #s(literal -1 binary64) im)))
(*.f64 (*.f64 re #s(literal -1/2 binary64)) (/.f64 re (-.f64 #s(literal 0 binary64) im)))
(*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re))
(*.f64 (/.f64 #s(literal 1/2 binary64) im) (*.f64 re re))
(*.f64 (*.f64 #s(literal 1 binary64) (*.f64 re re)) (/.f64 #s(literal 1/2 binary64) im))
(*.f64 (/.f64 (*.f64 re re) #s(literal -1 binary64)) (/.f64 #s(literal -1/2 binary64) im))
(*.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) re) #s(literal -1 binary64)) (/.f64 (-.f64 #s(literal 0 binary64) re) im))
(*.f64 (/.f64 (-.f64 #s(literal 0 binary64) (*.f64 re re)) #s(literal -1 binary64)) (/.f64 #s(literal 1/2 binary64) im))
(*.f64 (/.f64 (*.f64 re #s(literal -1/2 binary64)) #s(literal -1 binary64)) (/.f64 re im))
(*.f64 (pow.f64 (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))) #s(literal -1/2 binary64)) (pow.f64 (/.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re re))) #s(literal -1/2 binary64)))
(*.f64 (*.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) re)) (/.f64 re im))
(*.f64 (*.f64 (/.f64 #s(literal 1 binary64) im) (*.f64 #s(literal 1/2 binary64) re)) re)
(*.f64 (/.f64 #s(literal 1 binary64) (/.f64 im (*.f64 #s(literal 1/2 binary64) re))) re)
(-.f64 #s(literal 0 binary64) (*.f64 (*.f64 re re) #s(literal -1/2 binary64)))
(neg.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(*.f64 #s(literal 1/2 binary64) (*.f64 (*.f64 re re) #s(literal 1 binary64)))
(*.f64 #s(literal 1/2 binary64) (neg.f64 (-.f64 #s(literal 0 binary64) (*.f64 re re))))
(*.f64 re (*.f64 #s(literal 1/2 binary64) re))
(*.f64 re (*.f64 (*.f64 #s(literal 1/2 binary64) re) #s(literal 1 binary64)))
(*.f64 (*.f64 re re) #s(literal 1/2 binary64))
(*.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) (*.f64 re re)))
(*.f64 (*.f64 #s(literal 1/2 binary64) re) re)
(*.f64 (*.f64 #s(literal 1/2 binary64) re) (neg.f64 (-.f64 #s(literal 0 binary64) re)))
(*.f64 (*.f64 #s(literal 1/2 binary64) re) (*.f64 re #s(literal 1 binary64)))
(*.f64 #s(literal -1 binary64) (*.f64 (*.f64 re re) #s(literal -1/2 binary64)))
(*.f64 (-.f64 #s(literal 0 binary64) (*.f64 re re)) #s(literal -1/2 binary64))
(*.f64 #s(literal -1/2 binary64) (-.f64 #s(literal 0 binary64) (*.f64 re re)))
(*.f64 (*.f64 re #s(literal -1/2 binary64)) (-.f64 #s(literal 0 binary64) re))
(*.f64 (*.f64 #s(literal 1 binary64) (*.f64 re re)) #s(literal 1/2 binary64))
(*.f64 (neg.f64 (-.f64 #s(literal 0 binary64) (*.f64 re re))) #s(literal 1/2 binary64))
(*.f64 (neg.f64 (*.f64 re #s(literal -1/2 binary64))) re)
(*.f64 (*.f64 #s(literal 1 binary64) (*.f64 #s(literal 1/2 binary64) re)) re)
(*.f64 (*.f64 #s(literal 1 binary64) re) (*.f64 #s(literal 1/2 binary64) re))
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 re)))
(pow.f64 re #s(literal 2 binary64))
(pow.f64 (*.f64 re re) #s(literal 1 binary64))
(pow.f64 (exp.f64 (log.f64 re)) #s(literal 2 binary64))
(*.f64 re re)
(*.f64 (exp.f64 (log.f64 re)) (exp.f64 (log.f64 re)))

simplify164.0ms (5.2%)

Algorithm
egg-herbie
Rules
2704×*-lowering-*.f32
2704×*-lowering-*.f64
1850×fmm-def
1790×fma-lowering-fma.f32
1790×fma-lowering-fma.f64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
028513
173498
2182498
3643438
42730438
57701438
08365438
Stop Event
iter limit
node limit
Counts
72 → 72
Calls
Call 1
Inputs
(* 1/2 (/ (pow re 2) im))
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
im
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
im
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
im
(+ im (* 1/2 (/ (pow re 2) im)))
(+ im (* 1/2 (/ (pow re 2) im)))
(+ im (* 1/2 (/ (pow re 2) im)))
(* 1/2 (/ (pow re 2) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* 1/2 (/ (pow re 2) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(* 1/2 (pow re 2))
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
(pow re 2)
Outputs
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/.f64 (+.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im im)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/.f64 (+.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im im)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/.f64 (+.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im im)) im)
im
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
im
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
im
(+ im (* 1/2 (/ (pow re 2) im)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(+ im (* 1/2 (/ (pow re 2) im)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(+ im (* 1/2 (/ (pow re 2) im)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(* 1/2 (pow re 2))
(*.f64 #s(literal 1/2 binary64) (*.f64 re re))
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)
(pow re 2)
(*.f64 re re)

eval41.0ms (1.3%)

Compiler

Compiled 4730 to 445 computations (90.6% saved)

prune20.0ms (0.6%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New2181219
Fresh000
Picked112
Done011
Total2193222
Accuracy
100.0%
Counts
222 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 re im)
99.7%
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
99.2%
im
Compiler

Compiled 19 to 12 computations (36.8% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 #s(literal 1/2 binary64) re)
cost-diff0
(/.f64 re im)
cost-diff0
(*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re))
cost-diff0
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
Rules
42×*-lowering-*.f32
42×*-lowering-*.f64
16×fma-lowering-fma.f32
16×fma-define
16×fma-lowering-fma.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0725
11424
22824
33924
44324
54424
04424
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(+ im (* (/ re im) (* 1/2 re)))
im
(* (/ re im) (* 1/2 re))
(/ re im)
re
(* 1/2 re)
1/2
Outputs
(+ im (* (/ re im) (* 1/2 re)))
(+.f64 im (*.f64 #s(literal 1/2 binary64) (*.f64 re (/.f64 re im))))
im
(* (/ re im) (* 1/2 re))
(*.f64 #s(literal 1/2 binary64) (*.f64 re (/.f64 re im)))
(/ re im)
(/.f64 re im)
re
(* 1/2 re)
(*.f64 re #s(literal 1/2 binary64))
1/2
#s(literal 1/2 binary64)

localize61.0ms (2%)

Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(/.f64 re im)
accuracy100.0%
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
accuracy100.0%
(*.f64 #s(literal 1/2 binary64) re)
accuracy99.8%
(*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re))
Results
53.0ms256×0valid
Compiler

Compiled 28 to 8 computations (71.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-div: 3.0ms (39.1% of total)
ival-mult: 3.0ms (39.1% of total)
ival-add: 1.0ms (13% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series5.0ms (0.2%)

Counts
4 → 84
Calls
Call 1
Inputs
#<alt (+ im (* (/ re im) (* 1/2 re)))>
#<alt (* (/ re im) (* 1/2 re))>
#<alt (/ re im)>
#<alt (* 1/2 re)>
Outputs
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)>
#<alt (/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)>
#<alt (/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)>
#<alt im>
#<alt (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt im>
#<alt (* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))>
#<alt (* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))>
#<alt (* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))>
#<alt im>
#<alt (+ im (* 1/2 (/ (pow re 2) im)))>
#<alt (+ im (* 1/2 (/ (pow re 2) im)))>
#<alt (+ im (* 1/2 (/ (pow re 2) im)))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (* 1/2 (/ (pow re 2) im))>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (/ re im)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
#<alt (* 1/2 re)>
Calls

21 calls:

TimeVariablePointExpression
1.0ms
im
@-inf
(/ re im)
0.0ms
re
@inf
(/ re im)
0.0ms
im
@inf
(/ re im)
0.0ms
re
@-inf
(/ re im)
0.0ms
im
@0
(/ re im)

rewrite203.0ms (6.5%)

Algorithm
batch-egg-rewrite
Rules
2562×*-lowering-*.f32
2562×*-lowering-*.f64
1846×fma-lowering-fma.f32
1846×fma-lowering-fma.f64
1812×sum5-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0722
13521
228021
3395721
0809821
Stop Event
iter limit
node limit
Counts
4 → 131
Calls
Call 1
Inputs
(+ im (* (/ re im) (* 1/2 re)))
(* (/ re im) (* 1/2 re))
(/ re im)
(* 1/2 re)
Outputs
(+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)))
(+.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)
(+.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (neg.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) (-.f64 #s(literal 0 binary64) im))
(-.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(-.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 (*.f64 im im) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)))
(fma.f64 im (/.f64 im (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (neg.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(fma.f64 re (/.f64 (*.f64 re #s(literal 1/2 binary64)) im) im)
(fma.f64 (/.f64 re im) (*.f64 re #s(literal 1/2 binary64)) im)
(fma.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im) im)
(fma.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 re im) im)
(fma.f64 (*.f64 im im) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (neg.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(fma.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) im) re im)
(fma.f64 (*.f64 re (*.f64 re #s(literal 1/2 binary64))) (/.f64 #s(literal 1 binary64) im) im)
(fma.f64 (/.f64 (*.f64 re re) im) #s(literal 1/2 binary64) im)
(fma.f64 (/.f64 (*.f64 im im) (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)))) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))) (neg.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(fma.f64 (/.f64 (*.f64 im im) (-.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 im im) (*.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))))) (neg.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(neg.f64 (/.f64 (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))))))
(neg.f64 (/.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (+.f64 (-.f64 #s(literal 0 binary64) im) (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)))))
(neg.f64 (/.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)))))
(neg.f64 (/.f64 (+.f64 (neg.f64 (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(/.f64 (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)))))
(/.f64 #s(literal 1 binary64) (/.f64 (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)))) #s(literal 1 binary64)))
(/.f64 #s(literal 1 binary64) (/.f64 (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im) (-.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (*.f64 im im))))
(/.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))
(/.f64 #s(literal -1 binary64) (neg.f64 (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))))))
(/.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))))) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)))))
(/.f64 (+.f64 (neg.f64 (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (+.f64 (-.f64 #s(literal 0 binary64) im) (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))))
(/.f64 (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (*.f64 (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))) (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (-.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (*.f64 im (*.f64 im im)))))))
(/.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (*.f64 (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))) (-.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))))))
(/.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (+.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)))))))
(/.f64 (-.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (*.f64 im im)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im))
(/.f64 (-.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im im)))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)))))
(/.f64 (-.f64 (*.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(/.f64 (*.f64 (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (-.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 1 binary64)) (*.f64 (-.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im im)))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(/.f64 (neg.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))))) (neg.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))))))
(/.f64 (neg.f64 (+.f64 (neg.f64 (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)))) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) im) (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)))))
(/.f64 (neg.f64 (-.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (*.f64 im im))) (neg.f64 (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)))
(/.f64 (-.f64 (pow.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) #s(literal 3 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) #s(literal 3 binary64))) (+.f64 (*.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (+.f64 (*.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (*.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))))
(/.f64 (-.f64 (*.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (*.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))) (+.f64 (/.f64 (*.f64 im im) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(/.f64 (*.f64 (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))) #s(literal 1 binary64)) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))))
(/.f64 (*.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) #s(literal 1 binary64)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))
(/.f64 (*.f64 (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))))) (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (-.f64 (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))) (*.f64 im (*.f64 im im))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))))) (-.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (+.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im im)))) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))))
(pow.f64 (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)))) #s(literal -1 binary64))
(*.f64 (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))) (*.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)))))
(*.f64 (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))) (/.f64 (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im)) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(*.f64 (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)))))
(*.f64 (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))) (*.f64 (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))))))
(*.f64 (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))) (/.f64 (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)))))
(*.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))))
(*.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))))
(*.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))))) (/.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re))))))
(*.f64 (+.f64 (neg.f64 (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (/.f64 #s(literal 1 binary64) (+.f64 (-.f64 #s(literal 0 binary64) im) (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)))))
(*.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)))) (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))))
(*.f64 (/.f64 #s(literal 1 binary64) (+.f64 im (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))) (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))))
(*.f64 (-.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (*.f64 im im)) (/.f64 #s(literal 1 binary64) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)))
(*.f64 (/.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)))) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))))
(*.f64 (/.f64 (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (*.f64 (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)))))) (+.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (*.f64 (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)) (-.f64 (/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im)) (/.f64 im re)) (*.f64 im im)))))
(*.f64 (/.f64 (+.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 (*.f64 im im) (*.f64 im im)) (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im)) (*.f64 (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im))))) (+.f64 (*.f64 im im) (*.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im) (-.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) im))))
(*.f64 (/.f64 (-.f64 (*.f64 im im) (/.f64 (*.f64 (*.f64 (*.f64 re re) #s(literal 1/4 binary64)) (*.f64 re re)) (*.f64 im im))) (-.f64 (*.f64 im (*.f64 im im)) (/.f64 (*.f64 (*.f64 (*.f64 re (*.f64 re re)) #s(literal 1/8 binary64)) (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 im im) (*.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)) (+.f64 im (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))))))
(neg.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) im))
(/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re))
(/.f64 #s(literal 1 binary64) (/.f64 im (*.f64 re (*.f64 re #s(literal 1/2 binary64)))))
(/.f64 #s(literal 1 binary64) (/.f64 (/.f64 im (*.f64 re (*.f64 re #s(literal 1/2 binary64)))) #s(literal 1 binary64)))
(/.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) im) (/.f64 #s(literal 1 binary64) re))
(/.f64 (*.f64 re (*.f64 re #s(literal 1/2 binary64))) im)
(/.f64 #s(literal -1 binary64) (neg.f64 (/.f64 im (*.f64 re (*.f64 re #s(literal 1/2 binary64))))))
(/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) (-.f64 #s(literal 0 binary64) im))
(/.f64 (*.f64 re #s(literal -1/2 binary64)) (-.f64 #s(literal 0 binary64) (/.f64 im re)))
(/.f64 (*.f64 (*.f64 re #s(literal 1/2 binary64)) #s(literal -1 binary64)) (-.f64 #s(literal 0 binary64) (/.f64 im re)))
(/.f64 (*.f64 (*.f64 re (*.f64 re #s(literal 1/2 binary64))) #s(literal 1 binary64)) im)
(/.f64 (*.f64 (*.f64 re (*.f64 re #s(literal 1/2 binary64))) #s(literal -1 binary64)) (-.f64 #s(literal 0 binary64) im))
(/.f64 (neg.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64))) im)
(/.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) #s(literal -1 binary64)) im)
(pow.f64 (/.f64 im (*.f64 re (*.f64 re #s(literal 1/2 binary64)))) #s(literal -1 binary64))
(*.f64 re (/.f64 (*.f64 re #s(literal 1/2 binary64)) im))
(*.f64 (/.f64 re im) (*.f64 re #s(literal 1/2 binary64)))
(*.f64 (/.f64 re im) (/.f64 #s(literal 1/2 binary64) (/.f64 #s(literal 1 binary64) re)))
(*.f64 #s(literal 1/2 binary64) (/.f64 (*.f64 re re) im))
(*.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 re im))
(*.f64 (-.f64 #s(literal 0 binary64) re) (/.f64 (*.f64 re #s(literal -1/2 binary64)) im))
(*.f64 (-.f64 #s(literal 0 binary64) re) (*.f64 (/.f64 #s(literal -1 binary64) im) (*.f64 re #s(literal 1/2 binary64))))
(*.f64 #s(literal 1 binary64) (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 im re)))
(*.f64 (/.f64 #s(literal 1 binary64) im) (*.f64 re (*.f64 re #s(literal 1/2 binary64))))
(*.f64 (/.f64 #s(literal 1 binary64) im) (/.f64 (*.f64 re #s(literal 1/2 binary64)) (/.f64 #s(literal 1 binary64) re)))
(*.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) im) re)
(*.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) im) (/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) re)))
(*.f64 (*.f64 re (*.f64 re #s(literal 1/2 binary64))) (/.f64 #s(literal 1 binary64) im))
(*.f64 (*.f64 (*.f64 re re) #s(literal -1/2 binary64)) (/.f64 #s(literal -1 binary64) im))
(*.f64 (*.f64 re re) (/.f64 #s(literal 1/2 binary64) im))
(*.f64 (/.f64 (*.f64 re #s(literal -1/2 binary64)) im) (-.f64 #s(literal 0 binary64) re))
(*.f64 (/.f64 (*.f64 re re) im) #s(literal 1/2 binary64))
(*.f64 (/.f64 #s(literal 1/2 binary64) im) (/.f64 re (/.f64 #s(literal 1 binary64) re)))
(*.f64 (*.f64 (*.f64 re (*.f64 re #s(literal 1/2 binary64))) #s(literal 1 binary64)) (/.f64 #s(literal 1 binary64) im))
(*.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) #s(literal -1 binary64)) (/.f64 re (-.f64 #s(literal 0 binary64) im)))
(*.f64 (/.f64 (-.f64 #s(literal 0 binary64) re) #s(literal -1 binary64)) (/.f64 (*.f64 re #s(literal 1/2 binary64)) im))
(*.f64 (/.f64 (*.f64 re #s(literal 1/2 binary64)) #s(literal 1 binary64)) (/.f64 re im))
(exp.f64 (*.f64 (log.f64 (/.f64 im re)) #s(literal -1 binary64)))
(-.f64 #s(literal 0 binary64) (/.f64 re (-.f64 #s(literal 0 binary64) im)))
(-.f64 (/.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) im)) (/.f64 re (-.f64 #s(literal 0 binary64) im)))
(neg.f64 (/.f64 re (-.f64 #s(literal 0 binary64) im)))
(/.f64 re im)
(/.f64 (-.f64 #s(literal 0 binary64) re) (-.f64 #s(literal 0 binary64) im))
(/.f64 #s(literal 1 binary64) (/.f64 im re))
(/.f64 (/.f64 #s(literal 1 binary64) im) (/.f64 #s(literal 1 binary64) re))
(/.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (/.f64 im re)))
(/.f64 (*.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) re)) (-.f64 #s(literal 0 binary64) im))
(/.f64 (*.f64 (-.f64 #s(literal 0 binary64) re) #s(literal 1 binary64)) (-.f64 #s(literal 0 binary64) im))
(/.f64 (/.f64 (-.f64 #s(literal 0 binary64) re) #s(literal -1 binary64)) im)
(pow.f64 (/.f64 im re) #s(literal -1 binary64))
(*.f64 re (/.f64 #s(literal 1 binary64) im))
(*.f64 (/.f64 re im) #s(literal 1 binary64))
(*.f64 (-.f64 #s(literal 0 binary64) re) (/.f64 #s(literal -1 binary64) im))
(*.f64 #s(literal 1 binary64) (/.f64 re im))
(*.f64 (/.f64 #s(literal 1 binary64) im) re)
(*.f64 (/.f64 #s(literal 1 binary64) im) (pow.f64 (/.f64 #s(literal 1 binary64) re) #s(literal -1 binary64)))
(*.f64 #s(literal -1 binary64) (/.f64 re (-.f64 #s(literal 0 binary64) im)))
(*.f64 (/.f64 #s(literal -1 binary64) im) (-.f64 #s(literal 0 binary64) re))
(*.f64 (*.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) re)) (/.f64 #s(literal -1 binary64) im))
(*.f64 (pow.f64 (/.f64 im re) #s(literal -1/2 binary64)) (pow.f64 (/.f64 im re) #s(literal -1/2 binary64)))
(*.f64 re #s(literal 1/2 binary64))
(*.f64 #s(literal 1/2 binary64) re)
(*.f64 (*.f64 re #s(literal 1/2 binary64)) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 re #s(literal 1/2 binary64)))

simplify189.0ms (6%)

Algorithm
egg-herbie
Rules
2704×*-lowering-*.f32
2704×*-lowering-*.f64
1850×fmm-def
1790×fma-lowering-fma.f32
1790×fma-lowering-fma.f64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
030525
176510
2182510
3637450
42732450
57704450
08368450
Stop Event
iter limit
node limit
Counts
84 → 84
Calls
Call 1
Inputs
(* 1/2 (/ (pow re 2) im))
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
im
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
im
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
im
(+ im (* 1/2 (/ (pow re 2) im)))
(+ im (* 1/2 (/ (pow re 2) im)))
(+ im (* 1/2 (/ (pow re 2) im)))
(* 1/2 (/ (pow re 2) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* 1/2 (/ (pow re 2) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(* 1/2 (/ (pow re 2) im))
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(/ re im)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
(* 1/2 re)
Outputs
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/.f64 (+.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im im)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/.f64 (+.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im im)) im)
(/ (+ (* 1/2 (pow re 2)) (pow im 2)) im)
(/.f64 (+.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im im)) im)
im
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
im
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* -1 (* im (- (* -1/2 (/ (pow re 2) (pow im 2))) 1)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
im
(+ im (* 1/2 (/ (pow re 2) im)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(+ im (* 1/2 (/ (pow re 2) im)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(+ im (* 1/2 (/ (pow re 2) im)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* (pow re 2) (+ (* 1/2 (/ 1 im)) (/ im (pow re 2))))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(* 1/2 (/ (pow re 2) im))
(/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(/ re im)
(/.f64 re im)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)
(* 1/2 re)
(*.f64 #s(literal 1/2 binary64) re)

eval24.0ms (0.8%)

Compiler

Compiled 4886 to 390 computations (92% saved)

prune17.0ms (0.6%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New2150215
Fresh000
Picked011
Done022
Total2153218
Accuracy
100.0%
Counts
218 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 re im)
99.7%
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
99.2%
im
Compiler

Compiled 51 to 27 computations (47.1% saved)

regimes16.0ms (0.5%)

Counts
5 → 1
Calls
Call 1
Inputs
im
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
(hypot.f64 re im)
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
Outputs
(hypot.f64 re im)
Calls

6 calls:

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

Compiled 35 to 21 computations (40% saved)

regimes5.0ms (0.2%)

Counts
3 → 1
Calls
Call 1
Inputs
im
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
(+.f64 im (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im))
Outputs
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
Calls

3 calls:

2.0ms
im
2.0ms
re
1.0ms
(*.f64 re re)
Results
AccuracySegmentsBranch
99.7%1re
99.7%1im
99.7%1(*.f64 re re)
Compiler

Compiled 11 to 7 computations (36.4% saved)

regimes4.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
im
Outputs
im
Calls

2 calls:

2.0ms
re
1.0ms
im
Results
AccuracySegmentsBranch
99.2%1re
99.2%1im
Compiler

Compiled 6 to 4 computations (33.3% saved)

simplify7.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
11113
Stop Event
saturated
Calls
Call 1
Inputs
(hypot.f64 re im)
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
im
Outputs
(hypot.f64 re im)
(+.f64 im (*.f64 (/.f64 re im) (*.f64 #s(literal 1/2 binary64) re)))
(+.f64 im (*.f64 (/.f64 re im) (*.f64 re #s(literal 1/2 binary64))))
im

soundness523.0ms (16.7%)

Rules
3804×*-lowering-*.f32
3804×*-lowering-*.f64
3028×*-lowering-*.f32
3028×*-lowering-*.f64
2068×+-lowering-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0724
13623
231223
3543423
0826123
063
193
2113
0113
099386
1292376
21042368
34055340
08391340
Stop Event
done
iter limit
node limit
iter limit
saturated
iter limit
node limit
Compiler

Compiled 46 to 28 computations (39.1% saved)

preprocess34.0ms (1.1%)

Remove

(sort re im)

(abs im)

(abs re)

Compiler

Compiled 140 to 82 computations (41.4% saved)

end0.0ms (0%)

Profiling

Loading profile data...