math.square on complex, imaginary part

Time bar (total: 997.0ms)

analyze0.0ms (0%)

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

Compiled 10 to 6 computations (40% saved)

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

sample613.0ms (61.5%)

Results
460.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 193.0ms
ival-mult: 143.0ms (73.9% of total)
ival-add: 41.0ms (21.2% of total)
const: 6.0ms (3.1% of total)
backward-pass: 3.0ms (1.6% of total)
Bogosity

preprocess30.0ms (3%)

Algorithm
egg-herbie
Rules
564×fnmadd-define
450×fma-define
410×sum3-define
272×fmsub-define
264×fnmsub-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01640
14332
29530
328230
474530
5153230
6163030
056
185
2155
3205
4265
0265
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(+ (* re im) (* im re))
Outputs
(+ (* re im) (* im re))
(*.f64 re (*.f64 im #s(literal 2 binary64)))
Call 2
Inputs
(+ (* re im) (* im re))
(+ (* (neg re) im) (* im (neg re)))
(+ (* re (neg im)) (* (neg im) re))
(neg (+ (* (neg re) im) (* im (neg re))))
(neg (+ (* re (neg im)) (* (neg im) re)))
(+ (* im re) (* re im))
Outputs
(+ (* re im) (* im re))
(* re (+ im im))
(+ (* (neg re) im) (* im (neg re)))
(* (* re im) -2)
(+ (* re (neg im)) (* (neg im) re))
(* (* re im) -2)
(neg (+ (* (neg re) im) (* im (neg re))))
(* re (+ im im))
(neg (+ (* re (neg im)) (* (neg im) re)))
(* re (+ im im))
(+ (* im re) (* re im))
(* re (+ im im))
Symmetry

(negabs re)

(negabs im)

(sort re im)

explain66.0ms (6.6%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-im
00-0-re
00-0-(+.f64 (*.f64 re im) (*.f64 im re))
00-0-(*.f64 re im)
00-0-(*.f64 im re)
Results
47.0ms512×0valid
Compiler

Compiled 45 to 17 computations (62.2% saved)

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

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune1.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 re im) (*.f64 im re))
99.7%
(*.f64 re (*.f64 im #s(literal 2 binary64)))
Compiler

Compiled 16 to 10 computations (37.5% saved)

simplify4.0ms (0.4%)

Algorithm
egg-herbie
Localize:

Found 5 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 im re)
cost-diff0
(*.f64 re im)
cost-diff128
(+.f64 (*.f64 re im) (*.f64 im re))
cost-diff0
(*.f64 im #s(literal 2 binary64))
cost-diff0
(*.f64 re (*.f64 im #s(literal 2 binary64)))
Rules
24×*-lowering-*.f32
24×*-lowering-*.f64
*-commutative
+-lowering-+.f64
count-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0824
11524
22624
32724
02724
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* re (* im 2))
re
(* im 2)
im
2
(+ (* re im) (* im re))
(* re im)
re
im
(* im re)
Outputs
(* re (* im 2))
(*.f64 im (*.f64 re #s(literal 2 binary64)))
re
(* im 2)
(*.f64 im #s(literal 2 binary64))
im
2
#s(literal 2 binary64)
(+ (* re im) (* im re))
(*.f64 im (*.f64 re #s(literal 2 binary64)))
(* re im)
(*.f64 re im)
re
im
(* im re)
(*.f64 re im)

localize33.0ms (3.4%)

Localize:

Found 5 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 re im)
accuracy100.0%
(*.f64 im re)
accuracy100.0%
(+.f64 (*.f64 re im) (*.f64 im re))
accuracy100.0%
(*.f64 im #s(literal 2 binary64))
accuracy99.7%
(*.f64 re (*.f64 im #s(literal 2 binary64)))
Results
23.0ms256×0valid
Compiler

Compiled 29 to 9 computations (69% saved)

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

series6.0ms (0.6%)

Counts
5 → 108
Calls
Call 1
Inputs
#<alt (* re (* im 2))>
#<alt (* im 2)>
#<alt (+ (* re im) (* im re))>
#<alt (* re im)>
#<alt (* im re)>
Outputs
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 im)>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
#<alt (* im re)>
Calls

27 calls:

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

rewrite43.0ms (4.4%)

Algorithm
batch-egg-rewrite
Rules
88×*-lowering-*.f32
88×*-lowering-*.f64
28×+-lowering-+.f64
28×+-lowering-+.f32
26×/-lowering-/.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0819
13315
016715
Stop Event
iter limit
iter limit
iter limit
unsound
Counts
5 → 46
Calls
Call 1
Inputs
(* re (* im 2))
(* im 2)
(+ (* re im) (* im re))
(* re im)
(* im re)
Outputs
(+.f64 (*.f64 re im) (*.f64 re im))
(-.f64 (/.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)))
(fma.f64 re im (*.f64 re im))
(fma.f64 im re (*.f64 re im))
(/.f64 (*.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) (neg.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64))))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(/.f64 #s(literal 1 binary64) (/.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (*.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(*.f64 re (*.f64 im #s(literal 2 binary64)))
(*.f64 re (+.f64 im im))
(*.f64 im (+.f64 re re))
(*.f64 im (*.f64 re #s(literal 2 binary64)))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(*.f64 #s(literal 2 binary64) (*.f64 re im))
(*.f64 (*.f64 im #s(literal 2 binary64)) re)
(*.f64 (*.f64 re im) #s(literal 2 binary64))
(*.f64 (*.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
(*.f64 im #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) im)
(+.f64 (*.f64 re im) (*.f64 re im))
(-.f64 (/.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)))
(fma.f64 re im (*.f64 re im))
(fma.f64 im re (*.f64 re im))
(/.f64 (*.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))) (neg.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64))))
(/.f64 #s(literal 1 binary64) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))
(/.f64 #s(literal 1 binary64) (/.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (*.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64)))))
(*.f64 re (*.f64 im #s(literal 2 binary64)))
(*.f64 re (+.f64 im im))
(*.f64 im (+.f64 re re))
(*.f64 im (*.f64 re #s(literal 2 binary64)))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(*.f64 #s(literal 2 binary64) (*.f64 re im))
(*.f64 (*.f64 im #s(literal 2 binary64)) re)
(*.f64 (*.f64 re im) #s(literal 2 binary64))
(*.f64 (*.f64 (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64)) (/.f64 #s(literal 0 binary64) #s(literal 0 binary64))) (/.f64 #s(literal 1 binary64) (+.f64 (*.f64 re (*.f64 im (*.f64 re im))) #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
(*.f64 re im)
(*.f64 im re)
(*.f64 re im)
(*.f64 im re)

simplify10.0ms (1%)

Algorithm
egg-herbie
Rules
24×*-lowering-*.f32
24×*-lowering-*.f64
*-commutative
associate-*r*
associate-*l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06420
110420
216420
317420
017420
Stop Event
iter limit
saturated
Counts
108 → 108
Calls
Call 1
Inputs
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 im)
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
(* im re)
Outputs
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 im)
(*.f64 #s(literal 2 binary64) im)
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* 2 (* im re))
(*.f64 im (*.f64 #s(literal 2 binary64) re))
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)
(* im re)
(*.f64 im re)

eval18.0ms (1.8%)

Compiler

Compiled 1064 to 46 computations (95.7% saved)

prune4.0ms (0.4%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New1522154
Fresh000
Picked202
Done000
Total1542156
Accuracy
100.0%
Counts
156 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
0.0%
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
100.0%
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
Compiler

Compiled 12 to 9 computations (25% saved)

simplify6.0ms (0.6%)

Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
cost-diff0
(*.f64 re #s(literal 2 binary64))
cost-diff0
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
Rules
*-lowering-*.f32
*-lowering-*.f64
/-lowering-/.f32
/-lowering-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0715
Stop Event
iter limit
iter limit
unsound
Calls
Call 1
Inputs
(* (* re 2) im)
(* re 2)
re
2
im
(/ 0 0)
0
Outputs
(* (* re 2) im)
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
(* re 2)
(*.f64 re #s(literal 2 binary64))
re
2
#s(literal 2 binary64)
im
(/ 0 0)
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
0
#s(literal 0 binary64)

localize22.0ms (2.3%)

Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
accuracy100.0%
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
accuracy100.0%
(*.f64 re #s(literal 2 binary64))
Results
15.0ms256×0invalid
Compiler

Compiled 18 to 8 computations (55.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-mult: 4.0ms (78.5% of total)
ival-div: 1.0ms (19.6% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series1.0ms (0.1%)

Counts
3 → 36
Calls
Call 1
Inputs
#<alt (* (* re 2) im)>
#<alt (* re 2)>
#<alt (/ 0 0)>
Outputs
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 (* im re))>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
#<alt (* 2 re)>
Calls

9 calls:

TimeVariablePointExpression
0.0ms
re
@inf
(* re 2)
0.0ms
re
@0
(* re 2)
0.0ms
re
@-inf
(* re 2)
0.0ms
re
@0
(* (* re 2) im)
0.0ms
re
@inf
(* (* re 2) im)

rewrite13.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
*-lowering-*.f32
*-lowering-*.f64
/-lowering-/.f32
/-lowering-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
Stop Event
iter limit
iter limit
unsound
Counts
3 → 3
Calls
Call 1
Inputs
(* (* re 2) im)
(* re 2)
(/ 0 0)
Outputs
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
(*.f64 re #s(literal 2 binary64))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))

simplify8.0ms (0.8%)

Algorithm
egg-herbie
Rules
24×*-lowering-*.f32
24×*-lowering-*.f64
10×*-commutative
associate-*r*
associate-*l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06156
111156
216156
016156
Stop Event
iter limit
saturated
Counts
36 → 36
Calls
Call 1
Inputs
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 (* im re))
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
(* 2 re)
Outputs
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 (* im re))
(*.f64 #s(literal 2 binary64) (*.f64 im re))
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)
(* 2 re)
(*.f64 #s(literal 2 binary64) re)

eval3.0ms (0.3%)

Compiler

Compiled 195 to 11 computations (94.4% saved)

prune2.0ms (0.2%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New39039
Fresh000
Picked022
Done000
Total39241
Accuracy
100.0%
Counts
41 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
0.0%
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
100.0%
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
Compiler

Compiled 34 to 21 computations (38.2% saved)

regimes6.0ms (0.6%)

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

3 calls:

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

Compiled 15 to 9 computations (40% saved)

regimes3.0ms (0.3%)

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

2 calls:

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

Compiled 6 to 4 computations (33.3% saved)

regimes5.0ms (0.5%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
Outputs
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
Calls

2 calls:

3.0ms
im
1.0ms
re
Results
AccuracySegmentsBranch
0.0%1re
0.0%1im
Compiler

Compiled 6 to 4 computations (33.3% saved)

simplify6.0ms (0.6%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0913
11313
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
(*.f64 re (*.f64 im #s(literal 2 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
Outputs
(*.f64 (*.f64 re #s(literal 2 binary64)) im)
(*.f64 re (*.f64 im #s(literal 2 binary64)))
(*.f64 re (*.f64 #s(literal 2 binary64) im))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))

soundness36.0ms (3.7%)

Rules
88×*-lowering-*.f32
88×*-lowering-*.f64
28×+-lowering-+.f64
28×+-lowering-+.f32
26×/-lowering-/.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
056
185
2155
3205
4265
0265
0819
13315
016715
Stop Event
done
iter limit
iter limit
iter limit
unsound
iter limit
saturated
Compiler

Compiled 48 to 33 computations (31.3% saved)

preprocess56.0ms (5.6%)

Remove

(negabs im)

(negabs re)

Compiler

Compiled 160 to 108 computations (32.5% saved)

end0.0ms (0%)

Profiling

Loading profile data...