Diagrams.Segment:$catParam from diagrams-lib-1.3.0.3, A

Time bar (total: 5.6s)

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 7 computations (30% saved)

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

sample1.5s (26.5%)

Results
734.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 396.0ms
ival-mult: 383.0ms (96.8% of total)
const: 11.0ms (2.8% of total)
backward-pass: 3.0ms (0.8% of total)
Bogosity

preprocess74.0ms (1.3%)

Algorithm
egg-herbie
Rules
1312×fma-define
1268×fnmadd-define
724×sum3-define
624×fnmsub-define
624×fmsub-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01744
15942
219842
354942
4113542
5288542
6379842
7384642
8384642
9384942
067
1127
2267
3437
4477
0477
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(* (* (* x 3) x) y)
Outputs
(* (* (* x 3) x) y)
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
Call 2
Inputs
(* (* (* x 3) x) y)
(* (* (* (neg x) 3) (neg x)) y)
(* (* (* x 3) x) (neg y))
(neg (* (* (* (neg x) 3) (neg x)) y))
(neg (* (* (* x 3) x) (neg y)))
(* (* (* y 3) y) x)
Outputs
(* (* (* x 3) x) y)
(* x (* x (* 3 y)))
(* (* (* (neg x) 3) (neg x)) y)
(* x (* x (* 3 y)))
(* (* (* x 3) x) (neg y))
(* x (* x (* y -3)))
(neg (* (* (* (neg x) 3) (neg x)) y))
(* x (* x (* y -3)))
(neg (* (* (* x 3) x) (neg y)))
(* x (* x (* 3 y)))
(* (* (* y 3) y) x)
(* x (* 3 (* y y)))
Symmetry

(abs x)

(negabs y)

