Quadratic roots, narrow range

Time bar (total: 6.2s)

analyze165.0ms (2.7%)

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
7.1%0%0%100%0%0%0%5
20.8%0%0%100%0%0%0%6
29.5%0%0%100%0%0%0%7
37.5%0%0%100%0%0%0%8
50.6%0%0%100%0%0%0%9
58.2%0%0%100%0%0%0%10
63.3%0%0%100%0%0%0%11
72.3%0%0%100%0%0%0%12
Compiler

Compiled 43 to 31 computations (27.9% saved)

Precisions
Click to see histograms. Total time spent on operations: 103.0ms
Operation ival-mult, time spent: 28.0ms, 27.0% of total-time
Operation ival-<, time spent: 24.0ms, 23.0% of total-time
Operation ival-sqrt, time spent: 13.0ms, 13.0% of total-time
Operation ival-div, time spent: 9.0ms, 9.0% of total-time
Operation ival-add, time spent: 8.0ms, 8.0% of total-time
Operation ival-neg, time spent: 6.0ms, 6.0% of total-time
Operation ival-and, time spent: 6.0ms, 6.0% of total-time
Operation ival-sub, time spent: 5.0ms, 5.0% of total-time
Operation const, time spent: 4.0ms, 4.0% of total-time

sample3.0s (48.2%)

Results
1.9s7274×0valid
281.0ms1434×0invalid
391.0ms981×1valid
0.0ms0valid
Precisions
Click to see histograms. Total time spent on operations: 1.7s
Operation ival-sub, time spent: 491.0ms, 30.0% of total-time
Operation ival-mult, time spent: 307.0ms, 18.0% of total-time
Operation ival-<, time spent: 241.0ms, 15.0% of total-time
Operation ival-add, time spent: 182.0ms, 11.0% of total-time
Operation ival-sqrt, time spent: 141.0ms, 8.0% of total-time
Operation ival-div, time spent: 92.0ms, 6.0% of total-time
Operation const, time spent: 71.0ms, 4.0% of total-time
Operation ival-and, time spent: 71.0ms, 4.0% of total-time
Operation ival-neg, time spent: 65.0ms, 4.0% of total-time
Bogosity

preprocess1.3s (20.3%)

Algorithm
egg-herbie
Rules
1648×div-sub
1546×fma-def
1212×sub-neg
596×associate-*r/
576×cancel-sign-sub-inv
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
00-0-(-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))
00-0-b
00-0-(neg.f64 b)
00-0-(*.f64 4 a)
00-0-(+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c))))
00-0-c
00-0-(*.f64 b b)
00-0-4
00-0-(*.f64 (*.f64 4 a) c)
00-0-a
00-0-(*.f64 2 a)
00-0-2
00-0-(sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
065779
1182675
2490671
31246671
43197671
57858671
Stop Event
node limit
Calls
Call 1
Inputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 (neg.f64 a)) c)))) (*.f64 2 (neg.f64 a)))
(/.f64 (+.f64 (neg.f64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) (neg.f64 c))))) (*.f64 2 a))
(neg.f64 (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 (neg.f64 a)) c)))) (*.f64 2 (neg.f64 a))))
(neg.f64 (/.f64 (+.f64 (neg.f64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)))
(neg.f64 (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) (neg.f64 c))))) (*.f64 2 a)))
(/.f64 (+.f64 (neg.f64 a) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 (*.f64 4 b) c)))) (*.f64 2 b))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 c) a)))) (*.f64 2 c))
(/.f64 (+.f64 (neg.f64 c) (sqrt.f64 (-.f64 (*.f64 c c) (*.f64 (*.f64 4 a) b)))) (*.f64 2 a))
Outputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c -4)))) b) (*.f64 a 2))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c -4)))) b) (*.f64 a 2))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 (neg.f64 a)) c)))) (*.f64 2 (neg.f64 a)))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 c (neg.f64 (*.f64 4 a)))))) (neg.f64 (*.f64 a 2)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 4 (*.f64 a c)))) b) (*.f64 a -2))
(*.f64 (/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 4 c) (*.f64 b b))) b) a) -1/2)
(*.f64 (/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 4 (*.f64 a c)))) b) a) -1/2)
(/.f64 (+.f64 (neg.f64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 a 2))
(/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4))))) (*.f64 a 2))
(/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) (*.f64 a 2))
(*.f64 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c -4))))) a) 1/2)
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) (neg.f64 c))))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) (neg.f64 c))))) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 4 (*.f64 a c)))) b) (*.f64 a 2))
(*.f64 (/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 4 c) (*.f64 b b))) b) a) 1/2)
(*.f64 (/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 4 (*.f64 a c)))) b) a) 1/2)
(neg.f64 (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 (neg.f64 a)) c)))) (*.f64 2 (neg.f64 a))))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) (neg.f64 c))))) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 4 (*.f64 a c)))) b) (*.f64 a 2))
(*.f64 (/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 4 c) (*.f64 b b))) b) a) 1/2)
(*.f64 (/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 4 (*.f64 a c)))) b) a) 1/2)
(neg.f64 (/.f64 (+.f64 (neg.f64 (neg.f64 b)) (sqrt.f64 (-.f64 (*.f64 (neg.f64 b) (neg.f64 b)) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a)))
(neg.f64 (/.f64 (+.f64 b (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 a 2)))
(/.f64 (neg.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))))) (*.f64 a 2))
(*.f64 -1/2 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4))))) a))
(*.f64 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b)))) a) -1/2)
(*.f64 (/.f64 (+.f64 b (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c -4))))) a) -1/2)
(neg.f64 (/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) (neg.f64 c))))) (*.f64 2 a)))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 c (neg.f64 (*.f64 4 a)))))) (neg.f64 (*.f64 a 2)))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 4 (*.f64 a c)))) b) (*.f64 a -2))
(*.f64 (/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 4 c) (*.f64 b b))) b) a) -1/2)
(*.f64 (/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 4 (*.f64 a c)))) b) a) -1/2)
(/.f64 (+.f64 (neg.f64 a) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 (*.f64 4 b) c)))) (*.f64 2 b))
(/.f64 (+.f64 (neg.f64 a) (sqrt.f64 (-.f64 (*.f64 a a) (*.f64 c (*.f64 b 4))))) (*.f64 b 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a a (*.f64 c (*.f64 b -4)))) a) (*.f64 b 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 c (*.f64 b -4) (*.f64 a a))) a) (*.f64 b 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b (*.f64 c -4) (*.f64 a a))) a) (*.f64 b 2))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 c) a)))) (*.f64 2 c))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 4 (*.f64 c a))))) (*.f64 c 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 c 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 c 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 a (*.f64 c -4)))) b) (*.f64 c 2))
(/.f64 (+.f64 (neg.f64 c) (sqrt.f64 (-.f64 (*.f64 c c) (*.f64 (*.f64 4 a) b)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 c) (sqrt.f64 (-.f64 (*.f64 c c) (*.f64 b (*.f64 4 a))))) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 c c (*.f64 b (*.f64 a -4)))) c) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b (*.f64 a -4) (*.f64 c c))) c) (*.f64 a 2))
Compiler

