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

Time bar (total: 3.7s)

analyze0.0ms (0%)

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

Compiled 10 to 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)

sample595.0ms (15.9%)

Results
391.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 188.0ms
ival-mult: 175.0ms (93% of total)
const: 11.0ms (5.8% of total)
backward-pass: 3.0ms (1.6% of total)
Bogosity

preprocess60.0ms (1.6%)

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

Useful iterations: 0 (0.0ms)

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

(abs x)

(negabs y)

explain133.0ms (3.5%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
290-2(9.422504458198305e-157 3.01860397805899e+129)(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
00-0-x
00-0-(*.f64 x #s(literal 3 binary64))
00-0-#s(literal 3 binary64)
00-0-(*.f64 (*.f64 x #s(literal 3 binary64)) x)
00-0-y
Results
34.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 (95.4% of total)
const: 1.0ms (8.7% 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
90.2%
(*.f64 (*.f64 (*.f64 x #s(literal 3 binary64)) x) y)
90.2%
(*.f64 #s(literal 3 binary64) (*.f64 y (*.f64 x x)))
Compiler

Compiled 18 to 12 computations (33.3% saved)

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 6 expressions of interest:

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

Useful iterations: 0 (0.0ms)

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

localize39.0ms (1.1%)

Localize:

Found 6 expressions of interest:

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

Compiled 39 to 10 computations (74.4% saved)

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

series9.0ms (0.2%)

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

27 calls:

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

rewrite148.0ms (4%)

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

Useful iterations: 6 (0.0ms)

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

simplify15.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

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

eval38.0ms (1%)

Compiler

Compiled 821 to 26 computations (96.8% saved)

prune5.0ms (0.1%)

Pruning

7 alts after pruning (5 fresh and 2 done)

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

Compiled 92 to 64 computations (30.4% saved)

simplify6.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 11 expressions of interest:

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

Useful iterations: 0 (0.0ms)

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

localize70.0ms (1.9%)

Localize:

Found 11 expressions of interest:

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

Compiled 66 to 15 computations (77.3% saved)

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

series8.0ms (0.2%)

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

54 calls:

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

rewrite139.0ms (3.7%)

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

Useful iterations: 6 (0.0ms)

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

simplify23.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

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

eval44.0ms (1.2%)

Compiler

Compiled 1439 to 29 computations (98% saved)

prune5.0ms (0.1%)

Pruning

7 alts after pruning (0 fresh and 7 done)

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

Compiled 98 to 57 computations (41.8% saved)

regimes14.0ms (0.4%)

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

4 calls:

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

Compiled 22 to 15 computations (31.8% saved)

regimes4.0ms (0.1%)

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

2 calls:

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

Compiled 6 to 4 computations (33.3% saved)

regimes3.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

2 calls:

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

Compiled 6 to 4 computations (33.3% saved)

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Rules
10×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

soundness2.3s (61.8%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 60 to 37 computations (38.3% saved)

preprocess53.0ms (1.4%)

Remove

(negabs y)

(abs x)

Compiler

Compiled 178 to 112 computations (37.1% saved)

end0.0ms (0%)

Profiling

Loading profile data...