explain55.0ms (1%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
320-1(1.7334936512647574e-158 1.9573054001699805e+145)(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
00-0-x
00-0-(*.f64 x #s(literal 3 binary64))
00-0-#s(literal 3 binary64)
00-0-(*.f64 (*.f64 x #s(literal 3 binary64)) x)
00-0-y
Results
35.0ms512×0valid
Compiler

Compiled 51 to 20 computations (60.8% saved)

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

eval0.0ms (0%)

Compiler

Compiled 9 to 6 computations (33.3% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
88.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
88.7%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
Compiler

Compiled 18 to 12 computations (33.3% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x #s(literal 3 binary64))
cost-diff0
(*.f64 (*.f64 x #s(literal 3 binary64)) x)
cost-diff0
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
cost-diff0
(*.f64 x x)
cost-diff0
(*.f64 y (*.f64 x x))
cost-diff0
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
Rules
62×*-lowering-*.f32
62×*-lowering-*.f64
28×associate-*r*
22×associate-*l*
20×*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0936
12136
24236
34836
04836
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* 3 (* y (* x x)))
3
(* y (* x x))
y
(* x x)
x
(* (* (* x 3) x) y)
(* (* x 3) x)
(* x 3)
x
3
y
Outputs
(* 3 (* y (* x x)))
(*.f64 (*.f64 x x) (*.f64 #s(literal 3 binary64) y))
3
#s(literal 3 binary64)
(* y (* x x))
(*.f64 y (*.f64 x x))
y
(* x x)
(*.f64 x x)
x
(* (* (* x 3) x) y)
(*.f64 (*.f64 x x) (*.f64 #s(literal 3 binary64) y))
(* (* x 3) x)
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* x 3)
(*.f64 #s(literal 3 binary64) x)
x
3
#s(literal 3 binary64)
y

localize52.0ms (0.9%)

Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 x #s(literal 3 binary64))
accuracy99.8%
(*.f64 (*.f64 x #s(literal 3 binary64)) x)
accuracy88.8%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
accuracy100.0%
(*.f64 x x)
accuracy99.8%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
accuracy88.8%
(*.f64 y (*.f64 x x))
Results
40.0ms256×0valid
Compiler

Compiled 39 to 10 computations (74.4% saved)

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

series7.0ms (0.1%)

Counts
6 → 108
Calls
Call 1
Inputs
#<alt (* 3 (* y (* x x)))>
#<alt (* y (* x x))>
#<alt (* x x)>
#<alt (* (* (* x 3) x) y)>
#<alt (* (* x 3) x)>
#<alt (* x 3)>
Outputs
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
Calls

27 calls:

TimeVariablePointExpression
1.0ms
y
@0
(* 3 (* y (* x x)))
1.0ms
x
@0
(* 3 (* y (* x x)))
1.0ms
x
@inf
(* (* x 3) x)
1.0ms
y
@inf
(* 3 (* y (* x x)))
0.0ms
x
@inf
(* 3 (* y (* x x)))

rewrite183.0ms (3.3%)

Algorithm
batch-egg-rewrite
Rules
2200×pow-lowering-pow.f64
2200×pow-lowering-pow.f32
1432×prod-exp
1316×*-lowering-*.f32
1316×*-lowering-*.f64
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
0932
12332
25132
37332
414532
544512
6238910
7241810
8254810
9381610
0919210
Stop Event
iter limit
node limit
Counts
6 → 15
Calls
Call 1
Inputs
(* 3 (* y (* x x)))
(* y (* x x))
(* x x)
(* (* (* x 3) x) y)
(* (* x 3) x)
(* x 3)
Outputs
(*.f64 #s(literal 1 binary64) (*.f64 y #s(literal 3 binary64)))
(*.f64 (*.f64 y #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 y #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) y)
y
(*.f64 #s(literal 1 binary64) y)
(*.f64 y #s(literal 1 binary64))
#s(literal 1 binary64)
x
(*.f64 #s(literal 1 binary64) (*.f64 y #s(literal 3 binary64)))
(*.f64 (*.f64 y #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 y #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) y)
#s(literal 3 binary64)
#s(literal 3 binary64)

simplify22.0ms (0.4%)

Algorithm
egg-herbie
Rules
62×*-lowering-*.f32
62×*-lowering-*.f64
32×associate-*r*
18×associate-*l*
14×*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09588
115588
227588
347588
448588
048588
Stop Event
iter limit
saturated
Counts
108 → 108
Calls
Call 1
Inputs
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
Outputs
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 (pow x 2))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)

eval10.0ms (0.2%)

Compiler

Compiled 821 to 26 computations (96.8% saved)

prune7.0ms (0.1%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New1185123
Fresh000
Picked022
Done000
Total1187125
Accuracy
99.9%
Counts
125 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
88.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
88.7%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x x)) y)
34.4%
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
4.9%
(*.f64 y #s(literal 3 binary64))
88.7%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
34.4%
(*.f64 #s(literal 3 binary64) (*.f64 y x))
99.7%
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
Compiler

Compiled 92 to 64 computations (30.4% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(*.f64 #s(literal 3 binary64) (*.f64 x x))
cost-diff0
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x x)) y)
cost-diff0
(*.f64 #s(literal 3 binary64) x)
cost-diff0
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
cost-diff0
(*.f64 y x)
cost-diff0
(*.f64 #s(literal 3 binary64) (*.f64 y x))
cost-diff0
(*.f64 y #s(literal 3 binary64))
cost-diff0
(*.f64 x y)
cost-diff0
(*.f64 x (*.f64 x y))
cost-diff0
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
Rules
62×*-lowering-*.f32
62×*-lowering-*.f64
18×*-commutative
16×associate-*l*
14×associate-*r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01463
12763
23663
03663
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* 3 (* x (* x y)))
3
(* x (* x y))
x
(* x y)
y
(* y 3)
y
3
(* 3 (* y x))
3
(* y x)
y
x
(* (* 3 x) y)
(* 3 x)
3
x
y
(* (* 3 (* x x)) y)
(* 3 (* x x))
3
(* x x)
x
y
Outputs
(* 3 (* x (* x y)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
3
#s(literal 3 binary64)
(* x (* x y))
(*.f64 y (*.f64 x x))
x
(* x y)
(*.f64 x y)
y
(* y 3)
(*.f64 #s(literal 3 binary64) y)
y
3
#s(literal 3 binary64)
(* 3 (* y x))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
3
#s(literal 3 binary64)
(* y x)
(*.f64 x y)
y
x
(* (* 3 x) y)
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
3
#s(literal 3 binary64)
x
y
(* (* 3 (* x x)) y)
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
(* 3 (* x x))
(*.f64 #s(literal 3 binary64) (*.f64 x x))
3
#s(literal 3 binary64)
(* x x)
(*.f64 x x)
x
y

localize105.0ms (1.9%)

Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 x x)
accuracy99.8%
(*.f64 #s(literal 3 binary64) (*.f64 x x))
accuracy88.8%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x x)) y)
accuracy100.0%
(*.f64 #s(literal 3 binary64) x)
accuracy99.7%
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
accuracy100.0%
(*.f64 y x)
accuracy99.6%
(*.f64 #s(literal 3 binary64) (*.f64 y x))
accuracy100.0%
(*.f64 y #s(literal 3 binary64))
accuracy100.0%
(*.f64 x y)
accuracy99.8%
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
accuracy99.8%
(*.f64 x (*.f64 x y))
Results
67.0ms256×0valid
Compiler

Compiled 66 to 15 computations (77.3% saved)

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

series6.0ms (0.1%)

Counts
11 → 216
Calls
Call 1
Inputs
#<alt (* 3 (* x (* x y)))>
#<alt (* x (* x y))>
#<alt (* x y)>
#<alt (* y 3)>
#<alt (* 3 (* y x))>
#<alt (* y x)>
#<alt (* (* 3 x) y)>
#<alt (* 3 x)>
#<alt (* (* 3 (* x x)) y)>
#<alt (* 3 (* x x))>
#<alt (* x x)>
Outputs
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* (pow x 2) y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 y)>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* x y)>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 (* x y))>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 x)>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (* (pow x 2) y))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (* 3 (pow x 2))>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
#<alt (pow x 2)>
Calls

54 calls:

TimeVariablePointExpression
0.0ms
x
@0
(* 3 (* y x))
0.0ms
y
@0
(* 3 (* y x))
0.0ms
y
@inf
(* x y)
0.0ms
x
@0
(* x y)
0.0ms
y
@inf
(* 3 (* y x))

rewrite149.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
2200×pow-lowering-pow.f64
2200×pow-lowering-pow.f32
1432×prod-exp
1316×*-lowering-*.f32
1316×*-lowering-*.f64
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
01459
12959
24559
36159
413359
543127
6236521
7239421
8252421
9381021
0908421
Stop Event
iter limit
node limit
Counts
11 → 33
Calls
Call 1
Inputs
(* 3 (* x (* x y)))
(* x (* x y))
(* x y)
(* y 3)
(* 3 (* y x))
(* y x)
(* (* 3 x) y)
(* 3 x)
(* (* 3 (* x x)) y)
(* 3 (* x x))
(* x x)
Outputs
(*.f64 #s(literal 3 binary64) y)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) y))
(*.f64 (*.f64 #s(literal 3 binary64) y) #s(literal 1 binary64))
(*.f64 y #s(literal 3 binary64))
y
(*.f64 #s(literal 1 binary64) y)
(*.f64 y #s(literal 1 binary64))
y
(*.f64 #s(literal 1 binary64) y)
(*.f64 y #s(literal 1 binary64))
(*.f64 #s(literal 3 binary64) y)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) y))
(*.f64 (*.f64 #s(literal 3 binary64) y) #s(literal 1 binary64))
(*.f64 y #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) y)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) y))
(*.f64 (*.f64 #s(literal 3 binary64) y) #s(literal 1 binary64))
(*.f64 y #s(literal 3 binary64))
y
(*.f64 #s(literal 1 binary64) y)
(*.f64 y #s(literal 1 binary64))
(*.f64 #s(literal 3 binary64) y)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) y))
(*.f64 (*.f64 #s(literal 3 binary64) y) #s(literal 1 binary64))
(*.f64 y #s(literal 3 binary64))
#s(literal 3 binary64)
(*.f64 #s(literal 3 binary64) y)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) y))
(*.f64 (*.f64 #s(literal 3 binary64) y) #s(literal 1 binary64))
(*.f64 y #s(literal 3 binary64))
#s(literal 3 binary64)
#s(literal 1 binary64)
x

simplify20.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0121008
1221008
2321008
3361008
0361008
Stop Event
iter limit
saturated
Counts
216 → 216
Calls
Call 1
Inputs
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* (pow x 2) y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 y)
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* x y)
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 (* x y))
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (* (pow x 2) y))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(* 3 (pow x 2))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
Outputs
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* (pow x 2) y)
(*.f64 x (*.f64 x y))
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* x y)
(*.f64 x y)
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 (* x y))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 x)
(*.f64 #s(literal 3 binary64) x)
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (* (pow x 2) y))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(* 3 (pow x 2))
(*.f64 x (*.f64 #s(literal 3 binary64) x))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)

eval33.0ms (0.6%)

Compiler

Compiled 1439 to 29 computations (98% saved)

prune5.0ms (0.1%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New2490249
Fresh000
Picked055
Done022
Total2497256
Accuracy
99.9%
Counts
256 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
88.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
88.7%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x x)) y)
34.4%
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
4.9%
(*.f64 y #s(literal 3 binary64))
88.7%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
34.4%
(*.f64 #s(literal 3 binary64) (*.f64 y x))
99.7%
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
Compiler

Compiled 98 to 57 computations (41.8% saved)

regimes14.0ms (0.2%)

Counts
7 → 1
Calls
Call 1
Inputs
(*.f64 y #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) (*.f64 y x))
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x x)) y)
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
Outputs
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
Calls

4 calls:

5.0ms
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
3.0ms
y
3.0ms
x
3.0ms
(*.f64 (*.f64 x #s(literal 3 binary64)) x)
Results
AccuracySegmentsBranch
99.7%1x
99.7%1y
99.7%1(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
99.7%1(*.f64 (*.f64 x #s(literal 3 binary64)) x)
Compiler

Compiled 22 to 15 computations (31.8% saved)

regimes4.0ms (0.1%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 y #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) (*.f64 y x))
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
Outputs
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
Calls

2 calls:

2.0ms
x
2.0ms
y
Results
AccuracySegmentsBranch
34.4%1x
34.4%1y
Compiler

Compiled 6 to 4 computations (33.3% saved)

regimes5.0ms (0.1%)

Counts
2 → 1
Calls
Call 1
Inputs
(*.f64 y #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) (*.f64 y x))
Outputs
(*.f64 #s(literal 3 binary64) (*.f64 y x))
Calls

2 calls:

3.0ms
y
2.0ms
x
Results
AccuracySegmentsBranch
34.4%1y
34.4%1x
Compiler

Compiled 6 to 4 computations (33.3% saved)

regimes3.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 y #s(literal 3 binary64))
Outputs
(*.f64 y #s(literal 3 binary64))
Calls

2 calls:

1.0ms
y
1.0ms
x
Results
AccuracySegmentsBranch
4.9%1y
4.9%1x
Compiler

Compiled 6 to 4 computations (33.3% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
14×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01120
11820
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
(*.f64 #s(literal 3 binary64) (*.f64 y x))
(*.f64 y #s(literal 3 binary64))
Outputs
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 x y)))
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
(*.f64 y (*.f64 #s(literal 3 binary64) x))
(*.f64 #s(literal 3 binary64) (*.f64 y x))
(*.f64 #s(literal 3 binary64) (*.f64 x y))
(*.f64 y #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) y)

soundness3.3s (58.4%)

Rules
2200×pow-lowering-pow.f64
2200×pow-lowering-pow.f32
1432×prod-exp
1316×*-lowering-*.f32
1316×*-lowering-*.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
1127
2267
3437
4477
0477
0932
12332
25132
37332
414532
544512
6238910
7241810
8254810
9381610
0919210
09588
115588
227588
347588
448588
048588
Stop Event
done
iter limit
saturated
iter limit
node limit
iter limit
saturated
Compiler

Compiled 65 to 39 computations (40% saved)

preprocess74.0ms (1.3%)

Remove

(negabs y)

(abs x)

Compiler

Compiled 224 to 140 computations (37.5% saved)

end0.0ms (0%)

Profiling

Loading profile data...