Compiled 168 to 92 computations (45.2% saved)

Precisions
Click to see histograms. Total time spent on operations: 836.0ms
Operation ival-mult, time spent: 326.0ms, 39.0% of total-time
Operation ival-sub, time spent: 203.0ms, 24.0% of total-time
Operation ival-sqrt, time spent: 126.0ms, 15.0% of total-time
Operation ival-add, time spent: 115.0ms, 14.0% of total-time
Operation const, time spent: 28.0ms, 3.0% of total-time
Operation ival-div, time spent: 24.0ms, 3.0% of total-time
Operation ival-neg, time spent: 16.0ms, 2.0% of total-time

eval1.0ms (0%)

Compiler

Compiled 65 to 40 computations (38.5% saved)

prune2.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
55.5%
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 a 2))
55.4%
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 a 2))
55.4%
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 a 2))
Compiler

Compiled 56 to 38 computations (32.1% saved)

localize1.5s (24.7%)

Compiler

Compiled 190 to 98 computations (48.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.2s
Operation ival-mult, time spent: 413.0ms, 35.0% of total-time
Operation ival-sub, time spent: 298.0ms, 25.0% of total-time
Operation ival-sqrt, time spent: 192.0ms, 16.0% of total-time
Operation ival-fma, time spent: 141.0ms, 12.0% of total-time
Operation ival-add, time spent: 57.0ms, 5.0% of total-time
Operation ival-div, time spent: 40.0ms, 3.0% of total-time
Operation const, time spent: 37.0ms, 3.0% of total-time
Operation ival-neg, time spent: 10.0ms, 1.0% of total-time

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune3.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked033
Done000
Total033
Accuracy
55.6%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.5%
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 a 2))
55.4%
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 a 2))
55.4%
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 a 2))
Compiler

Compiled 123 to 78 computations (36.6% saved)

regimes18.0ms (0.3%)

Counts
4 → 1
Calls
Call 1
Inputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 a 2))
Outputs
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 a 2))
Calls

4 calls:

6.0ms
a
4.0ms
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
4.0ms
c
4.0ms
b
Results
AccuracySegmentsBranch
55.5%1a
55.5%1b
55.5%1c
55.5%1(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
Compiler

Compiled 32 to 23 computations (28.1% saved)

regimes18.0ms (0.3%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
3 → 1
Calls
Call 1
Inputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (fma.f64 a (*.f64 c -4) (*.f64 b b))) b) (*.f64 a 2))
Outputs
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
Calls

4 calls:

7.0ms
c
4.0ms
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
3.0ms
a
3.0ms
b
Results
AccuracySegmentsBranch
55.4%1c
55.4%1b
55.4%1(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
55.4%1a
Compiler

Compiled 32 to 23 computations (28.1% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Rules
22×*-commutative
18×+-commutative
16×sub-neg
12×neg-mul-1
12×neg-sub0
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
030130
146126
266126
377126
485126
588126
Stop Event
done
saturated
Calls
Call 1
Inputs
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 a 2))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
Outputs
(/.f64 (-.f64 (sqrt.f64 (fma.f64 b b (*.f64 c (*.f64 a -4)))) b) (*.f64 a 2))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 (*.f64 4 a) c)))) (*.f64 2 a))
(/.f64 (+.f64 (neg.f64 b) (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 c (*.f64 a 4))))) (*.f64 a 2))
(/.f64 (-.f64 (sqrt.f64 (-.f64 (*.f64 b b) (*.f64 c (*.f64 a 4)))) b) (*.f64 a 2))
Compiler

Compiled 37 to 25 computations (32.4% saved)

soundness166.0ms (2.7%)

Rules
1648×div-sub
1546×fma-def
1212×sub-neg
596×associate-*r/
576×cancel-sign-sub-inv
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
065779
1182675
2490671
31246671
43197671
57858671
Stop Event
node limit
Compiler

Compiled 202 to 119 computations (41.1% saved)

end0.0ms (0%)

preprocess39.0ms (0.6%)

Compiler

Compiled 108 to 72 computations (33.3% saved)

Profiling

Loading profile data...