Expanding a square

Time bar (total: 2.9s)

analyze0.0ms (0%)

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

Compiled 11 to 9 computations (18.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
Operation ival-sub, time spent: 0.0ms, 0.0% of total-time
Operation ival-add, time spent: 0.0ms, 0.0% of total-time
Operation ival-mult, time spent: 0.0ms, 0.0% of total-time
Operation const, time spent: 0.0ms, 0.0% of total-time

sample1.5s (51.8%)

Results
282.0ms2988×256valid
435.0ms2092×1024valid
189.0ms2049×256infinite
212.0ms999×512valid
28.0ms127×2048valid
0.0ms256valid
Precisions
Click to see histograms. Total time spent on operations: 481.0ms
Operation ival-add, time spent: 183.0ms, 38.0% of total-time
Operation ival-sub, time spent: 152.0ms, 32.0% of total-time
Operation ival-mult, time spent: 112.0ms, 23.0% of total-time
Operation const, time spent: 34.0ms, 7.0% of total-time
Bogosity

preprocess446.0ms (15.5%)

Algorithm
egg-herbie
Rules
6414×fma-neg
2208×unsub-neg
1012×distribute-neg-in
858×sub-neg
608×fma-define
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1180-1(0.008358680874295189)(-.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) 1)
00-0-x
00-0-(*.f64 (+.f64 x 1) (+.f64 x 1))
00-0-(+.f64 x 1)
00-0-1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
015128
151108
214688
348876
4217776
5379276
6493976
7578876
8621376
9645376
10645676
11645676
12657776
13666476
14683776
15683776
Stop Event
node limit
Calls
Call 1
Inputs
(-.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) 1)
(-.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) 1)
(-.f64 (*.f64 (+.f64 (neg.f64 x) 1) (+.f64 (neg.f64 x) 1)) 1)
(neg.f64 (-.f64 (*.f64 (+.f64 (neg.f64 x) 1) (+.f64 (neg.f64 x) 1)) 1))
Outputs
(-.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) 1)
(fma.f64 (+.f64 x 1) (+.f64 x 1) -1)
(*.f64 (+.f64 x 2) (+.f64 x 0))
(*.f64 x (+.f64 x 2))
(-.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) 1)
(fma.f64 (+.f64 x 1) (+.f64 x 1) -1)
(*.f64 (+.f64 x 2) (+.f64 x 0))
(*.f64 x (+.f64 x 2))
(-.f64 (*.f64 (+.f64 (neg.f64 x) 1) (+.f64 (neg.f64 x) 1)) 1)
(fma.f64 (+.f64 1 (neg.f64 x)) (+.f64 1 (neg.f64 x)) -1)
(fma.f64 (-.f64 1 x) (-.f64 1 x) -1)
(*.f64 (neg.f64 x) (-.f64 2 x))
(*.f64 x (+.f64 x -2))
(neg.f64 (-.f64 (*.f64 (+.f64 (neg.f64 x) 1) (+.f64 (neg.f64 x) 1)) 1))
(neg.f64 (fma.f64 (+.f64 1 (neg.f64 x)) (+.f64 1 (neg.f64 x)) -1))
(neg.f64 (fma.f64 (-.f64 1 x) (-.f64 1 x) -1))
(*.f64 (neg.f64 x) (neg.f64 (-.f64 2 x)))
(*.f64 x (-.f64 2 x))
Compiler

Compiled 56 to 42 computations (25% saved)

Precisions
Click to see histograms. Total time spent on operations: 49.0ms
Operation ival-add, time spent: 29.0ms, 59.0% of total-time
Operation ival-mult, time spent: 12.0ms, 24.0% of total-time
Operation const, time spent: 4.0ms, 8.0% of total-time
Operation ival-sub, time spent: 4.0ms, 8.0% of total-time

eval1.0ms (0%)

Compiler

Compiled 21 to 15 computations (28.6% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 x (+.f64 x 2))
Compiler

Compiled 6 to 4 computations (33.3% saved)

