Quadratic roots, narrow range

Time bar (total: 3.6s)

analyze636.0ms (17.5%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%0%100%0%0%0%0
0%0%0%100%0%0%0%1
0%0%0%100%0%0%0%2
0%0%0%100%0%0%0%3
0%0%0%100%0%0%0%4
0%0%0%100%0%0%0%5
0%0%0%100%0%0%0%6
0%0%0%100%0%0%0%7
2.3%0%0%100%0%0%0%8
11.3%0%0%100%0%0%0%9
21.1%0%0%100%0%0%0%10
28%0%0%100%0%0%0%11
40.1%0%0%100%0%0%0%12
Compiler

Compiled 43 to 27 computations (37.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 248.0ms
...c/correct-round.rkt:104:19: 74.0ms (29.9% of total)
ival-mult: 57.0ms (23% of total)
ival-<: 43.0ms (17.4% of total)
ival-sqrt: 15.0ms (6.1% of total)
ival-div: 13.0ms (5.2% of total)
ival-add: 11.0ms (4.4% of total)
ival-sub: 11.0ms (4.4% of total)
ival-neg: 11.0ms (4.4% of total)
ival-and: 9.0ms (3.6% of total)
const: 2.0ms (0.8% of total)

sample2.7s (74%)

Results
1.7s8256×256valid
369.0ms1396×256invalid
Precisions
Click to see histograms. Total time spent on operations: 1.6s
...c/correct-round.rkt:104:19: 424.0ms (25.9% of total)
ival-mult: 417.0ms (25.4% of total)
ival-<: 282.0ms (17.2% of total)
ival-sqrt: 154.0ms (9.4% of total)
ival-div: 91.0ms (5.5% of total)
ival-sub: 82.0ms (5% of total)
ival-neg: 68.0ms (4.1% of total)
ival-add: 67.0ms (4.1% of total)
ival-and: 44.0ms (2.7% of total)
const: 10.0ms (0.6% of total)
Bogosity

preprocess130.0ms (3.6%)

Algorithm
egg-herbie
Rules
837×div-sub
698×fma-neg
688×fma-define
507×sub-neg
395×associate-/r*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
065779
1186671
2513671
31362671
43699671
57725671
Stop Event
node limit
Calls
Call 1
Inputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) (neg.f64 a)) c)))) (*.f64 #s(literal 2 binary64) (neg.f64 a)))
(/.f64 (+.f64 (neg.f64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) (neg.f64 c))))) (*.f64 #s(literal 2 binary64) a))
(neg.f64 (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) (neg.f64 a)) c)))) (*.f64 #s(literal 2 binary64) (neg.f64 a))))
(neg.f64 (/.f64 (+.f64 (neg.f64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a)))
(neg.f64 (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) (neg.f64 c))))) (*.f64 #s(literal 2 binary64) a)))
(/.f64 (+.f64 (neg.f64 a) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 (*.f64 #s(literal 4 binary64) b) c)))) (*.f64 #s(literal 2 binary64) b))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) c) a)))) (*.f64 #s(literal 2 binary64) c))
(/.f64 (+.f64 (neg.f64 c) (sqrt.f64 (-.f64 (*.f64 c c) (*.f64 (*.f64 #s(literal 4 binary64) a) b)))) (*.f64 #s(literal 2 binary64) a))
Outputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a #s(literal -4 binary64))))) b) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c #s(literal -4 binary64)) (*.f64 b b))) b) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c #s(literal -4 binary64))))) b) (*.f64 a #s(literal 2 binary64)))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a #s(literal -4 binary64))))) b) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c #s(literal -4 binary64)) (*.f64 b b))) b) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c #s(literal -4 binary64))))) b) (*.f64 a #s(literal 2 binary64)))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) (neg.f64 a)) c)))) (*.f64 #s(literal 2 binary64) (neg.f64 a)))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 #s(literal 4 binary64) (*.f64 (neg.f64 a) c))))) (neg.f64 (*.f64 a #s(literal 2 binary64))))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 #s(literal 4 binary64) (*.f64 a c)))) b) (*.f64 a #s(literal -2 binary64)))
(/.f64 (-.f64 b (sqrt.f64 (fma.f64 b b (*.f64 #s(literal 4 binary64) (*.f64 a c))))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 b (sqrt.f64 (fma.f64 #s(literal 4 binary64) (*.f64 a c) (*.f64 b b)))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (+.f64 (neg.f64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a #s(literal -4 binary64)))))) (*.f64 a #s(literal 2 binary64)))
(*.f64 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c #s(literal -4 binary64)) (*.f64 b b)))) a) #s(literal 1/2 binary64))
(/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c #s(literal -4 binary64)))))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) (neg.f64 c))))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) (neg.f64 c))))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 #s(literal 4 binary64) (*.f64 a c)))) b) (*.f64 a #s(literal 2 binary64)))
(*.f64 #s(literal -1/2 binary64) (/.f64 (-.f64 b (sqrt.f64 (fma.f64 b b (*.f64 #s(literal 4 binary64) (*.f64 a c))))) a))
(*.f64 (/.f64 (-.f64 b (sqrt.f64 (fma.f64 #s(literal 4 binary64) (*.f64 a c) (*.f64 b b)))) a) #s(literal -1/2 binary64))
(neg.f64 (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) (neg.f64 a)) c)))) (*.f64 #s(literal 2 binary64) (neg.f64 a))))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) (neg.f64 c))))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 #s(literal 4 binary64) (*.f64 a c)))) b) (*.f64 a #s(literal 2 binary64)))
(*.f64 #s(literal -1/2 binary64) (/.f64 (-.f64 b (sqrt.f64 (fma.f64 b b (*.f64 #s(literal 4 binary64) (*.f64 a c))))) a))
(*.f64 (/.f64 (-.f64 b (sqrt.f64 (fma.f64 #s(literal 4 binary64) (*.f64 a c) (*.f64 b b)))) a) #s(literal -1/2 binary64))
(neg.f64 (/.f64 (+.f64 (neg.f64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a)))
(/.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (neg.f64 (*.f64 a #s(literal 2 binary64))))
(/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a #s(literal -4 binary64)))))) (*.f64 a #s(literal -2 binary64)))
(*.f64 #s(literal -1/2 binary64) (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a #s(literal -4 binary64)))))) a))
(*.f64 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c #s(literal -4 binary64)) (*.f64 b b)))) a) #s(literal -1/2 binary64))
(*.f64 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c #s(literal -4 binary64)))))) a) #s(literal -1/2 binary64))
(neg.f64 (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) (neg.f64 c))))) (*.f64 #s(literal 2 binary64) a)))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 #s(literal 4 binary64) (*.f64 (neg.f64 a) c))))) (neg.f64 (*.f64 a #s(literal 2 binary64))))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 #s(literal 4 binary64) (*.f64 a c)))) b) (*.f64 a #s(literal -2 binary64)))
(/.f64 (-.f64 b (sqrt.f64 (fma.f64 b b (*.f64 #s(literal 4 binary64) (*.f64 a c))))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 b (sqrt.f64 (fma.f64 #s(literal 4 binary64) (*.f64 a c) (*.f64 b b)))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (+.f64 (neg.f64 a) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 (*.f64 #s(literal 4 binary64) b) c)))) (*.f64 #s(literal 2 binary64) b))
(/.f64 (+.f64 (neg.f64 a) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 #s(literal 4 binary64) (*.f64 b c))))) (*.f64 b #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a a (*.f64 c (*.f64 b #s(literal -4 binary64))))) a) (*.f64 b #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 c (*.f64 b #s(literal -4 binary64)) (*.f64 a a))) a) (*.f64 b #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b (*.f64 c #s(literal -4 binary64)) (*.f64 a a))) a) (*.f64 b #s(literal 2 binary64)))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) c) a)))) (*.f64 #s(literal 2 binary64) c))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 #s(literal 4 binary64) (*.f64 c a))))) (*.f64 c #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a #s(literal -4 binary64))))) b) (*.f64 c #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c #s(literal -4 binary64)) (*.f64 b b))) b) (*.f64 c #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c #s(literal -4 binary64))))) b) (*.f64 c #s(literal 2 binary64)))
(/.f64 (+.f64 (neg.f64 c) (sqrt.f64 (-.f64 (*.f64 c c) (*.f64 (*.f64 #s(literal 4 binary64) a) b)))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 (neg.f64 c) (sqrt.f64 (-.f64 (*.f64 c c) (*.f64 b (*.f64 #s(literal 4 binary64) a))))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 c c (*.f64 b (*.f64 a #s(literal -4 binary64))))) c) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b (*.f64 a #s(literal -4 binary64)) (*.f64 c c))) c) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 c (sqrt.f64 (fma.f64 b (*.f64 a #s(literal -4 binary64)) (*.f64 c c)))) (*.f64 a #s(literal -2 binary64)))

explain144.0ms (4%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
2234(16740773.576390978 7595.601283544391 0.0006205880034133266)3(1.6576281939498065e-7 0.8563656514511748 31920.749127495073)(+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c))))
10-1(6662.262543621674 26.823962113065534 0.02670270144843464)(-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c))
00-0-(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
00-0-b
00-0-(*.f64 #s(literal 4 binary64) a)
00-0-(neg.f64 b)
00-0-#s(literal 2 binary64)
00-0-c
00-0-(*.f64 #s(literal 2 binary64) a)
00-0-(*.f64 (*.f64 #s(literal 4 binary64) a) c)
00-0-(*.f64 b b)
00-0-(sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))
00-0-#s(literal 4 binary64)
00-0-a
Results
80.0ms512×256valid
Compiler

Compiled 168 to 44 computations (73.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 34.0ms
ival-mult: 13.0ms (38.3% of total)
ival-neg: 6.0ms (17.7% of total)
ival-div: 4.0ms (11.8% of total)
ival-sqrt: 4.0ms (11.8% of total)
ival-sub: 3.0ms (8.8% of total)
ival-add: 3.0ms (8.8% of total)
const: 1.0ms (2.9% of total)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune6.0ms (0.2%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
54.6%
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
Compiler

Compiled 40 to 28 computations (30% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative
+-commutative
sub-neg
neg-sub0
neg-mul-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02169
13465
25365
36465
47265
57565
Stop Event
saturated
Calls
Call 1
Inputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
Outputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 #s(literal 2 binary64) a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c)))) (*.f64 a #s(literal 2 binary64)))
(/.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 #s(literal 4 binary64) a) c))) b) (*.f64 a #s(literal 2 binary64)))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 19 to 13 computations (31.6% saved)

preprocess22.0ms (0.6%)

Compiler

Compiled 78 to 54 computations (30.8% saved)

end0.0ms (0%)

Profiling

Loading profile data...