math.abs on complex (squared)

Time bar (total: 1.7s)

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)

sample656.0ms (38%)

Results
469.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 210.0ms
ival-mult: 159.0ms (75.8% of total)
ival-add: 40.0ms (19.1% of total)
const: 8.0ms (3.8% of total)
backward-pass: 3.0ms (1.4% of total)
Bogosity

preprocess27.0ms (1.6%)

Algorithm
egg-herbie
Rules
164×fnmsub-define
164×fmsub-define
164×fnmadd-define
128×fmm-def
100×sum3-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01432
14432
210130
327930
455030
568330
670730
055
195
2105
0105
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(+ (* re re) (* im im))
Outputs
(+ (* re re) (* im im))
(+.f64 (*.f64 re re) (*.f64 im im))
Call 2
Inputs
(+ (* re re) (* im im))
(+ (* (neg re) (neg re)) (* im im))
(+ (* re re) (* (neg im) (neg im)))
(neg (+ (* (neg re) (neg re)) (* im im)))
(neg (+ (* re re) (* (neg im) (neg im))))
(+ (* im im) (* re re))
Outputs
(+ (* re re) (* im im))
(fma im im (square re))
(+ (* (neg re) (neg re)) (* im im))
(fma im im (square re))
(+ (* re re) (* (neg im) (neg im)))
(fma im im (square re))
(neg (+ (* (neg re) (neg re)) (* im im)))
(fnmsub re re (square im))
(neg (+ (* re re) (* (neg im) (neg im))))
(fnmsub re re (square im))
(+ (* im im) (* re re))
(fma im im (square re))
Symmetry

(abs re)

(abs im)

(sort re im)

explain62.0ms (3.6%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-im
00-0-(*.f64 im im)
00-0-(*.f64 re re)
00-0-re
00-0-(+.f64 (*.f64 re re) (*.f64 im im))
Results
43.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.1% of total)
ival-add: 3.0ms (26.7% of total)
const: 1.0ms (8.9% of total)
backward-pass: 0.0ms (0% of total)

eval0.0ms (0%)

Compiler

Compiled 9 to 5 computations (44.4% saved)

prune1.0ms (0%)

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

Compiled 9 to 5 computations (44.4% saved)

simplify4.0ms (0.3%)

Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0511
1911
21011
01011
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(+ (* re re) (* im im))
(* re re)
re
(* im im)
im
Outputs
(+ (* re re) (* im im))
(+.f64 (*.f64 re re) (*.f64 im im))
(* re re)
(*.f64 re re)
re
(* im im)
(*.f64 im im)
im

localize30.0ms (1.8%)

Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
accuracy100.0%
(*.f64 re re)
accuracy100.0%
(*.f64 im im)
Results
24.0ms256×0valid
Compiler

Compiled 18 to 6 computations (66.7% saved)

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

series2.0ms (0.1%)

Counts
3 → 48
Calls
Call 1
Inputs
#<alt (+ (* re re) (* im im))>
#<alt (* re re)>
#<alt (* im im)>
Outputs
#<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

12 calls:

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

rewrite31.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
12×exp-prod
12×pow-to-exp
12×*-lowering-*.f32
12×*-lowering-*.f64
10×exp-lowering-exp.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
059
1129
2199
3279
4449
5519
6569
0569
Stop Event
iter limit
saturated
Counts
3 → 12
Calls
Call 1
Inputs
(+ (* re re) (* im im))
(* re re)
(* im im)
Outputs
(+.f64 (*.f64 re re) (*.f64 im im))
(+.f64 (*.f64 im im) (*.f64 re re))
(fma.f64 re re (*.f64 im im))
(fma.f64 im im (*.f64 re re))
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 re)))
(pow.f64 re #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 re))
(*.f64 re re)
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 im)))
(pow.f64 im #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 im))
(*.f64 im im)

simplify342.0ms (19.8%)

Algorithm
egg-herbie
Rules
6730×*-lowering-*.f32
6730×*-lowering-*.f64
3558×cube-prod
2910×/-lowering-/.f32
2910×/-lowering-/.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
013216
134150
294150
3373150
41028150
52078150
62395150
72729150
83443150
94060150
104979150
116010150
126585150
136723150
146723150
156723150
167419150
08236150
Stop Event
iter limit
node limit
Counts
48 → 48
Calls
Call 1
Inputs
(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
(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)

eval46.0ms (2.6%)

Compiler

Compiled 404 to 26 computations (93.6% saved)

prune2.0ms (0.1%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New59160
Fresh000
Picked011
Done000
Total59261
Accuracy
100.0%
Counts
61 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 re re) (*.f64 im im))
99.3%
(*.f64 im im)
Compiler

Compiled 14 to 8 computations (42.9% saved)

simplify4.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 im im)
Rules
*-lowering-*.f32
*-lowering-*.f64
square-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023
133
033
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* im im)
im
Outputs
(* im im)
(*.f64 im im)
im

localize15.0ms (0.9%)

Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 im im)
Results
11.0ms256×0valid
Compiler

Compiled 7 to 4 computations (42.9% saved)

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

series0.0ms (0%)

Counts
1 → 12
Calls
Call 1
Inputs
#<alt (* im im)>
Outputs
#<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

3 calls:

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

rewrite17.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
exp-lowering-exp.f32
exp-prod
exp-lowering-exp.f64
pow-to-exp
*-lowering-*.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022
152
282
3122
4202
5242
6272
0272
Stop Event
iter limit
saturated
Counts
1 → 4
Calls
Call 1
Inputs
(* im im)
Outputs
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 im)))
(pow.f64 im #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 im))
(*.f64 im im)

simplify4.0ms (0.2%)

Algorithm
egg-herbie
Rules
pow-lowering-pow.f64
pow-lowering-pow.f32
*-lowering-*.f32
*-lowering-*.f64
unpow2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0336
1424
2524
0524
Stop Event
iter limit
saturated
Counts
12 → 12
Calls
Call 1
Inputs
(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
(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)

eval2.0ms (0.1%)

Compiler

Compiled 54 to 10 computations (81.5% saved)

prune2.0ms (0.1%)

Pruning

2 alts after pruning (0 fresh and 2 done)

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

Compiled 26 to 13 computations (50% saved)

regimes9.0ms (0.5%)

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

5 calls:

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

Compiled 25 to 15 computations (40% saved)

regimes4.0ms (0.2%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

3 calls:

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

Compiled 11 to 7 computations (36.4% saved)

simplify7.0ms (0.4%)

Algorithm
egg-herbie
Rules
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0510
1610
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 re re) (*.f64 im im))
(*.f64 im im)
Outputs
(+.f64 (*.f64 re re) (*.f64 im im))
(*.f64 im im)

soundness434.0ms (25.1%)

Rules
6730×*-lowering-*.f32
6730×*-lowering-*.f64
3558×cube-prod
2910×/-lowering-/.f32
2910×/-lowering-/.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
013216
134150
294150
3373150
41028150
52078150
62395150
72729150
83443150
94060150
104979150
116010150
126585150
136723150
146723150
156723150
167419150
08236150
Stop Event
done
iter limit
node limit
Compiler

Compiled 17 to 8 computations (52.9% saved)

preprocess26.0ms (1.5%)

Remove

(sort re im)

(abs im)

(abs re)

Compiler

Compiled 150 to 80 computations (46.7% saved)

end0.0ms (0%)

Profiling

Loading profile data...