Average Error: 34.2 → 10.3
Time: 30.2s
Precision: 64
Internal Precision: 128
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -4.21731702933355 \cdot 10^{+148}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.2612246360442721 \cdot 10^{-22}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if b < -4.21731702933355e+148

    1. Initial program 58.9

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified58.9

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2 \cdot a}}\]
    3. Taylor expanded around -inf 2.3

      \[\leadsto \color{blue}{\frac{c}{b} - \frac{b}{a}}\]

    if -4.21731702933355e+148 < b < 1.2612246360442721e-22

    1. Initial program 14.8

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified14.8

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2 \cdot a}}\]

    if 1.2612246360442721e-22 < b

    1. Initial program 54.5

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified54.5

      \[\leadsto \color{blue}{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2 \cdot a}}\]
    3. Taylor expanded around inf 6.4

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
    4. Simplified6.4

      \[\leadsto \color{blue}{\frac{-c}{b}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification10.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -4.21731702933355 \cdot 10^{+148}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.2612246360442721 \cdot 10^{-22}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019007 
(FPCore (a b c)
  :name "Quadratic roots, full range"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))

Details

Time bar (total: 29.2s)Debug log

sample145.0ms

Algorithm
intervals

simplify64.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

64.0ms
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))

prune14.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 34.1b

localize47.0ms

Local error

Found 4 expressions with local error:

24.1b
(sqrt (- (* b b) (* (* c a) 4)))
1.5b
(- (sqrt (- (* b b) (* (* c a) 4))) b)
1.2b
(- (* b b) (* (* c a) 4))
0.1b
(/ (- (sqrt (- (* b b) (* (* c a) 4))) b) (* 2 a))

rewrite35.0ms

Algorithm
rewrite-expression-head
Counts
4 → 59
Calls

4 calls. Slowest were:

20.0ms
(/ (- (sqrt (- (* b b) (* (* c a) 4))) b) (* 2 a))
10.0ms
(- (sqrt (- (* b b) (* (* c a) 4))) b)
2.0ms
(- (* b b) (* (* c a) 4))

series186.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

61.0ms
(/ (- (sqrt (- (* b b) (* (* c a) 4))) b) (* 2 a))
47.0ms
(- (sqrt (- (* b b) (* (* c a) 4))) b)
44.0ms
(sqrt (- (* b b) (* (* c a) 4)))
34.0ms
(- (* b b) (* (* c a) 4))

simplify2.0s

Counts
32 → 71
Calls

32 calls. Slowest were:

346.0ms
(- (* (sqrt (- (* b b) (* (* c a) 4))) (sqrt (- (* b b) (* (* c a) 4)))) (* b b))
319.0ms
(sqrt (- (pow (* b b) 3) (pow (* (* c a) 4) 3)))
238.0ms
(- (pow (sqrt (- (* b b) (* (* c a) 4))) 3) (pow b 3))

prune724.0ms

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 6.1b

localize6.0ms

Local error

Found 4 expressions with local error:

24.1b
(sqrt (- (* b b) (* (* c a) 4)))
1.5b
(- (sqrt (- (* b b) (* (* c a) 4))) b)
1.2b
(- (* b b) (* (* c a) 4))
0.1b
(/ 1 (/ (* 2 a) (- (sqrt (- (* b b) (* (* c a) 4))) b)))

rewrite30.0ms

Algorithm
rewrite-expression-head
Counts
4 → 61
Calls

4 calls. Slowest were:

12.0ms
(- (sqrt (- (* b b) (* (* c a) 4))) b)
12.0ms
(/ 1 (/ (* 2 a) (- (sqrt (- (* b b) (* (* c a) 4))) b)))
3.0ms
(- (* b b) (* (* c a) 4))

series251.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

124.0ms
(/ 1 (/ (* 2 a) (- (sqrt (- (* b b) (* (* c a) 4))) b)))
55.0ms
(sqrt (- (* b b) (* (* c a) 4)))
47.0ms
(- (sqrt (- (* b b) (* (* c a) 4))) b)
26.0ms
(- (* b b) (* (* c a) 4))

simplify1.8s

Counts
30 → 73
Calls

30 calls. Slowest were:

362.0ms
(sqrt (- (pow (* b b) 3) (pow (* (* c a) 4) 3)))
198.0ms
(+ (* (sqrt (- (* b b) (* (* c a) 4))) (sqrt (- (* b b) (* (* c a) 4)))) (+ (* b b) (* (sqrt (- (* b b) (* (* c a) 4))) b)))
165.0ms
(sqrt (- (* (* b b) (* b b)) (* (* (* c a) 4) (* (* c a) 4))))

