math.log/1 on complex, real part

Time bar (total: 2.8s)

analyze62.0ms (2.2%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
18.8%18.7%81.2%0.1%0%0%0%5
34.4%34.3%65.6%0.1%0%0%0%6
54.7%54.6%45.3%0.1%0%0%0%7
64.8%64.8%35.1%0.1%0%0%0%8
76.2%76.1%23.8%0.1%0%0%0%9
81.8%81.8%18.1%0.1%0%0%0%10
87.8%87.7%12.2%0.1%0%0%0%11
90.8%90.7%9.2%0.1%0%0%0%12
Compiler

Compiled 12 to 8 computations (33.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 30.0ms
ival-mult: 13.0ms (43.2% of total)
ival-log: 7.0ms (23.3% of total)
ival-sqrt: 6.0ms (19.9% of total)
ival-add: 4.0ms (13.3% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

sample926.0ms (32.5%)

Results
699.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 449.0ms
ival-mult: 213.0ms (47.5% of total)
ival-log: 98.0ms (21.8% of total)
ival-sqrt: 69.0ms (15.4% of total)
ival-add: 58.0ms (12.9% of total)
const: 7.0ms (1.6% of total)
backward-pass: 3.0ms (0.7% of total)
Bogosity

preprocess23.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
02226
14826
29926
322126
443226
558926
666426
766726
074
1104
2124
0124
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(log (sqrt (+ (* re re) (* im im))))
Outputs
(log (sqrt (+ (* re re) (* im im))))
(log.f64 (hypot.f64 re im))
Call 2
Inputs
(log (sqrt (+ (* re re) (* im im))))
(log (sqrt (+ (* (neg re) (neg re)) (* im im))))
(log (sqrt (+ (* re re) (* (neg im) (neg im)))))
(neg (log (sqrt (+ (* (neg re) (neg re)) (* im im)))))
(neg (log (sqrt (+ (* re re) (* (neg im) (neg im))))))
(log (sqrt (+ (* im im) (* re re))))
Outputs
(log (sqrt (+ (* re re) (* im im))))
(log (hypot re im))
(log (sqrt (+ (* (neg re) (neg re)) (* im im))))
(log (hypot re im))
(log (sqrt (+ (* re re) (* (neg im) (neg im)))))
(log (hypot re im))
(neg (log (sqrt (+ (* (neg re) (neg re)) (* im im)))))
(neg (log (hypot re im)))
(neg (log (sqrt (+ (* re re) (* (neg im) (neg im))))))
(neg (log (hypot re im)))
(log (sqrt (+ (* im im) (* re re))))
(log (hypot re im))
Symmetry

(abs re)

(abs im)

(sort re im)

explain91.0ms (3.2%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1270-1(2.8582172934688214e-257 7.650740388843361e-160)(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
00-0-(log.f64 (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
42.0ms512×0valid
Compiler

Compiled 81 to 23 computations (71.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 22.0ms
ival-mult: 9.0ms (41.7% of total)
ival-log: 5.0ms (23.2% of total)
ival-sqrt: 4.0ms (18.5% of total)
ival-add: 2.0ms (9.3% of total)
const: 1.0ms (4.6% of total)
backward-pass: 0.0ms (0% of total)

eval0.0ms (0%)

Compiler

Compiled 6 to 4 computations (33.3% saved)

prune1.0ms (0%)

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

Compiled 6 to 4 computations (33.3% saved)

simplify5.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(hypot.f64 re im)
cost-diff0
(log.f64 (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
079
1109
2129
0129
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(log (sqrt (+ (* re re) (* im im))))
(sqrt (+ (* re re) (* im im)))
re
im
Outputs
(log (sqrt (+ (* re re) (* im im))))
(log.f64 (hypot.f64 re im))
(sqrt (+ (* re re) (* im im)))
(hypot.f64 re im)
re
im

localize28.0ms (1%)

Localize:

Found 2 expressions of interest:

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

Compiled 12 to 5 computations (58.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 20.0ms
compiled-spec: 9.0ms (45.9% of total)
ival-mult: 4.0ms (20.4% of total)
ival-log: 3.0ms (15.3% of total)
ival-add: 2.0ms (10.2% of total)
ival-sqrt: 2.0ms (10.2% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series6.0ms (0.2%)

Counts
2 → 48
Calls
Call 1
Inputs
#<alt (log (sqrt (+ (* re re) (* im im))))>
#<alt (sqrt (+ (* re re) (* im im)))>
Outputs
#<alt (log im)>
#<alt (+ (log im) (* 1/2 (/ (pow re 2) (pow im 2))))>
#<alt (+ (log im) (* (pow re 2) (+ (* -1/4 (/ (pow re 2) (pow im 4))) (* 1/2 (/ 1 (pow im 2))))))>
#<alt (+ (log im) (* (pow re 2) (+ (* (pow re 2) (- (* 1/6 (/ (pow re 2) (pow im 6))) (* 1/4 (/ 1 (pow im 4))))) (* 1/2 (/ 1 (pow im 2))))))>
#<alt (* -1 (log (/ 1 re)))>
#<alt (+ (* -1 (log (/ 1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))>
#<alt (+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))>
#<alt (+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/720 (/ (+ (* 30 (pow im 6)) (* 90 (pow im 6))) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))>
#<alt (* -1 (log (/ -1 re)))>
#<alt (+ (* -1 (log (/ -1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))>
#<alt (+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))>
#<alt (+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/720 (/ (+ (* 30 (pow im 6)) (* 90 (pow im 6))) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))>
#<alt (log re)>
#<alt (+ (log re) (* 1/2 (/ (pow im 2) (pow re 2))))>
#<alt (+ (log re) (* (pow im 2) (+ (* -1/4 (/ (pow im 2) (pow re 4))) (* 1/2 (/ 1 (pow re 2))))))>
#<alt (+ (log re) (* (pow im 2) (+ (* (pow im 2) (- (* 1/6 (/ (pow im 2) (pow re 6))) (* 1/4 (/ 1 (pow re 4))))) (* 1/2 (/ 1 (pow re 2))))))>
#<alt (* -1 (log (/ 1 im)))>
#<alt (+ (* -1 (log (/ 1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))>
#<alt (+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/720 (/ (+ (* 30 (pow re 6)) (* 90 (pow re 6))) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))>
#<alt (* -1 (log (/ -1 im)))>
#<alt (+ (* -1 (log (/ -1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))>
#<alt (+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/720 (/ (+ (* 30 (pow re 6)) (* 90 (pow re 6))) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))>
#<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

12 calls:

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

rewrite257.0ms (9%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
077
1287
22177
322737
084077
Stop Event
iter limit
node limit
Counts
2 → 67
Calls
Call 1
Inputs
(log (sqrt (+ (* re re) (* im im))))
(sqrt (+ (* re re) (* im im)))
Outputs
(log.f64 (hypot.f64 re im))
(+.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)))
(+.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im (*.f64 im (*.f64 im im))))))) (log.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))))
(+.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (log.f64 (pow.f64 (-.f64 (*.f64 re re) (*.f64 im im)) #s(literal -1/2 binary64))))
(-.f64 (*.f64 #s(literal 1/2 binary64) (log.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 #s(literal 1/2 binary64) (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))
(-.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (*.f64 #s(literal 1/2 binary64) (log.f64 (-.f64 (*.f64 re re) (*.f64 im im)))))
(-.f64 #s(literal 0 binary64) (log.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))))))
(-.f64 #s(literal 0 binary64) (log.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))))))
(-.f64 #s(literal 0 binary64) (log.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))))))))
(-.f64 (log.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)))))))) (log.f64 (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 (log.f64 (sqrt.f64 (*.f64 (neg.f64 (+.f64 (*.f64 re re) (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))))) (log.f64 (sqrt.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))))
(-.f64 (log.f64 (sqrt.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re)))))) (log.f64 (sqrt.f64 (-.f64 (*.f64 im im) (*.f64 re re)))))
(-.f64 (log.f64 (neg.f64 (hypot.f64 (*.f64 im (*.f64 im im)) (*.f64 re (*.f64 re re))))) (log.f64 (neg.f64 (sqrt.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))))
(-.f64 (log.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))) (log.f64 (neg.f64 (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im))))))
(neg.f64 (log.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))))))
(neg.f64 (log.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))))))
(neg.f64 (log.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))))))))
(*.f64 #s(literal 1/2 binary64) (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
(*.f64 #s(literal 2 binary64) (*.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/2 binary64))
(*.f64 #s(literal 1/4 binary64) (log.f64 (*.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (+.f64 (*.f64 re re) (*.f64 im im)))))
(exp.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (+.f64 (*.f64 re re) (*.f64 im im)))))
(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 (log.f64 (*.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (+.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 (neg.f64 (+.f64 (*.f64 re re) (*.f64 im im))) (-.f64 (*.f64 re re) (*.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)))))
(/.f64 (exp.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re re)) (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (*.f64 im (*.f64 im (*.f64 im im)))))))) (exp.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))))
(/.f64 (exp.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))) (exp.f64 (*.f64 #s(literal 1/2 binary64) (log.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 (neg.f64 (+.f64 (*.f64 re re) (*.f64 im im))) (-.f64 (*.f64 re re) (*.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 (/.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 #s(literal 1 binary64) #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 (*.f64 re (*.f64 re re)) (*.f64 re (*.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 (*.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 im im) (*.f64 (-.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)))

simplify218.0ms (7.7%)

Algorithm
egg-herbie
Rules
4088×*-lowering-*.f32
4088×*-lowering-*.f64
2720×fma-lowering-fma.f32
2720×fma-lowering-fma.f64
1784×fma-define
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0181824
1538784
21825762
36562756
08069756
Stop Event
iter limit
node limit
Counts
48 → 48
Calls
Call 1
Inputs
(log im)
(+ (log im) (* 1/2 (/ (pow re 2) (pow im 2))))
(+ (log im) (* (pow re 2) (+ (* -1/4 (/ (pow re 2) (pow im 4))) (* 1/2 (/ 1 (pow im 2))))))
(+ (log im) (* (pow re 2) (+ (* (pow re 2) (- (* 1/6 (/ (pow re 2) (pow im 6))) (* 1/4 (/ 1 (pow im 4))))) (* 1/2 (/ 1 (pow im 2))))))
(* -1 (log (/ 1 re)))
(+ (* -1 (log (/ 1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))
(+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))
(+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/720 (/ (+ (* 30 (pow im 6)) (* 90 (pow im 6))) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(* -1 (log (/ -1 re)))
(+ (* -1 (log (/ -1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))
(+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))
(+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/720 (/ (+ (* 30 (pow im 6)) (* 90 (pow im 6))) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(log re)
(+ (log re) (* 1/2 (/ (pow im 2) (pow re 2))))
(+ (log re) (* (pow im 2) (+ (* -1/4 (/ (pow im 2) (pow re 4))) (* 1/2 (/ 1 (pow re 2))))))
(+ (log re) (* (pow im 2) (+ (* (pow im 2) (- (* 1/6 (/ (pow im 2) (pow re 6))) (* 1/4 (/ 1 (pow re 4))))) (* 1/2 (/ 1 (pow re 2))))))
(* -1 (log (/ 1 im)))
(+ (* -1 (log (/ 1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))
(+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))
(+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/720 (/ (+ (* 30 (pow re 6)) (* 90 (pow re 6))) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(* -1 (log (/ -1 im)))
(+ (* -1 (log (/ -1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))
(+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))
(+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/720 (/ (+ (* 30 (pow re 6)) (* 90 (pow re 6))) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))
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
(log im)
(log.f64 im)
(+ (log im) (* 1/2 (/ (pow re 2) (pow im 2))))
(+.f64 (log.f64 im) (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im))
(+ (log im) (* (pow re 2) (+ (* -1/4 (/ (pow re 2) (pow im 4))) (* 1/2 (/ 1 (pow im 2))))))
(+.f64 (log.f64 im) (*.f64 (*.f64 re re) (-.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 (/.f64 #s(literal 1/4 binary64) (*.f64 im (*.f64 im (*.f64 im im)))) (*.f64 re re)))))
(+ (log im) (* (pow re 2) (+ (* (pow re 2) (- (* 1/6 (/ (pow re 2) (pow im 6))) (* 1/4 (/ 1 (pow im 4))))) (* 1/2 (/ 1 (pow im 2))))))
(+.f64 (log.f64 im) (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 (*.f64 re re) (+.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal 1/6 binary64)) (pow.f64 im #s(literal 6 binary64))) (/.f64 #s(literal -1/4 binary64) (*.f64 im (*.f64 im (*.f64 im im)))))))))
(* -1 (log (/ 1 re)))
(log.f64 re)
(+ (* -1 (log (/ 1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))
(+.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re re)) (log.f64 re))
(+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (log.f64 re))
(+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/720 (/ (+ (* 30 (pow im 6)) (* 90 (pow im 6))) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (+.f64 (log.f64 re) (/.f64 (*.f64 #s(literal 1/6 binary64) (pow.f64 im #s(literal 6 binary64))) (pow.f64 re #s(literal 6 binary64)))))
(* -1 (log (/ -1 re)))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)))
(+ (* -1 (log (/ -1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))
(-.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re re)) (log.f64 (/.f64 #s(literal -1 binary64) re)))
(+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))
(-.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (log.f64 (/.f64 #s(literal -1 binary64) re)))
(+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/720 (/ (+ (* 30 (pow im 6)) (* 90 (pow im 6))) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (-.f64 (/.f64 (*.f64 #s(literal 1/6 binary64) (pow.f64 im #s(literal 6 binary64))) (pow.f64 re #s(literal 6 binary64))) (log.f64 (/.f64 #s(literal -1 binary64) re))))
(log re)
(log.f64 re)
(+ (log re) (* 1/2 (/ (pow im 2) (pow re 2))))
(+.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re re)) (log.f64 re))
(+ (log re) (* (pow im 2) (+ (* -1/4 (/ (pow im 2) (pow re 4))) (* 1/2 (/ 1 (pow re 2))))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (log.f64 re))
(+ (log re) (* (pow im 2) (+ (* (pow im 2) (- (* 1/6 (/ (pow im 2) (pow re 6))) (* 1/4 (/ 1 (pow re 4))))) (* 1/2 (/ 1 (pow re 2))))))
(+.f64 (log.f64 re) (*.f64 (*.f64 im im) (+.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im (*.f64 im (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal 1/6 binary64)) (pow.f64 re #s(literal 6 binary64))) (/.f64 #s(literal -1/4 binary64) (*.f64 re (*.f64 re (*.f64 re re))))))))))
(* -1 (log (/ 1 im)))
(log.f64 im)
(+ (* -1 (log (/ 1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))
(+.f64 (log.f64 im) (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im))
(+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 (log.f64 im) (*.f64 (*.f64 re re) (-.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 (/.f64 #s(literal 1/4 binary64) (*.f64 im (*.f64 im (*.f64 im im)))) (*.f64 re re)))))
(+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/720 (/ (+ (* 30 (pow re 6)) (* 90 (pow re 6))) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(+.f64 (log.f64 im) (+.f64 (*.f64 (*.f64 re re) (-.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 (/.f64 #s(literal 1/4 binary64) (*.f64 im (*.f64 im (*.f64 im im)))) (*.f64 re re)))) (/.f64 (*.f64 #s(literal 1/6 binary64) (pow.f64 re #s(literal 6 binary64))) (pow.f64 im #s(literal 6 binary64)))))
(* -1 (log (/ -1 im)))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (* -1 (log (/ -1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))
(-.f64 (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))
(-.f64 (*.f64 (*.f64 re re) (-.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 (/.f64 #s(literal 1/4 binary64) (*.f64 im (*.f64 im (*.f64 im im)))) (*.f64 re re)))) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/720 (/ (+ (* 30 (pow re 6)) (* 90 (pow re 6))) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(+.f64 (*.f64 (*.f64 re re) (-.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 (/.f64 #s(literal 1/4 binary64) (*.f64 im (*.f64 im (*.f64 im im)))) (*.f64 re re)))) (-.f64 (/.f64 (*.f64 #s(literal 1/6 binary64) (pow.f64 re #s(literal 6 binary64))) (pow.f64 im #s(literal 6 binary64))) (log.f64 (/.f64 #s(literal -1 binary64) im))))
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 (*.f64 re 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 re (*.f64 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 #s(literal 1 binary64) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re re))))
(* re (+ 1 (+ (* -1/8 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(*.f64 re (+.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re re)) (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 im (*.f64 im (*.f64 (*.f64 im im) #s(literal -1/8 binary64)))) (*.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 re (+.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 (*.f64 im im) #s(literal -1/8 binary64)))) (*.f64 re (*.f64 re (*.f64 re re)))) (+.f64 (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 (pow.f64 im #s(literal 6 binary64)) #s(literal 1/16 binary64)) (pow.f64 re #s(literal 6 binary64)))) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re re)))))
(* -1 re)
(-.f64 #s(literal 0 binary64) re)
(* -1 (* re (+ 1 (* 1/2 (/ (pow im 2) (pow re 2))))))
(-.f64 (*.f64 (/.f64 (*.f64 re (*.f64 im im)) (*.f64 re re)) #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 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re re)) (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 im (*.f64 im (*.f64 (*.f64 im im) #s(literal -1/8 binary64)))) (*.f64 re (*.f64 re (*.f64 re re)))))) (-.f64 #s(literal 0 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 (+.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 (*.f64 im im) #s(literal -1/8 binary64)))) (*.f64 re (*.f64 re (*.f64 re re)))) (+.f64 (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 (pow.f64 im #s(literal 6 binary64)) #s(literal 1/16 binary64)) (pow.f64 re #s(literal 6 binary64)))) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re re)))) (-.f64 #s(literal 0 binary64) re))
re
(+ re (* 1/2 (/ (pow im 2) re)))
(+.f64 re (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 im im)) re))
(+ re (* (pow im 2) (+ (* -1/8 (/ (pow im 2) (pow re 3))) (* 1/2 (/ 1 re)))))
(+.f64 re (*.f64 (*.f64 im im) (-.f64 (/.f64 #s(literal 1/2 binary64) re) (*.f64 (/.f64 (/.f64 #s(literal 1/8 binary64) re) (*.f64 re re)) (*.f64 im im)))))
(+ 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 (*.f64 im im) #s(literal 1/16 binary64)) (pow.f64 re #s(literal 5 binary64))) (/.f64 (/.f64 #s(literal -1/8 binary64) re) (*.f64 re re)))))))
im
(* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2)))))
(*.f64 im (+.f64 (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im) #s(literal 1 binary64)))
(* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(*.f64 im (+.f64 (+.f64 (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im) #s(literal 1 binary64)) (/.f64 (*.f64 re (*.f64 re (*.f64 (*.f64 re 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 im (+.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 (*.f64 re re) #s(literal -1/8 binary64)))) (*.f64 im (*.f64 im (*.f64 im im)))) (+.f64 (+.f64 (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im) #s(literal 1 binary64)) (/.f64 (*.f64 (pow.f64 re #s(literal 6 binary64)) #s(literal 1/16 binary64)) (pow.f64 im #s(literal 6 binary64))))))
(* -1 im)
(-.f64 #s(literal 0 binary64) im)
(* -1 (* im (+ 1 (* 1/2 (/ (pow re 2) (pow im 2))))))
(-.f64 #s(literal 0 binary64) (*.f64 im (+.f64 (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im) #s(literal 1 binary64))))
(* -1 (* im (+ 1 (+ (* -1/8 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))))
(*.f64 (+.f64 (+.f64 (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im) #s(literal 1 binary64)) (/.f64 (*.f64 re (*.f64 re (*.f64 (*.f64 re re) #s(literal -1/8 binary64)))) (*.f64 im (*.f64 im (*.f64 im im))))) (-.f64 #s(literal 0 binary64) 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 (*.f64 re (*.f64 re (*.f64 (*.f64 re re) #s(literal -1/8 binary64)))) (*.f64 im (*.f64 im (*.f64 im im)))) (+.f64 (+.f64 (/.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) im) im) #s(literal 1 binary64)) (/.f64 (*.f64 (pow.f64 re #s(literal 6 binary64)) #s(literal 1/16 binary64)) (pow.f64 im #s(literal 6 binary64))))) (-.f64 #s(literal 0 binary64) im))

eval12.0ms (0.4%)

Compiler

Compiled 2968 to 414 computations (86.1% saved)

prune47.0ms (1.7%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New1132115
Fresh000
Picked011
Done000
Total1133116
Accuracy
100.0%
Counts
116 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.2%
(*.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/2 binary64))
100.0%
(log.f64 (hypot.f64 re im))
98.5%
(log.f64 im)
Compiler

Compiled 22 to 15 computations (31.8% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 5 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0934
11234
21334
01334
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(log im)
im
(* (log (+ (* re re) (* im im))) 1/2)
(log (+ (* re re) (* im im)))
(+ (* re re) (* im im))
(* re re)
re
(* im im)
im
1/2
Outputs
(log im)
(log.f64 im)
im
(* (log (+ (* re re) (* im im))) 1/2)
(*.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/2 binary64))
(log (+ (* re re) (* im im)))
(log.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
(+ (* re re) (* im im))
(+.f64 (*.f64 re re) (*.f64 im im))
(* re re)
(*.f64 re re)
re
(* im im)
(*.f64 im im)
im
1/2
#s(literal 1/2 binary64)

localize41.0ms (1.5%)

Localize:

Found 5 expressions of interest:

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

Compiled 40 to 10 computations (75% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-mult: 8.0ms (49.2% of total)
ival-log: 6.0ms (36.9% of total)
ival-add: 1.0ms (6.2% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series95.0ms (3.3%)

Counts
6 → 108
Calls
Call 1
Inputs
#<alt (log im)>
#<alt (* (log (+ (* re re) (* im im))) 1/2)>
#<alt (log (+ (* re re) (* im im)))>
#<alt (+ (* re re) (* im im))>
#<alt (* re re)>
#<alt (* im im)>
Outputs
#<alt (log im)>
#<alt (log im)>
#<alt (log im)>
#<alt (log im)>
#<alt (* -1 (log (/ 1 im)))>
#<alt (* -1 (log (/ 1 im)))>
#<alt (* -1 (log (/ 1 im)))>
#<alt (* -1 (log (/ 1 im)))>
#<alt (+ (log -1) (* -1 (log (/ -1 im))))>
#<alt (+ (log -1) (* -1 (log (/ -1 im))))>
#<alt (+ (log -1) (* -1 (log (/ -1 im))))>
#<alt (+ (log -1) (* -1 (log (/ -1 im))))>
#<alt (* 1/2 (log (pow im 2)))>
#<alt (+ (* 1/2 (log (pow im 2))) (* 1/2 (/ (pow re 2) (pow im 2))))>
#<alt (+ (* 1/2 (log (pow im 2))) (* (pow re 2) (+ (* -1/4 (/ (pow re 2) (pow im 4))) (* 1/2 (/ 1 (pow im 2))))))>
#<alt (+ (* 1/2 (log (pow im 2))) (* (pow re 2) (+ (* (pow re 2) (- (* 1/6 (/ (pow re 2) (pow im 6))) (* 1/4 (/ 1 (pow im 4))))) (* 1/2 (/ 1 (pow im 2))))))>
#<alt (* -1 (log (/ 1 re)))>
#<alt (+ (* -1 (log (/ 1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))>
#<alt (+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))>
#<alt (+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/6 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))>
#<alt (* -1 (log (/ -1 re)))>
#<alt (+ (* -1 (log (/ -1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))>
#<alt (+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))>
#<alt (+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/6 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))>
#<alt (* 1/2 (log (pow re 2)))>
#<alt (+ (* 1/2 (log (pow re 2))) (* 1/2 (/ (pow im 2) (pow re 2))))>
#<alt (+ (* 1/2 (log (pow re 2))) (* (pow im 2) (+ (* -1/4 (/ (pow im 2) (pow re 4))) (* 1/2 (/ 1 (pow re 2))))))>
#<alt (+ (* 1/2 (log (pow re 2))) (* (pow im 2) (+ (* (pow im 2) (- (* 1/6 (/ (pow im 2) (pow re 6))) (* 1/4 (/ 1 (pow re 4))))) (* 1/2 (/ 1 (pow re 2))))))>
#<alt (* -1 (log (/ 1 im)))>
#<alt (+ (* -1 (log (/ 1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))>
#<alt (+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/6 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))>
#<alt (* -1 (log (/ -1 im)))>
#<alt (+ (* -1 (log (/ -1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))>
#<alt (+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))>
#<alt (+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/6 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))>
#<alt (log (pow im 2))>
#<alt (+ (log (pow im 2)) (/ (pow re 2) (pow im 2)))>
#<alt (+ (log (pow im 2)) (* (pow re 2) (+ (* -1/2 (/ (pow re 2) (pow im 4))) (/ 1 (pow im 2)))))>
#<alt (+ (log (pow im 2)) (* (pow re 2) (+ (* (pow re 2) (- (* 1/3 (/ (pow re 2) (pow im 6))) (* 1/2 (/ 1 (pow im 4))))) (/ 1 (pow im 2)))))>
#<alt (* -2 (log (/ 1 re)))>
#<alt (+ (* -2 (log (/ 1 re))) (/ (pow im 2) (pow re 2)))>
#<alt (+ (* -2 (log (/ 1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (/ (pow im 2) (pow re 2))))>
#<alt (+ (* -2 (log (/ 1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (+ (* 1/3 (/ (pow im 6) (pow re 6))) (/ (pow im 2) (pow re 2)))))>
#<alt (* -2 (log (/ -1 re)))>
#<alt (+ (* -2 (log (/ -1 re))) (/ (pow im 2) (pow re 2)))>
#<alt (+ (* -2 (log (/ -1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (/ (pow im 2) (pow re 2))))>
#<alt (+ (* -2 (log (/ -1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (+ (* 1/3 (/ (pow im 6) (pow re 6))) (/ (pow im 2) (pow re 2)))))>
#<alt (log (pow re 2))>
#<alt (+ (log (pow re 2)) (/ (pow im 2) (pow re 2)))>
#<alt (+ (log (pow re 2)) (* (pow im 2) (+ (* -1/2 (/ (pow im 2) (pow re 4))) (/ 1 (pow re 2)))))>
#<alt (+ (log (pow re 2)) (* (pow im 2) (+ (* (pow im 2) (- (* 1/3 (/ (pow im 2) (pow re 6))) (* 1/2 (/ 1 (pow re 4))))) (/ 1 (pow re 2)))))>
#<alt (* -2 (log (/ 1 im)))>
#<alt (+ (* -2 (log (/ 1 im))) (/ (pow re 2) (pow im 2)))>
#<alt (+ (* -2 (log (/ 1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (/ (pow re 2) (pow im 2))))>
#<alt (+ (* -2 (log (/ 1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (+ (* 1/3 (/ (pow re 6) (pow im 6))) (/ (pow re 2) (pow im 2)))))>
#<alt (* -2 (log (/ -1 im)))>
#<alt (+ (* -2 (log (/ -1 im))) (/ (pow re 2) (pow im 2)))>
#<alt (+ (* -2 (log (/ -1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (/ (pow re 2) (pow im 2))))>
#<alt (+ (* -2 (log (/ -1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (+ (* 1/3 (/ (pow re 6) (pow im 6))) (/ (pow re 2) (pow im 2)))))>
#<alt (pow im 2)>
#<alt (+ (pow im 2) (pow re 2))>
#<alt (+ (pow im 2) (pow re 2))>
#<alt (+ (pow im 2) (pow re 2))>
#<alt (pow re 2)>
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))>
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))>
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))>
#<alt (pow re 2)>
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))>
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))>
#<alt (* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))>
#<alt (pow re 2)>
#<alt (+ (pow im 2) (pow re 2))>
#<alt (+ (pow im 2) (pow re 2))>
#<alt (+ (pow im 2) (pow re 2))>
#<alt (pow im 2)>
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))>
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))>
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))>
#<alt (pow im 2)>
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))>
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))>
#<alt (* (pow im 2) (+ 1 (/ (pow re 2) (pow im 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)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
#<alt (pow im 2)>
Calls

27 calls:

TimeVariablePointExpression
56.0ms
im
@0
(log im)
19.0ms
im
@-inf
(log im)
13.0ms
im
@inf
(log im)
1.0ms
re
@0
(* (log (+ (* re re) (* im im))) 1/2)
1.0ms
re
@inf
(* (log (+ (* re re) (* im im))) 1/2)

rewrite291.0ms (10.2%)

Algorithm
batch-egg-rewrite
Rules
2194×*-lowering-*.f32
2194×*-lowering-*.f64
2190×fma-lowering-fma.f32
2190×fma-lowering-fma.f64
1712×fma-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0930
12830
220730
3219430
0829630
Stop Event
iter limit
node limit
Counts
6 → 169
Calls
Call 1
Inputs
(log im)
(* (log (+ (* re re) (* im im))) 1/2)
(log (+ (* re re) (* im im)))
(+ (* re re) (* im im))
(* re re)
(* im im)
Outputs
(log.f64 im)
(+.f64 (log.f64 (sqrt.f64 im)) (log.f64 (sqrt.f64 im)))
(*.f64 (log.f64 im) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (log.f64 im))
(*.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/2 binary64))
(*.f64 #s(literal 1/2 binary64) (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
(log.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
(+.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) (log.f64 (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))))
(+.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) (log.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im)))))
(+.f64 (log.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (log.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))
(+.f64 (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) (log.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))))))))
(+.f64 (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) (log.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)))))))
(+.f64 (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (log.f64 (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(+.f64 (log.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (log.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))))))))
(+.f64 (log.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (log.f64 (/.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))))
(+.f64 #s(literal 0 binary64) (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
(+.f64 (log.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re))))) (log.f64 (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 im im) (*.f64 re re)))))
(+.f64 (log.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))) (log.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))))
(+.f64 (log.f64 (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))
(+.f64 (log.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)))))) (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
(+.f64 (log.f64 (/.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (+.f64 im re))) (log.f64 (+.f64 im re)))
(+.f64 (log.f64 (/.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 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)))))))) (log.f64 (+.f64 (*.f64 (*.f64 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 re (*.f64 re (*.f64 re re))))))))
(+.f64 (log.f64 (/.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 (*.f64 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 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))) (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))
(+.f64 (log.f64 (/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (+.f64 (*.f64 re re) (*.f64 im im))))))
(-.f64 (log.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))
(-.f64 (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (log.f64 (-.f64 (*.f64 re re) (*.f64 im im))))
(-.f64 (log.f64 (+.f64 (*.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))))) (log.f64 (*.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re))))))))))
(-.f64 (log.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (log.f64 (*.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))))
(-.f64 (log.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (log.f64 (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))))))
(-.f64 (log.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (log.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 (log.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (log.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im)))))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1 binary64))))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 (-.f64 (*.f64 im im) (*.f64 re re)) (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re)))))))
(-.f64 (log.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re))))) (log.f64 (-.f64 (*.f64 im im) (*.f64 re re))))
(-.f64 (log.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im im) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (log.f64 (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (neg.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))))))
(-.f64 (log.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im)))))) (log.f64 (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im)))))
(-.f64 (log.f64 (*.f64 (+.f64 (*.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) #s(literal 1 binary64))) (log.f64 (*.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re))))))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))
(-.f64 (log.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 1 binary64))) (log.f64 (*.f64 (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))
(-.f64 (log.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 1 binary64))) (log.f64 (*.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(-.f64 (log.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im im) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 1 binary64))) (log.f64 (*.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(-.f64 (log.f64 (neg.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))))) (log.f64 (neg.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 (log.f64 (neg.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))) (log.f64 (neg.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))))
(-.f64 (log.f64 (neg.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re)))))) (log.f64 (neg.f64 (-.f64 (*.f64 im im) (*.f64 re re)))))
(-.f64 (log.f64 (-.f64 (/.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im))))) (/.f64 (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im))))))) (log.f64 (+.f64 (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im)))) (+.f64 (*.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))) (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))))))))
(-.f64 (log.f64 (-.f64 (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im)))) (*.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))) (log.f64 (+.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))))))
(-.f64 (log.f64 (*.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) #s(literal 1 binary64))) (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))
(-.f64 (log.f64 (*.f64 (+.f64 (*.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.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))))))) (log.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))))))))
(-.f64 (log.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.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))))))) (log.f64 (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))))
(-.f64 (log.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))) (log.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))))
(-.f64 (log.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im im) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))) (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))
(-.f64 (log.f64 (/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (+.f64 im re))) (log.f64 (-.f64 re im)))
(neg.f64 (log.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im)))))
(neg.f64 (log.f64 (/.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1 binary64))))
(neg.f64 (log.f64 (/.f64 (-.f64 (*.f64 im im) (*.f64 re re)) (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re)))))))
(/.f64 (-.f64 (pow.f64 (log.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 3 binary64)) (pow.f64 (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) #s(literal 3 binary64))) (+.f64 (pow.f64 (log.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 2 binary64)) (+.f64 (pow.f64 (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) #s(literal 2 binary64)) (*.f64 (log.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))))
(/.f64 (-.f64 (pow.f64 (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) #s(literal 3 binary64)) (pow.f64 (log.f64 (-.f64 (*.f64 re re) (*.f64 im im))) #s(literal 3 binary64))) (+.f64 (pow.f64 (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) #s(literal 2 binary64)) (+.f64 (pow.f64 (log.f64 (-.f64 (*.f64 re re) (*.f64 im im))) #s(literal 2 binary64)) (*.f64 (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (log.f64 (-.f64 (*.f64 re re) (*.f64 im im)))))))
(/.f64 (-.f64 (pow.f64 (log.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 2 binary64)) (pow.f64 (log.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) #s(literal 2 binary64))) (log.f64 (*.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))
(/.f64 (-.f64 (pow.f64 (log.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) #s(literal 2 binary64)) (pow.f64 (log.f64 (-.f64 (*.f64 re re) (*.f64 im im))) #s(literal 2 binary64))) (log.f64 (*.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(*.f64 #s(literal -1 binary64) (log.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im)))))
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 (*.f64 im im) (*.f64 re re))
(+.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(exp.f64 (*.f64 (log.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im)))) #s(literal -1 binary64)))
(-.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))))
(-.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 im im) (*.f64 re re))) (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 im im) (*.f64 re re))))
(fma.f64 im im (*.f64 re re))
(fma.f64 re re (*.f64 im im))
(fma.f64 re (/.f64 (*.f64 re (*.f64 re re)) (-.f64 (*.f64 re re) (*.f64 im im))) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(fma.f64 (*.f64 re re) (/.f64 (*.f64 re re) (-.f64 (*.f64 re re) (*.f64 im im))) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(fma.f64 (*.f64 re (*.f64 re (*.f64 re re))) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(fma.f64 (*.f64 re (*.f64 re re)) (/.f64 re (-.f64 (*.f64 re re) (*.f64 im im))) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(fma.f64 (/.f64 re (+.f64 im re)) (/.f64 (*.f64 re (*.f64 re re)) (-.f64 re im)) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(fma.f64 (/.f64 (*.f64 re re) (+.f64 im re)) (/.f64 (*.f64 re re) (-.f64 re im)) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(fma.f64 (/.f64 (*.f64 re (*.f64 re re)) (+.f64 im re)) (/.f64 re (-.f64 re im)) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(fma.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 re re) (*.f64 im im)) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(fma.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (+.f64 (*.f64 re re) (*.f64 im im)))) (neg.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(neg.f64 (/.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))))
(neg.f64 (/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(neg.f64 (/.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))
(neg.f64 (/.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))
(/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 re re) (*.f64 im im)))
(/.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (-.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 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (+.f64 (*.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (*.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))))))))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 #s(literal 1 binary64) (/.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1 binary64)))
(/.f64 #s(literal 1 binary64) (/.f64 (-.f64 (*.f64 im im) (*.f64 re re)) (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re))))))
(/.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (*.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))))
(/.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))))
(/.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 (*.f64 im im) (*.f64 re re)))
(/.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im im) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))
(/.f64 #s(literal -1 binary64) (neg.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (*.f64 (+.f64 (*.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re))))))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 1 binary64)) (*.f64 (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im im) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal 1 binary64)) (*.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (neg.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) (neg.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 (neg.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))) (neg.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (neg.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re))))) (neg.f64 (-.f64 (*.f64 im im) (*.f64 re re))))
(/.f64 (-.f64 (/.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im))))) (/.f64 (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im)))))) (+.f64 (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im)))) (+.f64 (*.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))) (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))))
(/.f64 (-.f64 (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im)))) (*.f64 (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))))) (+.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (*.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) #s(literal 1 binary64)) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))
(/.f64 (*.f64 (+.f64 (*.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.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)))))) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re))))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.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)))))) (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))))
(/.f64 (*.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im im) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))
(/.f64 (/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (+.f64 im re)) (-.f64 re im))
(/.f64 (-.f64 (neg.f64 (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 #s(literal 0 binary64) (*.f64 im (*.f64 im (*.f64 im im))))) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (-.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (+.f64 im re)) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 im re))) (-.f64 re im))
(/.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 #s(literal 0 binary64) (*.f64 im (*.f64 im (*.f64 im im)))))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) #s(literal 1 binary64))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))))
(/.f64 (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (-.f64 re im)) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 im re)))) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 re im)))
(/.f64 (-.f64 (*.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (*.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 im (*.f64 im (*.f64 im im))))) (*.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (-.f64 (*.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) (*.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 #s(literal 0 binary64) (*.f64 im (*.f64 im (*.f64 im im)))))) (*.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (-.f64 (*.f64 #s(literal 1 binary64) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))) (*.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 re (*.f64 re (*.f64 re re)))) #s(literal 1 binary64))) (*.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))))
(/.f64 (-.f64 (*.f64 #s(literal 1 binary64) (-.f64 re im)) (*.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 im re)))) (*.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 re im)))
(/.f64 (-.f64 (*.f64 (neg.f64 (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 (*.f64 re re) (*.f64 im im))) (*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (*.f64 im (*.f64 im (*.f64 im im))))) (*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (-.f64 (*.f64 (neg.f64 (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) (*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (-.f64 #s(literal 0 binary64) (*.f64 im (*.f64 im (*.f64 im im)))))) (*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (-.f64 (*.f64 (neg.f64 (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))) (*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1 binary64))) (*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))))
(/.f64 (-.f64 (*.f64 (neg.f64 (*.f64 re (*.f64 re (*.f64 re re)))) (-.f64 re im)) (*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 im re)))) (*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (-.f64 re im)))
(/.f64 (-.f64 (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (+.f64 im re)) (-.f64 (*.f64 re re) (*.f64 im im))) (*.f64 (-.f64 re im) (*.f64 im (*.f64 im (*.f64 im im))))) (*.f64 (-.f64 re im) (-.f64 (*.f64 re re) (*.f64 im im))))
(/.f64 (-.f64 (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (+.f64 im re)) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))) (*.f64 (-.f64 re im) (-.f64 #s(literal 0 binary64) (*.f64 im (*.f64 im (*.f64 im im)))))) (*.f64 (-.f64 re im) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(/.f64 (-.f64 (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (+.f64 im re)) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))) (*.f64 (-.f64 re im) #s(literal 1 binary64))) (*.f64 (-.f64 re im) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (*.f64 im (*.f64 im (*.f64 im im))))))
(/.f64 (-.f64 (*.f64 (/.f64 (*.f64 re (*.f64 re (*.f64 re re))) (+.f64 im re)) (-.f64 re im)) (*.f64 (-.f64 re im) (/.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 im re)))) (*.f64 (-.f64 re im) (-.f64 re im)))
(/.f64 (-.f64 (*.f64 (*.f64 im (*.f64 im (*.f64 im im))) (-.f64 (*.f64 im im) (*.f64 re re))) (*.f64 (-.f64 (*.f64 im im) (*.f64 re re)) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (-.f64 (*.f64 im im) (*.f64 re re)) (-.f64 (*.f64 im im) (*.f64 re re))))
(pow.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal -1 binary64))
(pow.f64 (/.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1 binary64)) #s(literal -1 binary64))
(pow.f64 (/.f64 (-.f64 (*.f64 im im) (*.f64 re re)) (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re))))) #s(literal -1 binary64))
(*.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (*.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(*.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 re re) (*.f64 im im))))
(*.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.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))))))
(*.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) (*.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)))))))
(*.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) (/.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))))))
(*.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im))))
(*.f64 (-.f64 #s(literal 0 binary64) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (/.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)))))))
(*.f64 (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) (/.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (-.f64 (*.f64 re re) (*.f64 im im)))))
(*.f64 #s(literal 1 binary64) (+.f64 (*.f64 re re) (*.f64 im im)))
(*.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))
(*.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re))))) (pow.f64 (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) #s(literal -1 binary64)))
(*.f64 (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))))
(*.f64 (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re re) (*.f64 im im))) (pow.f64 (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) #s(literal -1 binary64)))
(*.f64 (-.f64 (*.f64 im (*.f64 im (*.f64 im im))) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 im im) (*.f64 re re))))
(*.f64 (/.f64 (+.f64 (*.f64 re re) (*.f64 im im)) (+.f64 im re)) (+.f64 im re))
(*.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))))) (+.f64 (*.f64 re re) (*.f64 im im)))
(*.f64 (/.f64 #s(literal 1 binary64) (+.f64 im re)) (pow.f64 (/.f64 (-.f64 re im) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))) #s(literal -1 binary64)))
(*.f64 (/.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 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))))))) (+.f64 (*.f64 (*.f64 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 re (*.f64 re (*.f64 re re)))))))
(*.f64 (/.f64 (+.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 (*.f64 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 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))) (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))))
(*.f64 (/.f64 (-.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im)))) (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (+.f64 (*.f64 re re) (*.f64 im im)))))
(*.f64 (pow.f64 (/.f64 (+.f64 im re) (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal -1 binary64)) (pow.f64 (/.f64 (-.f64 re im) (-.f64 (*.f64 re re) (*.f64 im im))) #s(literal -1 binary64)))
(*.f64 (pow.f64 (/.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) (+.f64 (*.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))))) #s(literal -1 binary64)) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (-.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))))))))
(*.f64 (pow.f64 (/.f64 (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 im im) (-.f64 (*.f64 im im) (*.f64 re re)))) (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) #s(literal -1 binary64)) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 (*.f64 re re) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))))))
(*.f64 (pow.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re))))) (*.f64 (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im))) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) #s(literal -1 binary64)) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im (*.f64 im (*.f64 im im))) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))))
(*.f64 (pow.f64 (/.f64 (-.f64 (*.f64 re re) (*.f64 im im)) (-.f64 (*.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 re (*.f64 re (*.f64 re re)))) (*.f64 (*.f64 im im) (*.f64 (*.f64 im (*.f64 im im)) (*.f64 im (*.f64 im im)))))) #s(literal -1 binary64)) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re (*.f64 re (*.f64 re re))) (*.f64 im (*.f64 im (*.f64 im im))))))
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 re)))
(exp.f64 (*.f64 (*.f64 #s(literal 2 binary64) (log.f64 re)) #s(literal 1 binary64)))
(pow.f64 re #s(literal 2 binary64))
(pow.f64 (*.f64 re re) #s(literal 1 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 re))
(*.f64 re re)
(exp.f64 (*.f64 (log.f64 im) #s(literal 2 binary64)))
(exp.f64 (*.f64 (*.f64 (log.f64 im) #s(literal 2 binary64)) #s(literal 1 binary64)))
(pow.f64 im #s(literal 2 binary64))
(pow.f64 (*.f64 im im) #s(literal 1 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 im))
(*.f64 im im)

simplify264.0ms (9.3%)

Algorithm
egg-herbie
Rules
3816×*-lowering-*.f32
3816×*-lowering-*.f64
2044×fma-lowering-fma.f32
2044×fma-lowering-fma.f64
1926×+-lowering-+.f64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01581134
14891086
214481056
344841056
083731056
Stop Event
iter limit
node limit
Counts
108 → 108
Calls
Call 1
Inputs
(log im)
(log im)
(log im)
(log im)
(* -1 (log (/ 1 im)))
(* -1 (log (/ 1 im)))
(* -1 (log (/ 1 im)))
(* -1 (log (/ 1 im)))
(+ (log -1) (* -1 (log (/ -1 im))))
(+ (log -1) (* -1 (log (/ -1 im))))
(+ (log -1) (* -1 (log (/ -1 im))))
(+ (log -1) (* -1 (log (/ -1 im))))
(* 1/2 (log (pow im 2)))
(+ (* 1/2 (log (pow im 2))) (* 1/2 (/ (pow re 2) (pow im 2))))
(+ (* 1/2 (log (pow im 2))) (* (pow re 2) (+ (* -1/4 (/ (pow re 2) (pow im 4))) (* 1/2 (/ 1 (pow im 2))))))
(+ (* 1/2 (log (pow im 2))) (* (pow re 2) (+ (* (pow re 2) (- (* 1/6 (/ (pow re 2) (pow im 6))) (* 1/4 (/ 1 (pow im 4))))) (* 1/2 (/ 1 (pow im 2))))))
(* -1 (log (/ 1 re)))
(+ (* -1 (log (/ 1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))
(+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))
(+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/6 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(* -1 (log (/ -1 re)))
(+ (* -1 (log (/ -1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))
(+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))
(+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/6 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(* 1/2 (log (pow re 2)))
(+ (* 1/2 (log (pow re 2))) (* 1/2 (/ (pow im 2) (pow re 2))))
(+ (* 1/2 (log (pow re 2))) (* (pow im 2) (+ (* -1/4 (/ (pow im 2) (pow re 4))) (* 1/2 (/ 1 (pow re 2))))))
(+ (* 1/2 (log (pow re 2))) (* (pow im 2) (+ (* (pow im 2) (- (* 1/6 (/ (pow im 2) (pow re 6))) (* 1/4 (/ 1 (pow re 4))))) (* 1/2 (/ 1 (pow re 2))))))
(* -1 (log (/ 1 im)))
(+ (* -1 (log (/ 1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))
(+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))
(+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/6 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(* -1 (log (/ -1 im)))
(+ (* -1 (log (/ -1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))
(+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))
(+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/6 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(log (pow im 2))
(+ (log (pow im 2)) (/ (pow re 2) (pow im 2)))
(+ (log (pow im 2)) (* (pow re 2) (+ (* -1/2 (/ (pow re 2) (pow im 4))) (/ 1 (pow im 2)))))
(+ (log (pow im 2)) (* (pow re 2) (+ (* (pow re 2) (- (* 1/3 (/ (pow re 2) (pow im 6))) (* 1/2 (/ 1 (pow im 4))))) (/ 1 (pow im 2)))))
(* -2 (log (/ 1 re)))
(+ (* -2 (log (/ 1 re))) (/ (pow im 2) (pow re 2)))
(+ (* -2 (log (/ 1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (/ (pow im 2) (pow re 2))))
(+ (* -2 (log (/ 1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (+ (* 1/3 (/ (pow im 6) (pow re 6))) (/ (pow im 2) (pow re 2)))))
(* -2 (log (/ -1 re)))
(+ (* -2 (log (/ -1 re))) (/ (pow im 2) (pow re 2)))
(+ (* -2 (log (/ -1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (/ (pow im 2) (pow re 2))))
(+ (* -2 (log (/ -1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (+ (* 1/3 (/ (pow im 6) (pow re 6))) (/ (pow im 2) (pow re 2)))))
(log (pow re 2))
(+ (log (pow re 2)) (/ (pow im 2) (pow re 2)))
(+ (log (pow re 2)) (* (pow im 2) (+ (* -1/2 (/ (pow im 2) (pow re 4))) (/ 1 (pow re 2)))))
(+ (log (pow re 2)) (* (pow im 2) (+ (* (pow im 2) (- (* 1/3 (/ (pow im 2) (pow re 6))) (* 1/2 (/ 1 (pow re 4))))) (/ 1 (pow re 2)))))
(* -2 (log (/ 1 im)))
(+ (* -2 (log (/ 1 im))) (/ (pow re 2) (pow im 2)))
(+ (* -2 (log (/ 1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (/ (pow re 2) (pow im 2))))
(+ (* -2 (log (/ 1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (+ (* 1/3 (/ (pow re 6) (pow im 6))) (/ (pow re 2) (pow im 2)))))
(* -2 (log (/ -1 im)))
(+ (* -2 (log (/ -1 im))) (/ (pow re 2) (pow im 2)))
(+ (* -2 (log (/ -1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (/ (pow re 2) (pow im 2))))
(+ (* -2 (log (/ -1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (+ (* 1/3 (/ (pow re 6) (pow im 6))) (/ (pow re 2) (pow im 2)))))
(pow im 2)
(+ (pow im 2) (pow re 2))
(+ (pow im 2) (pow re 2))
(+ (pow im 2) (pow re 2))
(pow re 2)
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(pow re 2)
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(pow re 2)
(+ (pow im 2) (pow re 2))
(+ (pow im 2) (pow re 2))
(+ (pow im 2) (pow re 2))
(pow im 2)
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(pow im 2)
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 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 im 2)
(pow im 2)
(pow im 2)
(pow im 2)
(pow im 2)
(pow im 2)
(pow im 2)
(pow im 2)
(pow im 2)
(pow im 2)
(pow im 2)
(pow im 2)
Outputs
(log im)
(log.f64 im)
(log im)
(log.f64 im)
(log im)
(log.f64 im)
(log im)
(log.f64 im)
(* -1 (log (/ 1 im)))
(log.f64 im)
(* -1 (log (/ 1 im)))
(log.f64 im)
(* -1 (log (/ 1 im)))
(log.f64 im)
(* -1 (log (/ 1 im)))
(log.f64 im)
(+ (log -1) (* -1 (log (/ -1 im))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (log -1) (* -1 (log (/ -1 im))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (log -1) (* -1 (log (/ -1 im))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (log -1) (* -1 (log (/ -1 im))))
(-.f64 (log.f64 #s(literal -1 binary64)) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(* 1/2 (log (pow im 2)))
(*.f64 #s(literal 1/2 binary64) (log.f64 (*.f64 im im)))
(+ (* 1/2 (log (pow im 2))) (* 1/2 (/ (pow re 2) (pow im 2))))
(*.f64 #s(literal 1/2 binary64) (+.f64 (log.f64 (*.f64 im im)) (/.f64 (*.f64 re re) (*.f64 im im))))
(+ (* 1/2 (log (pow im 2))) (* (pow re 2) (+ (* -1/4 (/ (pow re 2) (pow im 4))) (* 1/2 (/ 1 (pow im 2))))))
(+.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (*.f64 im im))) (*.f64 (*.f64 re re) (+.f64 (*.f64 (/.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal -1/4 binary64) (*.f64 im im))) (/.f64 #s(literal 1/2 binary64) (*.f64 im im)))))
(+ (* 1/2 (log (pow im 2))) (* (pow re 2) (+ (* (pow re 2) (- (* 1/6 (/ (pow re 2) (pow im 6))) (* 1/4 (/ 1 (pow im 4))))) (* 1/2 (/ 1 (pow im 2))))))
(+.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (*.f64 im im))) (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 im im)) (*.f64 re (*.f64 re (-.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal 1/6 binary64)) (pow.f64 im #s(literal 6 binary64))) (/.f64 #s(literal 1/4 binary64) (*.f64 im (*.f64 im (*.f64 im im))))))))))
(* -1 (log (/ 1 re)))
(log.f64 re)
(+ (* -1 (log (/ 1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))
(+.f64 (log.f64 re) (/.f64 (*.f64 im (*.f64 im #s(literal 1/2 binary64))) (*.f64 re re)))
(+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))
(+.f64 (log.f64 re) (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))))
(+ (* -1 (log (/ 1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/6 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (+.f64 (log.f64 re) (/.f64 (*.f64 #s(literal 1/6 binary64) (pow.f64 im #s(literal 6 binary64))) (pow.f64 re #s(literal 6 binary64)))))
(* -1 (log (/ -1 re)))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 #s(literal -1 binary64) re)))
(+ (* -1 (log (/ -1 re))) (* 1/2 (/ (pow im 2) (pow re 2))))
(-.f64 (/.f64 (*.f64 im (*.f64 im #s(literal 1/2 binary64))) (*.f64 re re)) (log.f64 (/.f64 #s(literal -1 binary64) re)))
(+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (* 1/2 (/ (pow im 2) (pow re 2)))))
(-.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (log.f64 (/.f64 #s(literal -1 binary64) re)))
(+ (* -1 (log (/ -1 re))) (+ (* -1/4 (/ (pow im 4) (pow re 4))) (+ (* 1/6 (/ (pow im 6) (pow re 6))) (* 1/2 (/ (pow im 2) (pow re 2))))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (-.f64 (/.f64 (*.f64 #s(literal 1/6 binary64) (pow.f64 im #s(literal 6 binary64))) (pow.f64 re #s(literal 6 binary64))) (log.f64 (/.f64 #s(literal -1 binary64) re))))
(* 1/2 (log (pow re 2)))
(*.f64 #s(literal 1/2 binary64) (log.f64 (*.f64 re re)))
(+ (* 1/2 (log (pow re 2))) (* 1/2 (/ (pow im 2) (pow re 2))))
(*.f64 #s(literal 1/2 binary64) (+.f64 (*.f64 im (/.f64 im (*.f64 re re))) (log.f64 (*.f64 re re))))
(+ (* 1/2 (log (pow re 2))) (* (pow im 2) (+ (* -1/4 (/ (pow im 2) (pow re 4))) (* 1/2 (/ 1 (pow re 2))))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal -1/4 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))) (/.f64 #s(literal 1/2 binary64) (*.f64 re re)))) (*.f64 #s(literal 1/2 binary64) (log.f64 (*.f64 re re))))
(+ (* 1/2 (log (pow re 2))) (* (pow im 2) (+ (* (pow im 2) (- (* 1/6 (/ (pow im 2) (pow re 6))) (* 1/4 (/ 1 (pow re 4))))) (* 1/2 (/ 1 (pow re 2))))))
(+.f64 (*.f64 #s(literal 1/2 binary64) (log.f64 (*.f64 re re))) (*.f64 im (*.f64 im (+.f64 (/.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal 1/6 binary64)) (pow.f64 re #s(literal 6 binary64))) (/.f64 #s(literal -1/4 binary64) (*.f64 re (*.f64 re (*.f64 re re))))))))))
(* -1 (log (/ 1 im)))
(log.f64 im)
(+ (* -1 (log (/ 1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))
(+.f64 (log.f64 im) (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im im)))
(+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))
(+.f64 (log.f64 im) (*.f64 (*.f64 re re) (+.f64 (*.f64 (/.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal -1/4 binary64) (*.f64 im im))) (/.f64 #s(literal 1/2 binary64) (*.f64 im im)))))
(+ (* -1 (log (/ 1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/6 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 (/.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal -1/4 binary64) (*.f64 im im))) (/.f64 #s(literal 1/2 binary64) (*.f64 im im)))) (+.f64 (log.f64 im) (/.f64 (*.f64 #s(literal 1/6 binary64) (pow.f64 re #s(literal 6 binary64))) (pow.f64 im #s(literal 6 binary64)))))
(* -1 (log (/ -1 im)))
(-.f64 #s(literal 0 binary64) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (* -1 (log (/ -1 im))) (* 1/2 (/ (pow re 2) (pow im 2))))
(-.f64 (/.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 re re)) (*.f64 im im)) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (* 1/2 (/ (pow re 2) (pow im 2)))))
(-.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 (/.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal -1/4 binary64) (*.f64 im im))) (/.f64 #s(literal 1/2 binary64) (*.f64 im im)))) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(+ (* -1 (log (/ -1 im))) (+ (* -1/4 (/ (pow re 4) (pow im 4))) (+ (* 1/6 (/ (pow re 6) (pow im 6))) (* 1/2 (/ (pow re 2) (pow im 2))))))
(-.f64 (+.f64 (*.f64 (*.f64 re re) (+.f64 (*.f64 (/.f64 (*.f64 re re) (*.f64 im im)) (/.f64 #s(literal -1/4 binary64) (*.f64 im im))) (/.f64 #s(literal 1/2 binary64) (*.f64 im im)))) (/.f64 (*.f64 #s(literal 1/6 binary64) (pow.f64 re #s(literal 6 binary64))) (pow.f64 im #s(literal 6 binary64)))) (log.f64 (/.f64 #s(literal -1 binary64) im)))
(log (pow im 2))
(log.f64 (*.f64 im im))
(+ (log (pow im 2)) (/ (pow re 2) (pow im 2)))
(+.f64 (log.f64 (*.f64 im im)) (/.f64 (*.f64 re re) (*.f64 im im)))
(+ (log (pow im 2)) (* (pow re 2) (+ (* -1/2 (/ (pow re 2) (pow im 4))) (/ 1 (pow im 2)))))
(+.f64 (log.f64 (*.f64 im im)) (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 im im)) (/.f64 (*.f64 re (*.f64 re #s(literal -1/2 binary64))) (*.f64 im (*.f64 im (*.f64 im im)))))))
(+ (log (pow im 2)) (* (pow re 2) (+ (* (pow re 2) (- (* 1/3 (/ (pow re 2) (pow im 6))) (* 1/2 (/ 1 (pow im 4))))) (/ 1 (pow im 2)))))
(+.f64 (log.f64 (*.f64 im im)) (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 im im)) (*.f64 (*.f64 re re) (+.f64 (/.f64 (*.f64 (*.f64 re re) #s(literal 1/3 binary64)) (pow.f64 im #s(literal 6 binary64))) (/.f64 #s(literal -1/2 binary64) (*.f64 im (*.f64 im (*.f64 im im)))))))))
(* -2 (log (/ 1 re)))
(*.f64 #s(literal 2 binary64) (log.f64 re))
(+ (* -2 (log (/ 1 re))) (/ (pow im 2) (pow re 2)))
(+.f64 (*.f64 im (/.f64 im (*.f64 re re))) (*.f64 #s(literal 2 binary64) (log.f64 re)))
(+ (* -2 (log (/ 1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (/ (pow im 2) (pow re 2))))
(+.f64 (*.f64 #s(literal 2 binary64) (log.f64 re)) (*.f64 (*.f64 im im) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 re re)) (/.f64 (*.f64 (*.f64 im im) #s(literal -1/2 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))))))
(+ (* -2 (log (/ 1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (+ (* 1/3 (/ (pow im 6) (pow re 6))) (/ (pow im 2) (pow re 2)))))
(+.f64 (*.f64 #s(literal 2 binary64) (log.f64 re)) (+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 re re)) (/.f64 (*.f64 (*.f64 im im) #s(literal -1/2 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))))) (/.f64 (*.f64 (pow.f64 im #s(literal 6 binary64)) #s(literal 1/3 binary64)) (pow.f64 re #s(literal 6 binary64)))))
(* -2 (log (/ -1 re)))
(*.f64 (log.f64 (/.f64 #s(literal -1 binary64) re)) #s(literal -2 binary64))
(+ (* -2 (log (/ -1 re))) (/ (pow im 2) (pow re 2)))
(+.f64 (*.f64 im (/.f64 im (*.f64 re re))) (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) re)) #s(literal -2 binary64)))
(+ (* -2 (log (/ -1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (/ (pow im 2) (pow re 2))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 re re)) (/.f64 (*.f64 (*.f64 im im) #s(literal -1/2 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))))) (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) re)) #s(literal -2 binary64)))
(+ (* -2 (log (/ -1 re))) (+ (* -1/2 (/ (pow im 4) (pow re 4))) (+ (* 1/3 (/ (pow im 6) (pow re 6))) (/ (pow im 2) (pow re 2)))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 re re)) (/.f64 (*.f64 (*.f64 im im) #s(literal -1/2 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))))) (+.f64 (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) re)) #s(literal -2 binary64)) (/.f64 (*.f64 (pow.f64 im #s(literal 6 binary64)) #s(literal 1/3 binary64)) (pow.f64 re #s(literal 6 binary64)))))
(log (pow re 2))
(log.f64 (*.f64 re re))
(+ (log (pow re 2)) (/ (pow im 2) (pow re 2)))
(+.f64 (*.f64 im (/.f64 im (*.f64 re re))) (log.f64 (*.f64 re re)))
(+ (log (pow re 2)) (* (pow im 2) (+ (* -1/2 (/ (pow im 2) (pow re 4))) (/ 1 (pow re 2)))))
(+.f64 (log.f64 (*.f64 re re)) (*.f64 (*.f64 im im) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 re re)) (/.f64 (*.f64 (*.f64 im im) #s(literal -1/2 binary64)) (*.f64 re (*.f64 re (*.f64 re re)))))))
(+ (log (pow re 2)) (* (pow im 2) (+ (* (pow im 2) (- (* 1/3 (/ (pow im 2) (pow re 6))) (* 1/2 (/ 1 (pow re 4))))) (/ 1 (pow re 2)))))
(+.f64 (log.f64 (*.f64 re re)) (*.f64 (*.f64 im im) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 re re)) (*.f64 (*.f64 im im) (+.f64 (/.f64 (*.f64 (*.f64 im im) #s(literal 1/3 binary64)) (pow.f64 re #s(literal 6 binary64))) (/.f64 #s(literal -1/2 binary64) (*.f64 re (*.f64 re (*.f64 re re)))))))))
(* -2 (log (/ 1 im)))
(*.f64 (log.f64 im) #s(literal 2 binary64))
(+ (* -2 (log (/ 1 im))) (/ (pow re 2) (pow im 2)))
(+.f64 (/.f64 (*.f64 re re) (*.f64 im im)) (*.f64 (log.f64 im) #s(literal 2 binary64)))
(+ (* -2 (log (/ 1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (/ (pow re 2) (pow im 2))))
(+.f64 (*.f64 (log.f64 im) #s(literal 2 binary64)) (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 im im)) (/.f64 (*.f64 re (*.f64 re #s(literal -1/2 binary64))) (*.f64 im (*.f64 im (*.f64 im im)))))))
(+ (* -2 (log (/ 1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (+ (* 1/3 (/ (pow re 6) (pow im 6))) (/ (pow re 2) (pow im 2)))))
(+.f64 (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 im im)) (/.f64 (*.f64 re (*.f64 re #s(literal -1/2 binary64))) (*.f64 im (*.f64 im (*.f64 im im)))))) (+.f64 (*.f64 (log.f64 im) #s(literal 2 binary64)) (/.f64 (*.f64 (pow.f64 re #s(literal 6 binary64)) #s(literal 1/3 binary64)) (pow.f64 im #s(literal 6 binary64)))))
(* -2 (log (/ -1 im)))
(*.f64 (log.f64 (/.f64 #s(literal -1 binary64) im)) #s(literal -2 binary64))
(+ (* -2 (log (/ -1 im))) (/ (pow re 2) (pow im 2)))
(+.f64 (/.f64 (*.f64 re re) (*.f64 im im)) (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) im)) #s(literal -2 binary64)))
(+ (* -2 (log (/ -1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (/ (pow re 2) (pow im 2))))
(+.f64 (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 im im)) (/.f64 (*.f64 re (*.f64 re #s(literal -1/2 binary64))) (*.f64 im (*.f64 im (*.f64 im im)))))) (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) im)) #s(literal -2 binary64)))
(+ (* -2 (log (/ -1 im))) (+ (* -1/2 (/ (pow re 4) (pow im 4))) (+ (* 1/3 (/ (pow re 6) (pow im 6))) (/ (pow re 2) (pow im 2)))))
(+.f64 (*.f64 (*.f64 re re) (+.f64 (/.f64 #s(literal 1 binary64) (*.f64 im im)) (/.f64 (*.f64 re (*.f64 re #s(literal -1/2 binary64))) (*.f64 im (*.f64 im (*.f64 im im)))))) (+.f64 (*.f64 (log.f64 (/.f64 #s(literal -1 binary64) im)) #s(literal -2 binary64)) (/.f64 (*.f64 (pow.f64 re #s(literal 6 binary64)) #s(literal 1/3 binary64)) (pow.f64 im #s(literal 6 binary64)))))
(pow im 2)
(*.f64 im im)
(+ (pow im 2) (pow re 2))
(+.f64 (*.f64 im im) (*.f64 re re))
(+ (pow im 2) (pow re 2))
(+.f64 (*.f64 im im) (*.f64 re re))
(+ (pow im 2) (pow re 2))
(+.f64 (*.f64 im im) (*.f64 re re))
(pow re 2)
(*.f64 re re)
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(pow re 2)
(*.f64 re re)
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(* (pow re 2) (+ 1 (/ (pow im 2) (pow re 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(pow re 2)
(*.f64 re re)
(+ (pow im 2) (pow re 2))
(+.f64 (*.f64 im im) (*.f64 re re))
(+ (pow im 2) (pow re 2))
(+.f64 (*.f64 im im) (*.f64 re re))
(+ (pow im 2) (pow re 2))
(+.f64 (*.f64 im im) (*.f64 re re))
(pow im 2)
(*.f64 im im)
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(pow im 2)
(*.f64 im im)
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(+.f64 (*.f64 im im) (*.f64 re re))
(* (pow im 2) (+ 1 (/ (pow re 2) (pow im 2))))
(+.f64 (*.f64 im im) (*.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)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)
(pow im 2)
(*.f64 im im)

eval54.0ms (1.9%)

Compiler

Compiled 10056 to 925 computations (90.8% saved)

prune61.0ms (2.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New2770277
Fresh000
Picked022
Done011
Total2773280
Accuracy
100.0%
Counts
280 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
52.2%
(*.f64 (log.f64 (+.f64 (*.f64 re re) (*.f64 im im))) #s(literal 1/2 binary64))
100.0%
(log.f64 (hypot.f64 re im))
98.5%
(log.f64 im)
Compiler

Compiled 49 to 28 computations (42.9% saved)

regimes33.0ms (1.2%)

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

7 calls:

21.0ms
(+.f64 (*.f64 re re) (*.f64 im im))
2.0ms
re
2.0ms
(*.f64 im im)
2.0ms
im
2.0ms
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
Results
AccuracySegmentsBranch
100.0%1re
100.0%1im
100.0%1(log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im))))
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 46 to 28 computations (39.1% saved)

regimes12.0ms (0.4%)

Accuracy

Total -30.0b remaining (-3021%)

Threshold costs -30b (-3021%)

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

5 calls:

6.0ms
im
1.0ms
re
1.0ms
(*.f64 im im)
1.0ms
(+.f64 (*.f64 re re) (*.f64 im im))
1.0ms
(*.f64 re re)
Results
AccuracySegmentsBranch
98.5%1re
98.5%1im
98.5%1(+.f64 (*.f64 re re) (*.f64 im im))
98.5%1(*.f64 re re)
98.5%1(*.f64 im im)
Compiler

Compiled 25 to 15 computations (40% saved)

simplify7.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056
Stop Event
saturated
Calls
Call 1
Inputs
(log.f64 (hypot.f64 re im))
(log.f64 im)
Outputs
(log.f64 (hypot.f64 re im))
(log.f64 im)

soundness273.0ms (9.6%)

Rules
4088×*-lowering-*.f32
4088×*-lowering-*.f64
2720×fma-lowering-fma.f32
2720×fma-lowering-fma.f64
1784×fma-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
074
1104
2124
0124
0181824
1538784
21825762
36562756
08069756
Stop Event
done
iter limit
node limit
iter limit
saturated
Compiler

Compiled 24 to 16 computations (33.3% saved)

preprocess35.0ms (1.2%)

Remove

(sort re im)

(abs im)

(abs re)

Compiler

Compiled 110 to 72 computations (34.5% saved)

end0.0ms (0%)

Profiling

Loading profile data...