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

Time bar (total: 8.0s)

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)

sample589.0ms (7.4%)

Results
417.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 213.0ms
ival-mult: 200.0ms (94% of total)
const: 10.0ms (4.7% of total)
backward-pass: 3.0ms (1.4% of total)
Bogosity

preprocess69.0ms (0.9%)

Algorithm
egg-herbie
Rules
1208×fma-define
1136×fnmadd-define
624×fnmsub-define
624×fmsub-define
622×unsub-neg
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01844
16542
220042
363142
4115742
5302042
6358542
7371242
8371242
9371442
067
1137
2287
3457
4457
0457
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(* (* (* x 3) y) y)
Outputs
(* (* (* x 3) y) y)
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
Call 2
Inputs
(* (* (* x 3) y) y)
(* (* (* (neg x) 3) y) y)
(* (* (* x 3) (neg y)) (neg y))
(neg (* (* (* (neg x) 3) y) y))
(neg (* (* (* x 3) (neg y)) (neg y)))
(* (* (* y 3) x) x)
Outputs
(* (* (* x 3) y) y)
(* x (* y (* 3 y)))
(* (* (* (neg x) 3) y) y)
(* x (* y (* y -3)))
(* (* (* x 3) (neg y)) (neg y))
(* x (* y (* 3 y)))
(neg (* (* (* (neg x) 3) y) y))
(* x (* y (* 3 y)))
(neg (* (* (* x 3) (neg y)) (neg y)))
(* x (* y (* y -3)))
(* (* (* y 3) x) x)
(* x (* (* x 3) y))
Symmetry

(abs y)

(negabs x)

explain86.0ms (1.1%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) y) 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)) y)
00-0-y
Results
67.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 (94.2% of total)
const: 1.0ms (8.6% of total)
backward-pass: 0.0ms (0% of total)

eval78.0ms (1%)

Compiler

Compiled 9 to 6 computations (33.3% saved)

prune1.0ms (0%)

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

Compiled 18 to 12 computations (33.3% saved)