prune813.0ms

Pruning

10 alts after pruning (8 fresh and 2 done)

Merged error: 6.1b

localize13.0ms

Local error

Found 4 expressions with local error:

24.1b
(sqrt (- (* b b) (* (* c a) 4)))
24.1b
(sqrt (- (* b b) (* (* c a) 4)))
1.5b
(- (sqrt (- (* b b) (* (* c a) 4))) b)
1.5b
(- (sqrt (- (* b b) (* (* c a) 4))) b)

rewrite26.0ms

Algorithm
rewrite-expression-head
Counts
4 → 50
Calls

4 calls. Slowest were:

11.0ms
(- (sqrt (- (* b b) (* (* c a) 4))) b)
10.0ms
(- (sqrt (- (* b b) (* (* c a) 4))) b)
2.0ms
(sqrt (- (* b b) (* (* c a) 4)))

series216.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

66.0ms
(sqrt (- (* b b) (* (* c a) 4)))
62.0ms
(- (sqrt (- (* b b) (* (* c a) 4))) b)
45.0ms
(sqrt (- (* b b) (* (* c a) 4)))
43.0ms
(- (sqrt (- (* b b) (* (* c a) 4))) b)

simplify1.9s

Counts
24 → 62
Calls

24 calls. Slowest were:

386.0ms
(sqrt (- (pow (* b b) 3) (pow (* (* c a) 4) 3)))
375.0ms
(sqrt (- (pow (* b b) 3) (pow (* (* c a) 4) 3)))
162.0ms
(- b (* 2 (/ (* a c) b)))

prune848.0ms

Pruning

10 alts after pruning (7 fresh and 3 done)

Merged error: 6.1b

localize41.0ms

Local error

Found 4 expressions with local error:

24.9b
(cbrt (- (* b b) (* (* c a) 4)))
24.9b
(cbrt (- (* b b) (* (* c a) 4)))
24.9b
(cbrt (- (* b b) (* (* c a) 4)))
24.1b
(sqrt (* (* (cbrt (- (* b b) (* (* c a) 4))) (cbrt (- (* b b) (* (* c a) 4)))) (cbrt (- (* b b) (* (* c a) 4)))))

rewrite28.0ms

Algorithm
rewrite-expression-head
Counts
4 → 74
Calls

4 calls. Slowest were:

18.0ms
(sqrt (* (* (cbrt (- (* b b) (* (* c a) 4))) (cbrt (- (* b b) (* (* c a) 4)))) (cbrt (- (* b b) (* (* c a) 4)))))
3.0ms
(cbrt (- (* b b) (* (* c a) 4)))
3.0ms
(cbrt (- (* b b) (* (* c a) 4)))

series355.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

110.0ms
(cbrt (- (* b b) (* (* c a) 4)))
101.0ms
(cbrt (- (* b b) (* (* c a) 4)))
93.0ms
(cbrt (- (* b b) (* (* c a) 4)))
52.0ms
(sqrt (* (* (cbrt (- (* b b) (* (* c a) 4))) (cbrt (- (* b b) (* (* c a) 4)))) (cbrt (- (* b b) (* (* c a) 4)))))

simplify12.6s

Counts
54 → 86
Calls

54 calls. Slowest were:

795.0ms
(sqrt (* (* (cbrt (- (pow (* b b) 3) (pow (* (* c a) 4) 3))) (cbrt (- (pow (* b b) 3) (pow (* (* c a) 4) 3)))) (cbrt (- (* (* b b) (* b b)) (* (* (* c a) 4) (* (* c a) 4))))))
593.0ms
(sqrt (* (* (cbrt (- (* b b) (* (* c a) 4))) (cbrt (- (pow (* b b) 3) (pow (* (* c a) 4) 3)))) (cbrt (- (* (* b b) (* b b)) (* (* (* c a) 4) (* (* c a) 4))))))
577.0ms
(sqrt (* (* (cbrt (- (pow (* b b) 3) (pow (* (* c a) 4) 3))) (cbrt (- (* b b) (* (* c a) 4)))) (cbrt (- (* (* b b) (* b b)) (* (* (* c a) 4) (* (* c a) 4))))))

prune1.4s

Pruning

10 alts after pruning (6 fresh and 4 done)

Merged error: 6.1b

regimes344.0ms

Accuracy

83.3% (4.8b remaining)

Error of 10.3b against oracle of 5.5b and baseline of 34.1b

bsearch242.0ms

end0.0ms

sample5.1s

Algorithm
intervals