Expanding a square

Time bar (total: 1.8s)

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)

sample833.0ms (45.1%)

Results
281.0ms2059×body1024valid
212.0ms2927×body256valid
176.0ms2032×body256infinite
111.0ms1012×body512valid
38.0ms226×body2048valid
Bogosity

preprocess75.0ms (4.1%)

Algorithm
egg-herbie
Rules
1906×fma-def
1604×fma-neg
1178×distribute-lft-in
1078×associate--r-
1078×distribute-neg-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0721
12519
25813
313813
458313
5203713
6545613
7783113
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(-.f64 (*.f64 (+.f64 x 1) (+.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 x (-.f64 x -2))
Compiler

Compiled 11 to 9 computations (18.2% saved)

simplify69.0ms (3.8%)

Algorithm
egg-herbie
Rules
1906×fma-def
1604×fma-neg
1178×distribute-lft-in
1078×associate--r-
1078×distribute-neg-in
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0721
12519
25813
313813
458313
5203713
6545613
7783113
Stop Event
node limit
Counts
1 → 5
Calls
Call 1
Inputs
(-.f64 (*.f64 (+.f64 x 1) (+.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 x (-.f64 x -2))

eval1.0ms (0.1%)

Compiler

Compiled 35 to 25 computations (28.6% saved)

prune1.0ms (0.1%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New415
Fresh101
Picked000
Done000
Total516
Accurracy
100.0%
Counts
6 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 x (-.f64 x -2))
100.0%
(*.f64 x (-.f64 x -2))
Compiler

Compiled 12 to 8 computations (33.3% saved)

localize19.0ms (1%)

Local Accuracy

Found 1 expressions with local accuracy:

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

Compiled 12 to 8 computations (33.3% saved)

series1.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@-inf
(*.f64 x (-.f64 x -2))
0.0ms
x
@inf
(*.f64 x (-.f64 x -2))
0.0ms
x
@0
(*.f64 x (-.f64 x -2))

rewrite51.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
1366×pow1
1274×add-exp-log
1274×log1p-expm1-u
1274×expm1-log1p-u
1252×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
113313
2167413
Stop Event
node limit
Counts
1 → 17
Calls
Call 1
Inputs
(*.f64 x (-.f64 x -2))
Outputs
(+.f64 (*.f64 x x) (*.f64 x 2))
(+.f64 (*.f64 x x) (*.f64 2 x))
(-.f64 (+.f64 1 (*.f64 x (+.f64 x 2))) 1)
(/.f64 (*.f64 x (+.f64 (pow.f64 x 3) 8)) (fma.f64 x x (+.f64 4 (*.f64 x -2))))
(/.f64 (*.f64 x (fma.f64 x x -4)) (+.f64 x -2))
(/.f64 (*.f64 (+.f64 (pow.f64 x 3) 8) x) (fma.f64 x x (+.f64 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)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x 2))) 2)
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 2))
(log.f64 (pow.f64 (exp.f64 x) (+.f64 x 2)))
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 x 2))))
(exp.f64 (log.f64 (*.f64 x (+.f64 x 2))))
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 x 2))))

simplify62.0ms (3.3%)

Algorithm
egg-herbie
Rules
1670×fma-def
1268×log-prod
724×*-commutative
646×distribute-lft-out
640×associate-*r*
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
058451
1134443
2398435
32440431
45933431
Stop Event
node limit
Counts
29 → 29
Calls
Call 1
Inputs
(*.f64 2 x)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(pow.f64 x 2)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(+.f64 (*.f64 x x) (*.f64 x 2))
(+.f64 (*.f64 x x) (*.f64 2 x))
(-.f64 (+.f64 1 (*.f64 x (+.f64 x 2))) 1)
(/.f64 (*.f64 x (+.f64 (pow.f64 x 3) 8)) (fma.f64 x x (+.f64 4 (*.f64 x -2))))
(/.f64 (*.f64 x (fma.f64 x x -4)) (+.f64 x -2))
(/.f64 (*.f64 (+.f64 (pow.f64 x 3) 8) x) (fma.f64 x x (+.f64 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)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x 2))) 2)
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 2))
(log.f64 (pow.f64 (exp.f64 x) (+.f64 x 2)))
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 x 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 x 2))))
(exp.f64 (log.f64 (*.f64 x (+.f64 x 2))))
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 x 2))))
Outputs
(*.f64 2 x)
(+.f64 x x)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(pow.f64 x 2)
(*.f64 x x)
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 2 x) (pow.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 x x) (*.f64 x 2))
(*.f64 x (+.f64 2 x))
(+.f64 (*.f64 x x) (*.f64 2 x))
(*.f64 x (+.f64 2 x))
(-.f64 (+.f64 1 (*.f64 x (+.f64 x 2))) 1)
(*.f64 x (+.f64 2 x))
(/.f64 (*.f64 x (+.f64 (pow.f64 x 3) 8)) (fma.f64 x x (+.f64 4 (*.f64 x -2))))
(/.f64 x (/.f64 (fma.f64 x x (+.f64 4 (*.f64 x -2))) (+.f64 (pow.f64 x 3) 8)))
(/.f64 x (/.f64 (fma.f64 x x (fma.f64 x -2 4)) (+.f64 (pow.f64 x 3) 8)))
(/.f64 (fma.f64 x 8 (pow.f64 x 4)) (fma.f64 x x (fma.f64 x -2 4)))
(/.f64 (fma.f64 x 8 (pow.f64 x 4)) (fma.f64 x (+.f64 x -2) 4))
(/.f64 (*.f64 x (fma.f64 x x -4)) (+.f64 x -2))
(*.f64 (/.f64 x (+.f64 x -2)) (fma.f64 x x -4))
(*.f64 x (/.f64 (fma.f64 x x -4) (+.f64 x -2)))
(/.f64 (*.f64 (+.f64 (pow.f64 x 3) 8) x) (fma.f64 x x (+.f64 4 (*.f64 x -2))))
(/.f64 x (/.f64 (fma.f64 x x (+.f64 4 (*.f64 x -2))) (+.f64 (pow.f64 x 3) 8)))
(/.f64 x (/.f64 (fma.f64 x x (fma.f64 x -2 4)) (+.f64 (pow.f64 x 3) 8)))
(/.f64 (fma.f64 x 8 (pow.f64 x 4)) (fma.f64 x x (fma.f64 x -2 4)))
(/.f64 (fma.f64 x 8 (pow.f64 x 4)) (fma.f64 x (+.f64 x -2) 4))
(/.f64 (*.f64 (fma.f64 x x -4) x) (+.f64 x -2))
(/.f64 (*.f64 x (fma.f64 x x -4)) (+.f64 x -2))
(*.f64 (/.f64 x (+.f64 x -2)) (fma.f64 x x -4))
(*.f64 x (/.f64 (fma.f64 x x -4) (+.f64 x -2)))
(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)) 3) 1/3)
(*.f64 x (+.f64 2 x))
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 x 2))) 2)
(*.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 x) (+.f64 x 2)))
(*.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))
(exp.f64 (log.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))

