Expression 3, p15

Time bar (total: 2.5s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%25%75%0%0%0%0
100%25%0%75%0%0%0%1
Compiler

Compiled 17 to 9 computations (47.1% saved)

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

sample789.0ms (31.2%)

Results
531.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 295.0ms
ival-mult: 149.0ms (50.6% of total)
ival-<=: 75.0ms (25.5% of total)
ival-add: 41.0ms (13.9% of total)
ival-and: 17.0ms (5.8% of total)
const: 11.0ms (3.7% of total)
backward-pass: 2.0ms (0.7% of total)
Bogosity

preprocess71.0ms (2.8%)

Algorithm
egg-herbie
Rules
668×fnmadd-define
538×fnmsub-define
534×fmsub-define
382×fmm-def
364×fma-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0921
14818
216218
359918
4149618
5223318
6234418
046
1156
2266
3356
4496
5776
6836
0836
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(+ (* x (* x x)) (* x x))
Outputs
(+ (* x (* x x)) (* x x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
Call 2
Inputs
(+ (* x (* x x)) (* x x))
(+ (* (neg x) (* (neg x) (neg x))) (* (neg x) (neg x)))
(neg (+ (* (neg x) (* (neg x) (neg x))) (* (neg x) (neg x))))
Outputs
(+ (* x (* x x)) (* x x))
(fma x (square x) (square x))
(+ (* (neg x) (* (neg x) (neg x))) (* (neg x) (neg x)))
(fmsub x x (pow x 3))
(neg (+ (* (neg x) (* (neg x) (neg x))) (* (neg x) (neg x))))
(fmsub x (square x) (square x))

explain61.0ms (2.4%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-x
00-0-(*.f64 x x)
00-0-(*.f64 x (*.f64 x x))
00-0-(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Results
36.0ms512×0valid
Compiler

Compiled 50 to 14 computations (72% saved)

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

eval0.0ms (0%)

Compiler

Compiled 8 to 5 computations (37.5% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
100.0%
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
Compiler

Compiled 18 to 9 computations (50% saved)

simplify6.0ms (0.3%)

Algorithm
egg-herbie
Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(*.f64 x (*.f64 x x))
cost-diff128
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
cost-diff0
(+.f64 x #s(literal 1 binary64))
cost-diff0
(*.f64 x (+.f64 x #s(literal 1 binary64)))
cost-diff0
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
Rules
42×*-lowering-*.f32
42×*-lowering-*.f64
40×fma-define
28×fma-lowering-fma.f32
28×fma-lowering-fma.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0828
12727
23927
36227
46627
06627
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* x (* x (+ x 1)))
x
(* x (+ x 1))
(+ x 1)
1
(+ (* x (* x x)) (* x x))
(* x (* x x))
x
(* x x)
Outputs
(* x (* x (+ x 1)))
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
x
(* x (+ x 1))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(+ x 1)
(+.f64 x #s(literal 1 binary64))
1
#s(literal 1 binary64)
(+ (* x (* x x)) (* x x))
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
(* x (* x x))
(*.f64 x (*.f64 x x))
x
(* x x)
(*.f64 x x)

localize46.0ms (1.8%)

Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 x x)
accuracy100.0%
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
accuracy99.8%
(*.f64 x (*.f64 x x))
accuracy100.0%
(+.f64 x #s(literal 1 binary64))
accuracy100.0%
(*.f64 x (+.f64 x #s(literal 1 binary64)))
accuracy100.0%
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
Results
36.0ms256×0valid
Compiler

Compiled 37 to 9 computations (75.7% saved)

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

series4.0ms (0.1%)

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

18 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(* x (* x (+ x 1)))
0.0ms
x
@0
(* x (* x (+ x 1)))
0.0ms
x
@0
(* x (* x x))
0.0ms
x
@-inf
(* x (* x x))
0.0ms
x
@inf
(+ (* x (* x x)) (* x x))

rewrite48.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
56×fma-define
50×*-lowering-*.f32
50×*-lowering-*.f64
40×fma-lowering-fma.f32
40×sum5-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0825
12924
24724
37824
411024
514124
617924
719324
019324
Stop Event
iter limit
saturated
Counts
6 → 60
Calls
Call 1
Inputs
(* x (* x (+ x 1)))
(* x (+ x 1))
(+ x 1)
(+ (* x (* x x)) (* x x))
(* x (* x x))
(* x x)
Outputs
(+.f64 (*.f64 x x) (*.f64 x (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 x x (*.f64 x (*.f64 x x)))
(fma.f64 x (*.f64 x x) (*.f64 x x))
(fma.f64 #s(literal 1 binary64) (*.f64 x x) (*.f64 x (*.f64 x x)))
(fma.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 (*.f64 x x) x (*.f64 x x))
(fma.f64 (*.f64 x x) #s(literal 1 binary64) (*.f64 x (*.f64 x x)))
(fma.f64 (*.f64 x (*.f64 x x)) #s(literal 1 binary64) (*.f64 x x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64)))))
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
(*.f64 (*.f64 x (+.f64 x #s(literal 1 binary64))) x)
(*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64)))
(*.f64 (*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64)))) #s(literal 1 binary64))
(+.f64 x (*.f64 x x))
(+.f64 (*.f64 x x) x)
(fma.f64 x x x)
(fma.f64 x #s(literal 1 binary64) (*.f64 x x))
(fma.f64 #s(literal 1 binary64) x (*.f64 x x))
(fma.f64 #s(literal 1 binary64) (*.f64 x x) x)
(fma.f64 (*.f64 x x) #s(literal 1 binary64) x)
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(*.f64 #s(literal 1 binary64) (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 (+.f64 x #s(literal 1 binary64)) x)
(*.f64 (*.f64 x (+.f64 x #s(literal 1 binary64))) #s(literal 1 binary64))
(+.f64 x #s(literal 1 binary64))
(+.f64 #s(literal 1 binary64) x)
(fma.f64 x #s(literal 1 binary64) #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) x #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (+.f64 x #s(literal 1 binary64)))
(*.f64 (+.f64 x #s(literal 1 binary64)) #s(literal 1 binary64))
(+.f64 (*.f64 x x) (*.f64 x (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 x x (*.f64 x (*.f64 x x)))
(fma.f64 x (*.f64 x x) (*.f64 x x))
(fma.f64 #s(literal 1 binary64) (*.f64 x x) (*.f64 x (*.f64 x x)))
(fma.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 (*.f64 x x) x (*.f64 x x))
(fma.f64 (*.f64 x x) #s(literal 1 binary64) (*.f64 x (*.f64 x x)))
(fma.f64 (*.f64 x (*.f64 x x)) #s(literal 1 binary64) (*.f64 x x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64)))))
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
(*.f64 (*.f64 x (+.f64 x #s(literal 1 binary64))) x)
(*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64)))
(*.f64 (*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64)))) #s(literal 1 binary64))
(exp.f64 (*.f64 #s(literal 3 binary64) (log.f64 x)))
(pow.f64 x #s(literal 3 binary64))
(pow.f64 (exp.f64 #s(literal 3 binary64)) (log.f64 x))
(*.f64 x (*.f64 x x))
(*.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x x)))
(*.f64 (*.f64 x x) x)
(*.f64 (*.f64 x (*.f64 x x)) #s(literal 1 binary64))
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 x)))
(pow.f64 x #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 x))
(*.f64 x x)
(*.f64 #s(literal 1 binary64) (*.f64 x x))
(*.f64 (*.f64 x x) #s(literal 1 binary64))

simplify292.0ms (11.6%)

Algorithm
egg-herbie
Rules
4678×*-lowering-*.f32
4678×*-lowering-*.f64
4214×cube-prod
3010×/-lowering-/.f32
3010×/-lowering-/.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
014298
149255
286255
3244255
41407255
52398255
63219255
73634255
84031255
94507255
104999255
115541255
125731255
135776255
145776255
156177255
166782255
177466255
08009255
Stop Event
iter limit
node limit
Counts
72 → 72
Calls
Call 1
Inputs
(pow x 2)
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
x
(* x (+ 1 x))
(* x (+ 1 x))
(* x (+ 1 x))
(pow x 2)
(* (pow x 2) (+ 1 (/ 1 x)))
(* (pow x 2) (+ 1 (/ 1 x)))
(* (pow x 2) (+ 1 (/ 1 x)))
(pow x 2)
(* (pow x 2) (+ 1 (/ 1 x)))
(* (pow x 2) (+ 1 (/ 1 x)))
(* (pow x 2) (+ 1 (/ 1 x)))
1
(+ 1 x)
(+ 1 x)
(+ 1 x)
x
(* x (+ 1 (/ 1 x)))
(* x (+ 1 (/ 1 x)))
(* x (+ 1 (/ 1 x)))
x
(* x (+ 1 (/ 1 x)))
(* x (+ 1 (/ 1 x)))
(* x (+ 1 (/ 1 x)))
(pow x 2)
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 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)
Outputs
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
x
(* x (+ 1 x))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* x (+ 1 x))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* x (+ 1 x))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
1
#s(literal 1 binary64)
(+ 1 x)
(+.f64 x #s(literal 1 binary64))
(+ 1 x)
(+.f64 x #s(literal 1 binary64))
(+ 1 x)
(+.f64 x #s(literal 1 binary64))
x
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
x
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.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)
(pow x 2)
(*.f64 x x)

eval15.0ms (0.6%)

Compiler

Compiled 1208 to 97 computations (92% saved)

prune6.0ms (0.2%)

Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New1464150
Fresh000
Picked202
Done000
Total1484152
Accuracy
100.0%
Counts
152 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 x x (*.f64 x (*.f64 x x)))
100.0%
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
100.0%
(*.f64 x (+.f64 (*.f64 x x) x))
98.4%
(*.f64 x x)
Compiler

Compiled 29 to 15 computations (48.3% saved)

simplify12.0ms (0.5%)

Algorithm
egg-herbie
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(*.f64 x (*.f64 x x))
cost-diff6400
(fma.f64 x x (*.f64 x (*.f64 x x)))
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 x #s(literal 1 binary64))
cost-diff0
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
cost-diff0
(*.f64 x x)
cost-diff0
(+.f64 (*.f64 x x) x)
cost-diff0
(*.f64 x (+.f64 (*.f64 x x) x))
cost-diff0
(*.f64 x x)
Rules
64×fma-define
42×*-lowering-*.f32
42×*-lowering-*.f64
28×fma-lowering-fma.f32
28×fma-lowering-fma.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0941
12541
23641
35041
47841
58541
08541
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(* x x)
x
(* x (+ (* x x) x))
x
(+ (* x x) x)
(* x x)
(* (+ x 1) (* x x))
(+ x 1)
x
1
(* x x)
(+ (* x x) (* x (* x x)))
x
(* x (* x x))
(* x x)
Outputs
(* x x)
(*.f64 x x)
x
(* x (+ (* x x) x))
(*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64)))
x
(+ (* x x) x)
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* x x)
(*.f64 x x)
(* (+ x 1) (* x x))
(*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64)))
(+ x 1)
(+.f64 x #s(literal 1 binary64))
x
1
#s(literal 1 binary64)
(* x x)
(*.f64 x x)
(+ (* x x) (* x (* x x)))
(*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64)))
x
(* x (* x x))
(*.f64 x (*.f64 x x))
(* x x)
(*.f64 x x)

localize68.0ms (2.7%)

Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(fma.f64 x x (*.f64 x (*.f64 x x)))
accuracy100.0%
(*.f64 x x)
accuracy99.8%
(*.f64 x (*.f64 x x))
accuracy100.0%
(+.f64 x #s(literal 1 binary64))
accuracy100.0%
(*.f64 x x)
accuracy100.0%
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
accuracy100.0%
(+.f64 (*.f64 x x) x)
accuracy100.0%
(*.f64 x x)
accuracy100.0%
(*.f64 x (+.f64 (*.f64 x x) x))
accuracy100.0%
(*.f64 x x)
Results
41.0ms256×0valid
Compiler

Compiled 54 to 10 computations (81.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-mult: 8.0ms (49.4% of total)
ival-add: 4.0ms (24.7% of total)
compiled-spec: 3.0ms (18.5% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series2.0ms (0.1%)

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

21 calls:

TimeVariablePointExpression
0.0ms
x
@-inf
(* x (+ (* x x) x))
0.0ms
x
@0
(* x (+ (* x x) x))
0.0ms
x
@inf
(* x (+ (* x x) x))
0.0ms
x
@inf
(* x (* x x))
0.0ms
x
@inf
(* (+ x 1) (* x x))

rewrite25.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
84×fma-define
50×*-lowering-*.f32
50×*-lowering-*.f64
40×fma-lowering-fma.f32
40×sum5-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0930
12730
24430
36430
410930
513530
617930
721630
021630
Stop Event
iter limit
saturated
Counts
7 → 75
Calls
Call 1
Inputs
(* x x)
(* x (+ (* x x) x))
(+ (* x x) x)
(* (+ x 1) (* x x))
(+ x 1)
(+ (* x x) (* x (* x x)))
(* x (* x x))
Outputs
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 x)))
(pow.f64 x #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 x))
(*.f64 x x)
(*.f64 (*.f64 x x) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 x x))
(+.f64 (*.f64 x x) (*.f64 x (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 x x (*.f64 x (*.f64 x x)))
(fma.f64 x (*.f64 x x) (*.f64 x x))
(fma.f64 (*.f64 x x) x (*.f64 x x))
(fma.f64 (*.f64 x x) #s(literal 1 binary64) (*.f64 x (*.f64 x x)))
(fma.f64 #s(literal 1 binary64) (*.f64 x x) (*.f64 x (*.f64 x x)))
(fma.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 (*.f64 x (*.f64 x x)) #s(literal 1 binary64) (*.f64 x x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64)))
(*.f64 (*.f64 x (+.f64 x #s(literal 1 binary64))) x)
(*.f64 #s(literal 1 binary64) (*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64))))
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
(*.f64 (*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64))) #s(literal 1 binary64))
(+.f64 x (*.f64 x x))
(+.f64 (*.f64 x x) x)
(fma.f64 x x x)
(fma.f64 x #s(literal 1 binary64) (*.f64 x x))
(fma.f64 (*.f64 x x) #s(literal 1 binary64) x)
(fma.f64 #s(literal 1 binary64) x (*.f64 x x))
(fma.f64 #s(literal 1 binary64) (*.f64 x x) x)
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(*.f64 (*.f64 x (+.f64 x #s(literal 1 binary64))) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 (+.f64 x #s(literal 1 binary64)) x)
(+.f64 (*.f64 x x) (*.f64 x (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 x x (*.f64 x (*.f64 x x)))
(fma.f64 x (*.f64 x x) (*.f64 x x))
(fma.f64 (*.f64 x x) x (*.f64 x x))
(fma.f64 (*.f64 x x) #s(literal 1 binary64) (*.f64 x (*.f64 x x)))
(fma.f64 #s(literal 1 binary64) (*.f64 x x) (*.f64 x (*.f64 x x)))
(fma.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 (*.f64 x (*.f64 x x)) #s(literal 1 binary64) (*.f64 x x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64)))
(*.f64 (*.f64 x (+.f64 x #s(literal 1 binary64))) x)
(*.f64 #s(literal 1 binary64) (*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64))))
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
(*.f64 (*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64))) #s(literal 1 binary64))
(+.f64 x #s(literal 1 binary64))
(+.f64 #s(literal 1 binary64) x)
(fma.f64 x #s(literal 1 binary64) #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) x #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (+.f64 x #s(literal 1 binary64)))
(*.f64 (+.f64 x #s(literal 1 binary64)) #s(literal 1 binary64))
(+.f64 (*.f64 x x) (*.f64 x (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 x x (*.f64 x (*.f64 x x)))
(fma.f64 x (*.f64 x x) (*.f64 x x))
(fma.f64 (*.f64 x x) x (*.f64 x x))
(fma.f64 (*.f64 x x) #s(literal 1 binary64) (*.f64 x (*.f64 x x)))
(fma.f64 #s(literal 1 binary64) (*.f64 x x) (*.f64 x (*.f64 x x)))
(fma.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x x)) (*.f64 x x))
(fma.f64 (*.f64 x (*.f64 x x)) #s(literal 1 binary64) (*.f64 x x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64)))
(*.f64 (*.f64 x (+.f64 x #s(literal 1 binary64))) x)
(*.f64 #s(literal 1 binary64) (*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64))))
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
(*.f64 (*.f64 (*.f64 x x) (+.f64 x #s(literal 1 binary64))) #s(literal 1 binary64))
(exp.f64 (*.f64 #s(literal 3 binary64) (log.f64 x)))
(pow.f64 x #s(literal 3 binary64))
(pow.f64 (exp.f64 #s(literal 3 binary64)) (log.f64 x))
(*.f64 x (*.f64 x x))
(*.f64 (*.f64 x x) x)
(*.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x x)))
(*.f64 (*.f64 x (*.f64 x x)) #s(literal 1 binary64))

simplify557.0ms (22.1%)

Algorithm
egg-herbie
Rules
4678×*-lowering-*.f32
4678×*-lowering-*.f64
4214×cube-prod
3010×/-lowering-/.f32
3010×/-lowering-/.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
014370
149317
286317
3244317
41407317
52398317
63219317
73634317
84031317
94507317
104999317
115541317
125731317
135776317
145776317
156177317
166782317
177466317
08009317
Stop Event
iter limit
node limit
Counts
84 → 84
Calls
Call 1
Inputs
(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)
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
x
(* x (+ 1 x))
(* x (+ 1 x))
(* x (+ 1 x))
(pow x 2)
(* (pow x 2) (+ 1 (/ 1 x)))
(* (pow x 2) (+ 1 (/ 1 x)))
(* (pow x 2) (+ 1 (/ 1 x)))
(pow x 2)
(* (pow x 2) (+ 1 (/ 1 x)))
(* (pow x 2) (+ 1 (/ 1 x)))
(* (pow x 2) (+ 1 (/ 1 x)))
(pow x 2)
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
1
(+ 1 x)
(+ 1 x)
(+ 1 x)
x
(* x (+ 1 (/ 1 x)))
(* x (+ 1 (/ 1 x)))
(* x (+ 1 (/ 1 x)))
x
(* x (+ 1 (/ 1 x)))
(* x (+ 1 (/ 1 x)))
(* x (+ 1 (/ 1 x)))
(pow x 2)
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(* (pow x 2) (+ 1 x))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(pow x 3)
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(* (pow x 3) (+ 1 (/ 1 x)))
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
Outputs
(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)
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
x
(* x (+ 1 x))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* x (+ 1 x))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* x (+ 1 x))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(* (pow x 2) (+ 1 (/ 1 x)))
(*.f64 x (+.f64 x #s(literal 1 binary64)))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
1
#s(literal 1 binary64)
(+ 1 x)
(+.f64 x #s(literal 1 binary64))
(+ 1 x)
(+.f64 x #s(literal 1 binary64))
(+ 1 x)
(+.f64 x #s(literal 1 binary64))
x
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
x
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(* x (+ 1 (/ 1 x)))
(+.f64 x #s(literal 1 binary64))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 2) (+ 1 x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(* (pow x 3) (+ 1 (/ 1 x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))

eval20.0ms (0.8%)

Compiler

Compiled 1535 to 100 computations (93.5% saved)

prune7.0ms (0.3%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New2130213
Fresh000
Picked044
Done000
Total2134217
Accuracy
100.0%
Counts
217 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 x x (*.f64 x (*.f64 x x)))
100.0%
(*.f64 (+.f64 x #s(literal 1 binary64)) (*.f64 x x))
100.0%
(*.f64 x (+.f64 (*.f64 x x) x))
98.4%
(*.f64 x x)
Compiler

Compiled 71 to 27 computations (62% saved)

regimes33.0ms (1.3%)

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

2 calls:

30.0ms
x
2.0ms
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Compiler

Compiled 12 to 5 computations (58.3% saved)

regimes4.0ms (0.2%)

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

2 calls:

2.0ms
x
2.0ms
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
Compiler

Compiled 12 to 5 computations (58.3% saved)

regimes2.0ms (0.1%)

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

1 calls:

2.0ms
x
Results
AccuracySegmentsBranch
100.0%1x
Compiler

Compiled 2 to 1 computations (50% saved)

regimes2.0ms (0.1%)

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

1 calls:

1.0ms
x
Results
AccuracySegmentsBranch
100.0%1x
Compiler

Compiled 2 to 1 computations (50% saved)

regimes1.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

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

1 calls:

1.0ms
x
Results
AccuracySegmentsBranch
98.4%1x
Compiler

Compiled 2 to 1 computations (50% saved)

simplify7.0ms (0.3%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
1-exp_binary64
1-exp_binary32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01134
12134
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 x x (*.f64 x (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(*.f64 x (+.f64 (*.f64 x x) x))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 x x)
Outputs
(fma.f64 x x (*.f64 x (*.f64 x x)))
(+.f64 (*.f64 x (*.f64 x x)) (*.f64 x x))
(+.f64 (*.f64 x x) (*.f64 x (*.f64 x x)))
(*.f64 x (+.f64 (*.f64 x x) x))
(*.f64 x (+.f64 x (*.f64 x x)))
(*.f64 x (*.f64 x (+.f64 x #s(literal 1 binary64))))
(*.f64 x x)

soundness414.0ms (16.4%)

Rules
4678×*-lowering-*.f32
4678×*-lowering-*.f64
4214×cube-prod
3010×/-lowering-/.f32
3010×/-lowering-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046
1156
2266
3356
4496
5776
6836
0836
0825
12924
24724
37824
411024
514124
617924
719324
019324
014298
149255
286255
3244255
41407255
52398255
63219255
73634255
84031255
94507255
104999255
115541255
125731255
135776255
145776255
156177255
166782255
177466255
08009255
Stop Event
done
iter limit
node limit
iter limit
saturated
iter limit
saturated
Compiler

Compiled 88 to 41 computations (53.4% saved)

preprocess34.0ms (1.3%)

Compiler

Compiled 106 to 40 computations (62.3% saved)

end0.0ms (0%)

Profiling

Loading profile data...