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

Time bar (total: 6.4s)

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)

sample701.0ms (10.9%)

Results
507.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 260.0ms
ival-mult: 247.0ms (94.9% of total)
const: 11.0ms (4.2% of total)
backward-pass: 3.0ms (1.2% of total)
Bogosity

preprocess62.0ms (1%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
01844
16536
220336
363736
4116636
5303136
6359636
7372336
8372336
9372536
067
1136
2296
3466
4466
0466
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 (* 3 (square y)))
(* (* (* (neg x) 3) y) y)
(* x (* (square y) -3))
(* (* (* x 3) (neg y)) (neg y))
(* x (* 3 (square y)))
(neg (* (* (* (neg x) 3) y) y))
(* x (* 3 (square y)))
(neg (* (* (* x 3) (neg y)) (neg y)))
(* x (* (square y) -3))
(* (* (* y 3) x) x)
(* 3 (* y (square x)))
Symmetry

(abs y)

(negabs x)

explain71.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
48.0ms512×0valid
Compiler

Compiled 51 to 20 computations (60.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 13.0ms
ival-mult: 12.0ms (91.6% of total)
const: 1.0ms (7.6% 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
99.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) y) y)
88.2%
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
Compiler

Compiled 18 to 12 computations (33.3% saved)

simplify7.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
20×associate-*l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
11932
23632
34732
04732
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 x (*.f64 y (*.f64 #s(literal 3 binary64) y)))
x
(* 3 (* y y))
(*.f64 y (*.f64 #s(literal 3 binary64) y))
3
#s(literal 3 binary64)
(* y y)
(*.f64 y y)
y
(* (* (* x 3) y) y)
(*.f64 x (*.f64 y (*.f64 #s(literal 3 binary64) y)))
(* (* 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

localize50.0ms (0.8%)

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.7%
(*.f64 #s(literal 3 binary64) (*.f64 y y))
accuracy88.3%
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
Results
39.0ms256×0valid
Compiler

Compiled 39 to 10 computations (74.4% saved)

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

series31.0ms (0.5%)

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
23.0ms
x
@-inf
(* x (* 3 (* y y)))
1.0ms
x
@0
(* x (* 3 (* y y)))
1.0ms
x
@0
(* (* x 3) y)
1.0ms
y
@0
(* x (* 3 (* y y)))
0.0ms
y
@0
(* (* x 3) y)

rewrite172.0ms (2.7%)

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

Useful iterations: 5 (0.0ms)

IterNodesCost
0930
12130
24530
37230
414630
544414
6238214
7241414
8254814
9386014
0922714
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 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
#s(literal 3 binary64)
#s(literal 1 binary64)
y
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
(*.f64 #s(literal 3 binary64) x)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))

simplify16.0ms (0.2%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
011588
120516
235516
343516
043516
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)

eval11.0ms (0.2%)

Compiler

Compiled 859 to 28 computations (96.7% saved)

prune7.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)
32.3%
(*.f64 (*.f64 x #s(literal 3 binary64)) y)
99.7%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x y)) y)
88.2%
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
32.3%
(*.f64 x (*.f64 #s(literal 3 binary64) y))
5.1%
(*.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)

simplify7.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: 2 (0.0ms)

IterNodesCost
01263
12563
23660
34160
04160
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

localize113.0ms (1.7%)

Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 x y)
accuracy99.8%
(*.f64 y (*.f64 x y))
accuracy99.8%
(*.f64 #s(literal 3 binary64) (*.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
72.0ms256×0valid
Compiler

Compiled 66 to 13 computations (80.3% saved)

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

series4.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
0.0ms
x
@-inf
(* x y)
0.0ms
y
@-inf
(* x y)
0.0ms
x
@-inf
(* y (* x y))
0.0ms
y
@-inf
(* 3 y)
0.0ms
y
@inf
(* 3 y)

rewrite185.0ms (2.9%)

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

Useful iterations: 8 (0.0ms)

IterNodesCost
01251
12551
23645
34345
45045
56745
614145
744425
8247121
9250321
10263721
11391921
0929221
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 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 #s(literal 3 binary64) x)
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 #s(literal 3 binary64) x)
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
x
(*.f64 #s(literal 1 binary64) x)
(*.f64 x #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 #s(literal 3 binary64) x)
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 #s(literal 3 binary64) x)
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
#s(literal 3 binary64)
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 #s(literal 3 binary64) x)
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 #s(literal 3 binary64) x))
(*.f64 #s(literal 3 binary64) x)
(*.f64 x #s(literal 3 binary64))
(*.f64 (*.f64 #s(literal 3 binary64) x) #s(literal 1 binary64))
x
(*.f64 #s(literal 1 binary64) x)
(*.f64 x #s(literal 1 binary64))

simplify21.0ms (0.3%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
011960
120888
233888
339888
039888
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))

eval216.0ms (3.4%)

Compiler

Compiled 1588 to 34 computations (97.9% saved)

prune5.0ms (0.1%)

Pruning

9 alts after pruning (2 fresh and 7 done)

PrunedKeptTotal
New2642266
Fresh000
Picked055
Done022
Total2649273
Accuracy
100.0%
Counts
273 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) y) y)
32.3%
(*.f64 (*.f64 x #s(literal 3 binary64)) y)
99.7%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x y)) y)
88.2%
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
32.3%
(*.f64 x (*.f64 #s(literal 3 binary64) y))
5.1%
(*.f64 x #s(literal 3 binary64))
99.7%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
32.3%
(*.f64 #s(literal 3 binary64) (*.f64 y x))
88.2%
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
Compiler

Compiled 71 to 49 computations (31% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 5 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0826
11926
23726
34326
04326
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* 3 (* x (* y y)))
3
(* x (* y y))
x
(* y y)
y
(* 3 (* y x))
3
(* y x)
y
x
Outputs
(* 3 (* x (* y y)))
(*.f64 x (*.f64 y (*.f64 #s(literal 3 binary64) y)))
3
#s(literal 3 binary64)
(* x (* y y))
(*.f64 x (*.f64 y y))
x
(* y y)
(*.f64 y y)
y
(* 3 (* y x))
(*.f64 x (*.f64 #s(literal 3 binary64) y))
3
#s(literal 3 binary64)
(* y x)
(*.f64 x y)
y
x

localize116.0ms (1.8%)

Localize:

Found 5 expressions of interest:

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

Compiled 32 to 9 computations (71.9% saved)

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

series1.0ms (0%)

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

27 calls:

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

rewrite184.0ms (2.9%)

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
0822
12122
24522
36822
414222
544613
624069
724389
825729
938579
092379
Stop Event
iter limit
node limit
Counts
5 → 16
Calls
Call 1
Inputs
(* 3 (* x (* y y)))
(* x (* y y))
(* y y)
(* 3 (* y x))
(* y x)
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)
x
(*.f64 #s(literal 1 binary64) x)
(*.f64 x #s(literal 1 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)
x
(*.f64 #s(literal 1 binary64) x)
(*.f64 x #s(literal 1 binary64))

simplify25.0ms (0.4%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
09516
117456
234456
347456
047456
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)))
(* 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))
(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 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 (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))
(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 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)

eval11.0ms (0.2%)

Compiler

Compiled 730 to 19 computations (97.4% saved)

prune21.0ms (0.3%)

Pruning

9 alts after pruning (0 fresh and 9 done)

PrunedKeptTotal
New1240124
Fresh000
Picked022
Done077
Total1249133
Accuracy
100.0%
Counts
133 → 9
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) y) y)
32.3%
(*.f64 (*.f64 x #s(literal 3 binary64)) y)
99.7%
(*.f64 (*.f64 #s(literal 3 binary64) (*.f64 x y)) y)
88.2%
(*.f64 x (*.f64 #s(literal 3 binary64) (*.f64 y y)))
32.3%
(*.f64 x (*.f64 #s(literal 3 binary64) y))
5.1%
(*.f64 x #s(literal 3 binary64))
99.7%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x y)))
32.3%
(*.f64 #s(literal 3 binary64) (*.f64 y x))
88.2%
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
Compiler

Compiled 126 to 69 computations (45.2% saved)

regimes14.0ms (0.2%)

Counts
9 → 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 x (*.f64 y 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:

4.0ms
(*.f64 x #s(literal 3 binary64))
3.0ms
x
3.0ms
y
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)

regimes25.0ms (0.4%)

Counts
7 → 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 x (*.f64 y 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:

18.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)

regimes8.0ms (0.1%)

Counts
5 → 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 x (*.f64 y y)))
Outputs
(*.f64 #s(literal 3 binary64) (*.f64 x (*.f64 y y)))
Calls

3 calls:

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

Compiled 11 to 8 computations (27.3% saved)

regimes20.0ms (0.3%)

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 x (*.f64 #s(literal 3 binary64) y))
Calls

3 calls:

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

Compiled 11 to 8 computations (27.3% saved)

regimes5.0ms (0.1%)

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

3 calls:

2.0ms
(*.f64 x #s(literal 3 binary64))
2.0ms
y
2.0ms
x
Results
AccuracySegmentsBranch
32.3%1x
32.3%1(*.f64 x #s(literal 3 binary64))
32.3%1y
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
y
1.0ms
(*.f64 x #s(literal 3 binary64))
1.0ms
x
Results
AccuracySegmentsBranch
5.1%1x
5.1%1(*.f64 x #s(literal 3 binary64))
5.1%1y
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify25.0ms (0.4%)

Algorithm
egg-herbie
Rules
20×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01634
12534
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 x (*.f64 y y)))
(*.f64 x (*.f64 #s(literal 3 binary64) 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 x (*.f64 y y)))
(*.f64 x (*.f64 #s(literal 3 binary64) 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)

soundness4.1s (63.4%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
011588
120516
235516
343516
043516
01251
12551
23645
34345
45045
56745
614145
744425
8247121
9250321
10263721
11391921
0929221
067
1136
2296
3466
4466
0466
0930
12130
24530
37230
414630
544414
6238214
7241414
8254814
9386014
0922714
011960
120888
233888
339888
039888
Stop Event
done
iter limit
saturated
iter limit
node limit
iter limit
saturated
iter limit
node limit
iter limit
saturated
Compiler

Compiled 124 to 73 computations (41.1% saved)

preprocess211.0ms (3.3%)

Remove

(negabs x)

(abs y)

Compiler

Compiled 252 to 148 computations (41.3% saved)

end0.0ms (0%)

Profiling

Loading profile data...