sqrt A (should all be same)

Time bar (total: 5.2s)

analyze0.0ms (0%)

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

Compiled 10 to 5 computations (50% saved)

sample656.0ms (12.7%)

Results
642.0ms8248×body256valid
1.0msbody256infinite
Bogosity

preprocess62.0ms (1.2%)

Algorithm
egg-herbie
Rules
82×fma-def
60×associate-*r*
31×*-commutative
18×associate-*l*
17×associate-+r-
Problems
131×No Errors
125×(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01339
13339
27539
321539
438939
548039
Stop Event
saturated
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(sqrt.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) (neg.f64 x))))
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(hypot.f64 x x)
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(hypot.f64 x x)
(sqrt.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) (neg.f64 x))))
(hypot.f64 x x)
Symmetry

(abs x)

Compiler

Compiled 30 to 9 computations (70% saved)

eval0.0ms (0%)

Compiler

Compiled 4 to 2 computations (50% saved)

prune1.0ms (0%)

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

Compiled 26 to 12 computations (53.8% saved)

localize28.0ms (0.5%)

Localize:

Found 3 expressions with local error:

NewAccuracyProgram
100.0%
(hypot.f64 x x)
100.0%
(+.f64 (*.f64 x x) (*.f64 x x))
55.6%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Compiler

Compiled 25 to 6 computations (76% saved)

series4.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(hypot.f64 x x)
1.0ms
x
@0
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
1.0ms
x
@inf
(+.f64 (*.f64 x x) (*.f64 x x))
0.0ms
x
@inf
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
0.0ms
x
@0
(hypot.f64 x x)

rewrite263.0ms (5.1%)

Algorithm
batch-egg-rewrite
Rules
657×associate-*r*
411×associate-*l*
231×*-un-lft-identity
178×add-sqr-sqrt
158×add-cube-cbrt
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01039
111339
2125239
Stop Event
node limit
Counts
3 → 108
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(+.f64 (*.f64 x x) (*.f64 x x))
(hypot.f64 x x)
Outputs
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64

simplify134.0ms (2.6%)

Algorithm
egg-herbie
Rules
683×associate-+l+
528×distribute-lft-neg-in
501×distribute-lft-in
457×fma-def
325×+-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047668
161668
288668
3130668
4240668
5562668
6940668
71553668
81909668
92835668
103727668
115053668
127689668
Stop Event
node limit
Counts
144 → 42
Calls
Call 1
Inputs
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64
Outputs
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(neg.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 x (neg.f64 (sqrt.f64 2)))
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64
-3
-2
-3/2
-1
-1/2
-1/4
0
1/16
1/12
1/8
1/6
1/4
3/8
1/2
2/3
3/4
1
4/3
3/2
7/4
2
9/4
5/2
3
13/4
7/2
4
9/2
5
6
8
9
12
16
18
64

eval5.0ms (0.1%)

Compiler

Compiled 68 to 62 computations (8.8% saved)

prune10.0ms (0.2%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New38442
Fresh000
Picked022
Done000
Total38644
Accuracy
100.0%
Counts
44 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
55.6%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.4%
64
5.4%
1
5.3%
1/16
3.8%
0
100.0%
(hypot.f64 x x)
55.6%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.4%
64
5.4%
1
5.3%
1/16
3.8%
0
Compiler

Compiled 42 to 28 computations (33.3% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune4.0ms (0.1%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New000
Fresh044
Picked000
Done022
Total066
Accuracy
100.0%
Counts
6 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
55.6%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.4%
64
5.4%
1
5.3%
1/16
3.8%
0
100.0%
(hypot.f64 x x)
55.6%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.4%
64
5.4%
1
5.3%
1/16
3.8%
0
Compiler

Compiled 42 to 28 computations (33.3% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune4.0ms (0.1%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New000
Fresh044
Picked000
Done022
Total066
Accuracy
100.0%
Counts
6 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
55.6%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.4%
64
5.4%
1
5.3%
1/16
3.8%
0
100.0%
(hypot.f64 x x)
55.6%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.4%
64
5.4%
1
5.3%
1/16
3.8%
0
Compiler

Compiled 42 to 28 computations (33.3% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune3.0ms (0.1%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New000
Fresh044
Picked000
Done022
Total066
Accuracy
100.0%
Counts
6 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
55.6%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.4%
64
5.4%
1
5.3%
1/16
3.8%
0
Compiler

Compiled 37 to 23 computations (37.8% saved)

regimes123.0ms (2.4%)

Counts
6 → 1
Calls
Call 1
Inputs
0
1/16
1
64
(hypot.f64 x x)
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
(hypot.f64 x x)
Calls

4 calls:

109.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
5.0ms
x
4.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
4.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
100.0%1(+.f64 (*.f64 x x) (*.f64 x x))
100.0%1(*.f64 x x)
Compiler

Compiled 39 to 19 computations (51.3% saved)

regimes6.0ms (0.1%)

Counts
4 → 1
Calls
Call 1
Inputs
0
1/16
1
64
Outputs
1
Calls

1 calls:

5.0ms
x
Results
AccuracySegmentsBranch
5.4%1x
Compiler

Compiled 7 to 6 computations (14.3% saved)

regimes4.0ms (0.1%)

Counts
2 → 1
Calls
Call 1
Inputs
0
1/16
Outputs
1/16
Calls

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
5.3%1x
Compiler

Compiled 5 to 4 computations (20% saved)

regimes3.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
0
Outputs
0
Calls

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
3.8%1x
Compiler

Compiled 4 to 3 computations (25% saved)

simplify4.0ms (0.1%)

Algorithm
egg-herbie
Rules
1-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0916
11416
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(hypot.f64 x x)
1
1/16
0
Outputs
(hypot.f64 x x)
1
1/16
0
Compiler

Compiled 10 to 8 computations (20% saved)

soundness3.8s (73.7%)

Rules
657×associate-*r*
657×associate-*r*
657×associate-*r*
411×associate-*l*
411×associate-*l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01339
13339
27539
321539
438939
548039
01039
111339
2125239
01039
111339
2125239
01039
111339
2125239
Stop Event
node limit
node limit
node limit
saturated
Compiler

Compiled 12 to 5 computations (58.3% saved)

end0.0ms (0%)

preprocess42.0ms (0.8%)

Remove

(abs x)

Compiler

Compiled 40 to 22 computations (45% saved)

Profiling

Loading profile data...