localize26.0ms (0.9%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(*.f64 x (+.f64 x 2))
Compiler

Compiled 12 to 8 computations (33.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
Operation ival-add, time spent: 5.0ms, 66.0% of total-time
Operation ival-mult, time spent: 2.0ms, 26.0% of total-time
Operation const, time spent: 1.0ms, 13.0% of total-time

series2.0ms (0.1%)

Counts
1 → 12
Calls
Call 1
Inputs
#<alt (*.f64 x (+.f64 x 2))>
Outputs
#<alt (*.f64 2 x)>
#<alt (*.f64 x (+.f64 2 x))>
#<alt (*.f64 x (+.f64 2 x))>
#<alt (*.f64 x (+.f64 2 x))>
#<alt (pow.f64 x 2)>
#<alt (*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))>
#<alt (*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))>
#<alt (*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))>
#<alt (pow.f64 x 2)>
#<alt (*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))>
#<alt (*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))>
#<alt (*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))>
Calls

3 calls:

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

rewrite169.0ms (5.9%)

Algorithm
batch-egg-rewrite
Rules
636×unpow-prod-down
396×log1p-expm1-u
396×expm1-log1p-u
377×add-exp-log
370×cbrt-prod
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
18319
2108619
Stop Event
node limit
Counts
1 → 47
Calls
Call 1
Inputs
(*.f64 x (+.f64 x 2))
Outputs
(+.f64 (pow.f64 x 2) (*.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 (*.f64 x 2) 1))
(+.f64 (*.f64 x 2) (pow.f64 x 2))
(+.f64 0 (*.f64 x (+.f64 x 2)))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 2) x) (+.f64 x 2)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))))
(-.f64 (+.f64 1 (*.f64 x (+.f64 x 2))) 1)
(/.f64 (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 x 3) 8)) (+.f64 (pow.f64 x 4) (-.f64 (pow.f64 (*.f64 x 2) 2) (*.f64 (pow.f64 x 2) (*.f64 x 2)))))
(/.f64 (-.f64 (pow.f64 x 4) (pow.f64 (*.f64 x 2) 2)) (-.f64 (pow.f64 x 2) (*.f64 x 2)))
(/.f64 (*.f64 x (+.f64 (pow.f64 x 3) 8)) (-.f64 (fma.f64 x x 4) (*.f64 x 2)))
(/.f64 (*.f64 x (fma.f64 x x -4)) (+.f64 x -2))
(/.f64 (*.f64 (+.f64 (pow.f64 x 3) 8) x) (-.f64 (fma.f64 x x 4) (*.f64 x 2)))
(/.f64 (*.f64 (fma.f64 x x -4) x) (+.f64 x -2))
(pow.f64 (*.f64 x (+.f64 x 2)) 1)
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 x 2))) 3)
(pow.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x 2))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 x (+.f64 x 2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (+.f64 x 2))))) (sqrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))))
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 x 2))))
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 x 2))))
(exp.f64 (log.f64 (*.f64 x (+.f64 x 2))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (+.f64 x 2)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (+.f64 x 2)))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (+.f64 x 2)))) 2))
(fma.f64 x x (*.f64 x 2))
(fma.f64 x 2 (pow.f64 x 2))
(fma.f64 2 x (pow.f64 x 2))
(fma.f64 1 (pow.f64 x 2) (*.f64 x 2))
(fma.f64 1 (*.f64 x 2) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 4) (*.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 2) (pow.f64 x 2))
(fma.f64 (pow.f64 x 2) 1 (*.f64 (*.f64 x 2) 1))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (*.f64 x 2))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 2) (pow.f64 x 2))
(fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (*.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 2) (*.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 2)) 2) (cbrt.f64 (*.f64 x 2)) (pow.f64 x 2))
(fma.f64 (sqrt.f64 (*.f64 x 2)) (sqrt.f64 (*.f64 x 2)) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (*.f64 x 2))
(fma.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (pow.f64 x 2))
(fma.f64 (*.f64 2 (sqrt.f64 x)) (sqrt.f64 x) (pow.f64 x 2))

simplify89.0ms (3.1%)