simplify6.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)) y)
cost-diff0
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) y) y)
cost-diff0
(*.f64 y y)
cost-diff0
(*.f64 #s(literal 3 binary64) (*.f64 y y))
cost-diff0
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
Rules
62×*-lowering-*.f32
62×*-lowering-*.f64
28×associate-*r*
20×*-commutative
18×associate-*l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0936
11836
23536
34536
04536
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* x (* 3 (* y y)))
x
(* 3 (* y y))
3
(* y y)
y
(* (* (* x 3) y) y)
(* (* x 3) y)
(* x 3)
x
3
y
Outputs
(* x (* 3 (* y y)))
(*.f64 (*.f64 y y) (*.f64 x #s(literal 3 binary64)))
x
(* 3 (* y y))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
3
#s(literal 3 binary64)
(* y y)
(*.f64 y y)
y
(* (* (* x 3) y) y)
(*.f64 (*.f64 y y) (*.f64 x #s(literal 3 binary64)))
(* (* x 3) y)
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* x 3)
(*.f64 x #s(literal 3 binary64))
x
3
#s(literal 3 binary64)
y

localize40.0ms (0.5%)

Localize:

Found 6 expressions of interest:

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

Compiled 39 to 10 computations (74.4% saved)

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

series9.0ms (0.1%)

Counts
6 → 108
Calls
Call 1
Inputs
#<alt (* x (* 3 (* y y)))>
#<alt (* 3 (* y y))>
#<alt (* y y)>
#<alt (* (* (* x 3) y) y)>
#<alt (* (* x 3) y)>
#<alt (* x 3)>
Outputs
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (* 3 (pow y 2))>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (pow y 2)>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<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)>
Calls

27 calls:

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

rewrite172.0ms (2.1%)

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: 5 (0.0ms)

IterNodesCost
0936
12036
24436
37036
414236
544214
6241314
7244214
8257214
9383614
0915214
Stop Event
iter limit
node limit
Counts
6 → 19
Calls
Call 1
Inputs
(* x (* 3 (* y y)))
(* 3 (* y y))
(* y y)
(* (* (* x 3) y) y)
(* (* x 3) y)
(* x 3)
Outputs
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
#s(literal 3 binary64)
#s(literal 1 binary64)
y
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)

simplify14.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
011588
120588
234588
342588
042588
Stop Event
iter limit
saturated
Counts
108 → 108
Calls
Call 1
Inputs
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(* 3 (pow y 2))
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(pow y 2)
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 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)
Outputs
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(* 3 (pow y 2))
(*.f64 #s(literal 3 binary64) (*.f64 y y))
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(pow y 2)
(*.f64 y y)
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 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)

eval38.0ms (0.5%)

Compiler

Compiled 859 to 28 computations (96.7% saved)

prune6.0ms (0.1%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New1225127
Fresh000
Picked022
Done000
Total1227129
Accuracy
100.0%
Counts
129 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) y) y)
30.5%
(*.f64 (*.f64 x #s(literal 3 binary64)) y)
99.7%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x y)) y)
87.8%
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
30.5%
(*.f64 x (*.f64 #s(literal 3 binary64) y))
5.3%
(*.f64 x #s(literal 3 binary64))
99.7%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
Compiler

Compiled 92 to 64 computations (30.4% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 11 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01263
12563
23663
34063
04063
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* (* 3 (* x y)) y)
(* 3 (* x y))
3
(* x y)
x
y
(* x 3)
x
3
(* x (* 3 y))
x
(* 3 y)
3
y
(* (* x 3) y)
(* x 3)
x
3
y
(* 3 (* y (* x y)))
3
(* y (* x y))
y
(* x y)
x
Outputs
(* (* 3 (* x y)) y)
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
3
#s(literal 3 binary64)
(* x y)
(*.f64 x y)
x
y
(* x 3)
(*.f64 #s(literal 3 binary64) x)
x
3
#s(literal 3 binary64)
(* x (* 3 y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
x
(* 3 y)
(*.f64 #s(literal 3 binary64) y)
3
#s(literal 3 binary64)
y
(* (* x 3) y)
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* x 3)
(*.f64 #s(literal 3 binary64) x)
x
3
#s(literal 3 binary64)
y
(* 3 (* y (* x y)))
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
3
#s(literal 3 binary64)
(* y (* x y))
(*.f64 x (*.f64 y y))
y
(* x y)
(*.f64 x y)
x

localize68.0ms (0.8%)

Localize:

Found 11 expressions of interest:

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

Compiled 66 to 13 computations (80.3% saved)

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

series7.0ms (0.1%)

Counts
9 → 192
Calls
Call 1
Inputs
#<alt (* (* 3 (* x y)) y)>
#<alt (* 3 (* x y))>
#<alt (* x y)>
#<alt (* x 3)>
#<alt (* x (* 3 y))>
#<alt (* 3 y)>
#<alt (* (* x 3) y)>
#<alt (* 3 (* y (* x y)))>
#<alt (* y (* x y))>
Outputs
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<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)>
#<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 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 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 (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* 3 (* x (pow y 2)))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
#<alt (* x (pow y 2))>
Calls

48 calls:

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

rewrite144.0ms (1.8%)

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: 8 (0.0ms)

IterNodesCost
01251
12551
23651
34251
44951
56551
613751
743625
8243421
9246321
10259321
11388521
0920521
Stop Event
iter limit
node limit
Counts
9 → 31
Calls
Call 1
Inputs
(* (* 3 (* x y)) y)
(* 3 (* x y))
(* x y)
(* x 3)
(* x (* 3 y))
(* 3 y)
(* (* x 3) y)
(* 3 (* y (* x y)))
(* y (* x y))
Outputs
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
x
(*.f64 x #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) x)
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
#s(literal 3 binary64)
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
(*.f64 x #s(literal 3 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 x #s(literal 3 binary64)))
(*.f64 (*.f64 x #s(literal 3 binary64)) #s(literal 1 binary64))
x
(*.f64 x #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) x)

simplify20.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
011960
120960
232960
338960
038960
Stop Event
iter limit
saturated
Counts
192 → 192
Calls
Call 1
Inputs
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 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)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 3 x)
(* 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 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))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* 3 (* x (pow y 2)))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
(* x (pow y 2))
Outputs
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y 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)
(*.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 (* 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 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))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* 3 (* x (pow y 2)))
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))
(* x (pow y 2))
(*.f64 x (*.f64 y y))

eval45.0ms (0.6%)

Compiler

Compiled 1588 to 34 computations (97.9% saved)

prune7.0ms (0.1%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New2651266
Fresh000
Picked055
Done022
Total2658273
Accuracy
100.0%
Counts
273 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) y) y)
30.5%
(*.f64 (*.f64 x #s(literal 3 binary64)) y)
99.7%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x y)) y)
87.8%
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
30.5%
(*.f64 x (*.f64 #s(literal 3 binary64) y))
5.3%
(*.f64 x #s(literal 3 binary64))
99.7%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
30.5%
(*.f64 #s(literal 3 binary64) (*.f64 y x))
Compiler

Compiled 62 to 43 computations (30.6% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0511
1911
21611
31811
01811
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* 3 (* y x))
3
(* y x)
y
x
Outputs
(* 3 (* y x))
(*.f64 y (*.f64 #s(literal 3 binary64) x))
3
#s(literal 3 binary64)
(* y x)
(*.f64 y x)
y
x

localize20.0ms (0.2%)

Localize:

Found 2 expressions of interest:

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

Compiled 14 to 6 computations (57.1% saved)

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

series1.0ms (0%)

Counts
2 → 48
Calls
Call 1
Inputs
#<alt (* 3 (* y x))>
#<alt (* y x)>
Outputs
#<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)>
Calls

12 calls:

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

rewrite11.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
058
198
2168
3188
0188
Stop Event
iter limit
saturated
Counts
2 → 8
Calls
Call 1
Inputs
(* 3 (* y x))
(* y x)
Outputs
(*.f64 #s(literal 3 binary64) (*.f64 y x))
(*.f64 y (*.f64 #s(literal 3 binary64) x))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(*.f64 (*.f64 y x) #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) y) x)
(*.f64 (*.f64 #s(literal 3 binary64) x) y)
(*.f64 y x)
(*.f64 x y)

simplify6.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
05192
19192
216192
318192
018192
Stop Event
iter limit
saturated
Counts
48 → 48
Calls
Call 1
Inputs
(* 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)
Outputs
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
(* 3 (* x y))
(*.f64 x (*.f64 #s(literal 3 binary64) 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)

eval31.0ms (0.4%)

Compiler

Compiled 282 to 14 computations (95% saved)

prune5.0ms (0.1%)

Pruning

8 alts after pruning (0 fresh and 8 done)

PrunedKeptTotal
New56056
Fresh000
Picked011
Done077
Total56864
Accuracy
100.0%
Counts
64 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) y) y)
30.5%
(*.f64 (*.f64 x #s(literal 3 binary64)) y)
99.7%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x y)) y)
87.8%
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
30.5%
(*.f64 x (*.f64 #s(literal 3 binary64) y))
5.3%
(*.f64 x #s(literal 3 binary64))
99.7%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
30.5%
(*.f64 #s(literal 3 binary64) (*.f64 y x))
Compiler

Compiled 110 to 61 computations (44.5% saved)

regimes22.0ms (0.3%)

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

4 calls:

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

Compiled 20 to 14 computations (30% saved)

regimes9.0ms (0.1%)

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

3 calls:

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

Compiled 11 to 8 computations (27.3% saved)

regimes9.0ms (0.1%)

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

3 calls:

4.0ms
y
2.0ms
(*.f64 x #s(literal 3 binary64))
2.0ms
x
Results
AccuracySegmentsBranch
30.5%1x
30.5%1y
30.5%1(*.f64 x #s(literal 3 binary64))
Compiler

Compiled 11 to 8 computations (27.3% saved)

regimes4.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

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

3 calls:

1.0ms
(*.f64 x #s(literal 3 binary64))
1.0ms
y
1.0ms
x
Results
AccuracySegmentsBranch
5.3%1y
5.3%1x
5.3%1(*.f64 x #s(literal 3 binary64))
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
12×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

soundness6.4s (80%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
011588
120588
234588
342588
042588
0936
12036
24436
37036
414236
544214
6241314
7244214
8257214
9383614
0915214
067
1137
2287
3457
4457
0457
01251
12551
23651
34251
44951
56551
613751
743625
8243421
9246321
10259321
11388521
0920521
Stop Event
done
iter limit
node limit
iter limit
saturated
iter limit
node limit
iter limit
saturated
Compiler

Compiled 78 to 45 computations (42.3% saved)

preprocess62.0ms (0.8%)

Remove

(negabs x)

(abs y)

Compiler

Compiled 228 to 138 computations (39.5% saved)

end0.0ms (0%)

Profiling

Loading profile data...