eval5.0ms (0.3%)

Compiler

Compiled 254 to 169 computations (33.5% saved)

prune5.0ms (0.3%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New26329
Fresh000
Picked011
Done000
Total26430
Accurracy
100.0%
Counts
30 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 x x) (*.f64 x 2))
55.8%
(+.f64 x x)
100.0%
(*.f64 x (-.f64 x -2))
47.1%
(*.f64 x x)
100.0%
(+.f64 (*.f64 x x) (*.f64 x 2))
55.8%
(+.f64 x x)
100.0%
(*.f64 x (-.f64 x -2))
47.1%
(*.f64 x x)
Compiler

Compiled 44 to 26 computations (40.9% saved)

localize28.0ms (1.5%)

Compiler

Compiled 25 to 10 computations (60% saved)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune2.0ms (0.1%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New000
Fresh000
Picked033
Done011
Total044
Accurracy
100.0%
Counts
4 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (*.f64 x x) (*.f64 x 2))
55.8%
(+.f64 x x)
100.0%
(*.f64 x (-.f64 x -2))
47.1%
(*.f64 x x)
Compiler

Compiled 50 to 29 computations (42% saved)

regimes13.0ms (0.7%)

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

4 calls:

4.0ms
x
3.0ms
(-.f64 (*.f64 (+.f64 x 1) (+.f64 x 1)) 1)
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 52 to 34 computations (34.6% saved)

regimes4.0ms (0.2%)

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

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
100.0%1x
Compiler

Compiled 14 to 7 computations (50% saved)

regimes8.0ms (0.4%)

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

1 calls:

7.0ms
x
Results
AccuracySegmentsBranch
97.7%3x
Compiler

Compiled 9 to 4 computations (55.6% saved)

regimes3.0ms (0.2%)

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:

3.0ms
x
Results
AccuracySegmentsBranch
47.1%1x
Compiler

Compiled 6 to 3 computations (50% saved)

bsearch24.0ms (1.3%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
13.0ms
8.327109139728908e-6
12.034149998445095
11.0ms
-297.9978040663507
-0.08956599848904573
Results
22.0ms272×body256valid
Compiler

Compiled 184 to 113 computations (38.6% saved)

simplify5.0ms (0.3%)

Algorithm
egg-herbie
Rules
+-commutative
*-commutative
sub-neg
neg-mul-1
if-if-or-not
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01878
12978
23478
33678
43778
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 x 2))
(*.f64 x (-.f64 x -2))
(if (<=.f64 x -2) (*.f64 x x) (if (<=.f64 x 2) (+.f64 x x) (*.f64 x x)))
(*.f64 x x)
Outputs
(+.f64 (*.f64 x x) (*.f64 x 2))
(*.f64 x (-.f64 x -2))
(if (<=.f64 x -2) (*.f64 x x) (if (<=.f64 x 2) (+.f64 x x) (*.f64 x x)))
(*.f64 x x)
Compiler

Compiled 36 to 20 computations (44.4% saved)

soundness413.0ms (22.4%)

Rules
1906×fma-def
1670×fma-def
1670×fma-def
1604×fma-neg
1366×pow1
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0721
12519
25813
313813
458313
5203713
6545613
7783113
0613
113313
2167413
058451
1134443
2398435
32440431
45933431
058451
1134443
2398435
32440431
45933431
Stop Event
node limit
node limit
node limit
node limit
Compiler

Compiled 177 to 128 computations (27.7% saved)

end224.0ms (12.1%)

Compiler

Compiled 86 to 46 computations (46.5% saved)

Profiling

Loading profile data...