Algorithm
egg-herbie
Rules
1686×times-frac
654×fma-define
562×associate-*r*
546×fma-neg
536×prod-exp
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01431441
12861437
26511409
329351407
465561407
Stop Event
node limit
Counts
59 → 64
Calls
Call 1
Inputs
(*.f64 2 x)
(*.f64 x (+.f64 2 x))
(*.f64 x (+.f64 2 x))
(*.f64 x (+.f64 2 x))
(pow.f64 x 2)
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(pow.f64 x 2)
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(+.f64 (pow.f64 x 2) (*.f64 x 2))
(+.f64 (pow.f64 x 2) (*.f64 (*.f64 x 2) 1))
(+.f64 (*.f64 x 2) (pow.f64 x 2))
(+.f64 0 (*.f64 x (+.f64 x 2)))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 2) x) (+.f64 x 2)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))))
(-.f64 (+.f64 1 (*.f64 x (+.f64 x 2))) 1)
(/.f64 (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 x 3) 8)) (+.f64 (pow.f64 x 4) (-.f64 (pow.f64 (*.f64 x 2) 2) (*.f64 (pow.f64 x 2) (*.f64 x 2)))))
(/.f64 (-.f64 (pow.f64 x 4) (pow.f64 (*.f64 x 2) 2)) (-.f64 (pow.f64 x 2) (*.f64 x 2)))
(/.f64 (*.f64 x (+.f64 (pow.f64 x 3) 8)) (-.f64 (fma.f64 x x 4) (*.f64 x 2)))
(/.f64 (*.f64 x (fma.f64 x x -4)) (+.f64 x -2))
(/.f64 (*.f64 (+.f64 (pow.f64 x 3) 8) x) (-.f64 (fma.f64 x x 4) (*.f64 x 2)))
(/.f64 (*.f64 (fma.f64 x x -4) x) (+.f64 x -2))
(pow.f64 (*.f64 x (+.f64 x 2)) 1)
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 x 2))) 3)
(pow.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x 2))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 x (+.f64 x 2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (+.f64 x 2))))) (sqrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))))
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 x 2))))
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 x 2))))
(exp.f64 (log.f64 (*.f64 x (+.f64 x 2))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (+.f64 x 2)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (+.f64 x 2)))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (+.f64 x 2)))) 2))
(fma.f64 x x (*.f64 x 2))
(fma.f64 x 2 (pow.f64 x 2))
(fma.f64 2 x (pow.f64 x 2))
(fma.f64 1 (pow.f64 x 2) (*.f64 x 2))
(fma.f64 1 (*.f64 x 2) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 4) (*.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 2) (pow.f64 x 2))
(fma.f64 (pow.f64 x 2) 1 (*.f64 (*.f64 x 2) 1))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (*.f64 x 2))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 2) (pow.f64 x 2))
(fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (*.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 2) (*.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 2)) 2) (cbrt.f64 (*.f64 x 2)) (pow.f64 x 2))
(fma.f64 (sqrt.f64 (*.f64 x 2)) (sqrt.f64 (*.f64 x 2)) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (*.f64 x 2))
(fma.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (pow.f64 x 2))
(fma.f64 (*.f64 2 (sqrt.f64 x)) (sqrt.f64 x) (pow.f64 x 2))
Outputs
(*.f64 2 x)
(*.f64 x (+.f64 2 x))
(*.f64 x (+.f64 2 x))
(*.f64 x (+.f64 2 x))
(pow.f64 x 2)
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 x (+.f64 2 x))
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 x (+.f64 2 x))
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 x (+.f64 2 x))
(pow.f64 x 2)
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 x (+.f64 2 x))
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 x (+.f64 2 x))
(*.f64 (pow.f64 x 2) (+.f64 1 (*.f64 2 (/.f64 1 x))))
(*.f64 x (+.f64 2 x))
(+.f64 (pow.f64 x 2) (*.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (pow.f64 x 2) (*.f64 (*.f64 x 2) 1))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 x 2) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 0 (*.f64 x (+.f64 x 2)))
(*.f64 x (+.f64 2 x))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 2) x) (+.f64 x 2)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 2) x) (+.f64 2 x)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 2 x)) x))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))))
(*.f64 2 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 2 x)) x))))
(-.f64 (+.f64 1 (*.f64 x (+.f64 x 2))) 1)
(*.f64 x (+.f64 2 x))
(/.f64 (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 x 3) 8)) (+.f64 (pow.f64 x 4) (-.f64 (pow.f64 (*.f64 x 2) 2) (*.f64 (pow.f64 x 2) (*.f64 x 2)))))
(/.f64 (+.f64 (pow.f64 x 6) (*.f64 (pow.f64 x 3) 8)) (+.f64 (pow.f64 x 4) (-.f64 (pow.f64 (*.f64 2 x) 2) (*.f64 (pow.f64 x 3) 2))))
(/.f64 (fma.f64 (pow.f64 x 3) 8 (pow.f64 x 6)) (+.f64 (pow.f64 x 4) (+.f64 (*.f64 (pow.f64 x 2) 4) (*.f64 (pow.f64 x 3) -2))))
(/.f64 (fma.f64 (pow.f64 x 3) 8 (pow.f64 x 6)) (fma.f64 (pow.f64 x 2) 4 (*.f64 (pow.f64 x 3) (+.f64 x -2))))
(/.f64 (fma.f64 (pow.f64 x 3) 8 (pow.f64 x 6)) (*.f64 (pow.f64 x 2) (+.f64 4 (*.f64 x (+.f64 x -2)))))
(/.f64 (-.f64 (pow.f64 x 4) (pow.f64 (*.f64 x 2) 2)) (-.f64 (pow.f64 x 2) (*.f64 x 2)))
(*.f64 x (+.f64 2 x))
(/.f64 (*.f64 x (+.f64 (pow.f64 x 3) 8)) (-.f64 (fma.f64 x x 4) (*.f64 x 2)))
(*.f64 x (/.f64 (+.f64 (pow.f64 x 3) 8) (-.f64 (fma.f64 x x 4) (*.f64 2 x))))
(*.f64 (+.f64 (pow.f64 x 3) 8) (/.f64 x (+.f64 (fma.f64 x x 4) (*.f64 x -2))))
(/.f64 (fma.f64 x 8 (pow.f64 x 4)) (+.f64 4 (*.f64 x (+.f64 x -2))))
(/.f64 (*.f64 x (fma.f64 x x -4)) (+.f64 x -2))
(*.f64 x (+.f64 2 x))
(/.f64 (*.f64 (+.f64 (pow.f64 x 3) 8) x) (-.f64 (fma.f64 x x 4) (*.f64 x 2)))
(*.f64 x (/.f64 (+.f64 (pow.f64 x 3) 8) (-.f64 (fma.f64 x x 4) (*.f64 2 x))))
(*.f64 (+.f64 (pow.f64 x 3) 8) (/.f64 x (+.f64 (fma.f64 x x 4) (*.f64 x -2))))
(/.f64 (fma.f64 x 8 (pow.f64 x 4)) (+.f64 4 (*.f64 x (+.f64 x -2))))
(/.f64 (*.f64 (fma.f64 x x -4) x) (+.f64 x -2))
(*.f64 x (+.f64 2 x))
(pow.f64 (*.f64 x (+.f64 x 2)) 1)
(*.f64 x (+.f64 2 x))
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 x 2))) 3)
(*.f64 x (+.f64 2 x))
(pow.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 2) 1/2)
(*.f64 x (+.f64 2 x))
(pow.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 3) 1/3)
(*.f64 x (+.f64 2 x))
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x 2))) 2)
(*.f64 x (+.f64 2 x))
(pow.f64 (E.f64) (log.f64 (*.f64 x (+.f64 x 2))))
(*.f64 x (+.f64 2 x))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (+.f64 2 x)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (+.f64 2 x)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (+.f64 x 2))))) (sqrt.f64 (log.f64 (*.f64 x (+.f64 x 2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (+.f64 2 x))))) (sqrt.f64 (log.f64 (*.f64 x (+.f64 2 x)))))
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 2))
(*.f64 x (+.f64 2 x))
(log.f64 (pow.f64 (exp.f64 (+.f64 x 2)) x))
(*.f64 x (+.f64 2 x))
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 3))
(*.f64 x (+.f64 2 x))
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 x 2))))
(*.f64 x (+.f64 2 x))
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 x 2))))
(*.f64 x (+.f64 2 x))
(exp.f64 (log.f64 (*.f64 x (+.f64 x 2))))
(*.f64 x (+.f64 2 x))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (+.f64 x 2)))) 3))
(*.f64 x (+.f64 2 x))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (+.f64 x 2)))) 1/3))
(*.f64 x (+.f64 2 x))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (+.f64 x 2)))) 2))
(*.f64 x (+.f64 2 x))
(fma.f64 x x (*.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 x 2 (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 2 x (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 1 (pow.f64 x 2) (*.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 1 (*.f64 x 2) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 4) (*.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 2) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (pow.f64 x 2) 1 (*.f64 (*.f64 x 2) 1))
(*.f64 x (+.f64 2 x))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (*.f64 x 2))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (*.f64 2 x))
(fma.f64 2 x (*.f64 (sqrt.f64 x) (pow.f64 x 3/2)))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 2) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (*.f64 x 2))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (*.f64 2 x))
(fma.f64 2 x (*.f64 (sqrt.f64 x) (pow.f64 x 3/2)))
(fma.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 2) (*.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 2)) 2) (cbrt.f64 (*.f64 x 2)) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (sqrt.f64 (*.f64 x 2)) (sqrt.f64 (*.f64 x 2)) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (*.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(fma.f64 (*.f64 2 (sqrt.f64 x)) (sqrt.f64 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))

eval16.0ms (0.6%)

Compiler

Compiled 735 to 529 computations (28% saved)

prune7.0ms (0.3%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New62264
Fresh000
Picked011
Done000
Total62365
Accuracy
100.0%
Counts
65 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 x x (*.f64 x 2))
100.0%
(*.f64 x (+.f64 x 2))
47.0%
(*.f64 2 x)
Compiler

Compiled 17 to 11 computations (35.3% saved)

localize32.0ms (1.1%)

Compiler

Compiled 18 to 11 computations (38.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 14.0ms
Operation ival-mult, time spent: 8.0ms, 59.0% of total-time
Operation composed, time spent: 4.0ms, 29.0% of total-time
Operation const, time spent: 1.0ms, 7.0% of total-time
Operation ival-add, time spent: 1.0ms, 7.0% of total-time

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked022
Done011
Total033
Accuracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(fma.f64 x x (*.f64 x 2))
100.0%
(*.f64 x (+.f64 x 2))
47.0%
(*.f64 2 x)
Compiler

Compiled 41 to 27 computations (34.1% saved)

regimes15.0ms (0.5%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 2 x)
(*.f64 x (+.f64 x 2))
(-.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) 1)
(fma.f64 x x (*.f64 x 2))
Outputs
(fma.f64 x x (*.f64 x 2))
Calls

4 calls:

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

Compiled 24 to 18 computations (25% saved)

regimes10.0ms (0.3%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 2 x)
(*.f64 x (+.f64 x 2))
(-.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) 1)
Outputs
(*.f64 x (+.f64 x 2))
Calls

4 calls:

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

Compiled 24 to 18 computations (25% saved)

regimes2.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

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

1 calls:

2.0ms
x
Results
AccuracySegmentsBranch
47.0%1x
Compiler

Compiled 2 to 1 computations (50% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative
+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01253
11453
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f64 x x (*.f64 x 2))
(*.f64 x (+.f64 x 2))
(*.f64 2 x)
Outputs
(fma.f64 x x (*.f64 x 2))
(*.f64 x (+.f64 x 2))
(*.f64 2 x)
(*.f64 x 2)
Compiler

Compiled 17 to 11 computations (35.3% saved)

soundness511.0ms (17.8%)

Rules
6414×fma-neg
2208×unsub-neg
1012×distribute-neg-in
858×sub-neg
636×unpow-prod-down
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
015128
151108
214688
348876
4217776
5379276
6493976
7578876
8621376
9645376
10645676
11645676
12657776
13666476
14683776
15683776
0819
18319
2108619
Stop Event
node limit
node limit
Compiler

Compiled 90 to 66 computations (26.7% saved)

end0.0ms (0%)

preprocess53.0ms (1.9%)

Compiler

Compiled 50 to 34 computations (32% saved)

Profiling

Loading profile data...