2isqrt (example 3.6)

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 19 to 12 computations (36.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-div: 0.0ms (0% of total)
...c/correct-round.rkt:104:19: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
ival-sub: 0.0ms (0% of total)
ival-and: 0.0ms (0% of total)
ival-sqrt: 0.0ms (0% of total)
const: 0.0ms (0% of total)
ival->: 0.0ms (0% of total)
ival-<: 0.0ms (0% of total)

sample2.2s (90.1%)

Results
1.3s4471×1024valid
408.0ms2067×512valid
168.0ms1718×256valid
Precisions
Click to see histograms. Total time spent on operations: 1.4s
...c/correct-round.rkt:104:19: 344.0ms (24.6% of total)
ival-sqrt: 320.0ms (22.9% of total)
ival-div: 314.0ms (22.5% of total)
ival-add: 109.0ms (7.8% of total)
ival->: 98.0ms (7% of total)
ival-sub: 98.0ms (7% of total)
ival-<: 80.0ms (5.7% of total)
ival-and: 23.0ms (1.6% of total)
const: 13.0ms (0.9% of total)
Bogosity

preprocess71.0ms (2.9%)

Algorithm
egg-herbie
Rules
97×fma-define
86×fma-neg
41×sub-neg
28×neg-mul-1
27×associate--r+
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
021176
137168
272164
3129164
4204164
5316164
6419164
7509164
8585164
9639164
10682164
11690164
12692164
Stop Event
saturated
Calls
Call 1
Inputs
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64)))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64)))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 (neg.f64 x) #s(literal 1 binary64)))))
(neg.f64 (-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 (neg.f64 x) #s(literal 1 binary64))))))
Outputs
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64)))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 #s(literal 1 binary64) x))))
(+.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal -1 binary64) (sqrt.f64 (+.f64 #s(literal 1 binary64) x))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64)))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 #s(literal 1 binary64) x))))
(+.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal -1 binary64) (sqrt.f64 (+.f64 #s(literal 1 binary64) x))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 (neg.f64 x) #s(literal 1 binary64)))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 #s(literal 1 binary64) (neg.f64 x)))))
(+.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal -1 binary64) (sqrt.f64 (-.f64 #s(literal 1 binary64) x))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal 1 binary64) (sqrt.f64 (-.f64 #s(literal 1 binary64) x))))
(neg.f64 (-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 (neg.f64 x) #s(literal 1 binary64))))))
(neg.f64 (-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 #s(literal 1 binary64) (neg.f64 x))))))
(neg.f64 (+.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (neg.f64 x))) (/.f64 #s(literal -1 binary64) (sqrt.f64 (-.f64 #s(literal 1 binary64) x)))))
(+.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 (-.f64 #s(literal 1 binary64) x))) (/.f64 #s(literal -1 binary64) (sqrt.f64 (neg.f64 x))))

explain136.0ms (5.5%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1870-0-(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64)))))
00-0-x
00-0-(sqrt.f64 (+.f64 x #s(literal 1 binary64)))
00-0-#s(literal 1 binary64)
00-0-(/.f64 #s(literal 1 binary64) (sqrt.f64 x))
00-0-(/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64))))
00-0-(sqrt.f64 x)
00-0-(+.f64 x #s(literal 1 binary64))
Results
67.0ms280×1024valid
23.0ms150×512valid
7.0ms82×256valid
Compiler

Compiled 80 to 26 computations (67.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 54.0ms
ival-sqrt: 21.0ms (38.9% of total)
ival-div: 19.0ms (35.2% of total)
ival-add: 7.0ms (13% of total)
ival-sub: 6.0ms (11.1% of total)
const: 2.0ms (3.7% of total)

eval3.0ms (0.1%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
34.1%
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64)))))
Compiler

Compiled 24 to 16 computations (33.3% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
neg-mul-1
unsub-neg
+-commutative
sub-neg
*-rgt-identity
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01339
12139
22939
33539
44239
55439
67039
Stop Event
saturated
Calls
Call 1
Inputs
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64)))))
Outputs
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 x #s(literal 1 binary64)))))
(-.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal 1 binary64) (sqrt.f64 (+.f64 #s(literal 1 binary64) x))))
(+.f64 (/.f64 #s(literal 1 binary64) (sqrt.f64 x)) (/.f64 #s(literal -1 binary64) (sqrt.f64 (+.f64 #s(literal 1 binary64) x))))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 12 to 9 computations (25% saved)

preprocess30.0ms (1.2%)

Compiler

Compiled 80 to 52 computations (35% saved)

end0.0ms (0%)

Profiling

Loading profile data...