Average Error: 33.3 → 11.0
Time: 17.2s
Precision: 64
Internal Precision: 128
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -7.364239210427101 \cdot 10^{+148}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\ \mathbf{elif}\;b \le 1.695108865697676 \cdot 10^{-145}:\\ \;\;\;\;\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)}}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\ \end{array}\]

Error

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus d

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

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

    1. Initial program 58.7

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Taylor expanded around -inf 2.8

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{c}{b} - \frac{2}{3} \cdot \frac{b}{a}}\]

    if -7.364239210427101e+148 < b < 1.695108865697676e-145

    1. Initial program 11.2

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Using strategy rm
    3. Applied associate-/r*11.3

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

    if 1.695108865697676e-145 < b

    1. Initial program 49.2

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\]
    2. Taylor expanded around inf 12.9

      \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{c}{b}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification11.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -7.364239210427101 \cdot 10^{+148}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\ \mathbf{elif}\;b \le 1.695108865697676 \cdot 10^{-145}:\\ \;\;\;\;\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)}}{3}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019004 
(FPCore (a b c d)
  :name "Cubic critical"
  (/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))

Details

Time bar (total: 15.5s)Debug log

sample124.0ms

Algorithm
intervals

simplify83.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

83.0ms
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a))

prune22.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 34.2b

localize21.0ms

Local error

Found 4 expressions with local error:

23.9b
(sqrt (- (* b b) (* (* 3 a) c)))
0.8b
(- (* b b) (* (* 3 a) c))
0.7b
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a))
0.4b
(+ (- b) (sqrt (- (* b b) (* (* 3 a) c))))

rewrite51.0ms

Algorithm
rewrite-expression-head
Counts
4 → 63
Calls

4 calls. Slowest were:

33.0ms
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a))
11.0ms
(+ (- b) (sqrt (- (* b b) (* (* 3 a) c))))
4.0ms
(- (* b b) (* (* 3 a) c))

series196.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

74.0ms
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a))
52.0ms
(sqrt (- (* b b) (* (* 3 a) c)))
43.0ms
(+ (- b) (sqrt (- (* b b) (* (* 3 a) c))))
26.0ms
(- (* b b) (* (* 3 a) c))

simplify2.5s

Counts
36 → 75
Calls

36 calls. Slowest were:

394.0ms
(sqrt (- (pow (* b b) 3) (pow (* (* 3 a) c) 3)))
317.0ms
(- (* (- b) (- b)) (* (sqrt (- (* b b) (* (* 3 a) c))) (sqrt (- (* b b) (* (* 3 a) c)))))
316.0ms
(+ (pow (- b) 3) (pow (sqrt (- (* b b) (* (* 3 a) c))) 3))

prune914.0ms

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 6.4b

localize12.0ms

Local error

Found 4 expressions with local error:

23.9b
(sqrt (- (* b b) (* (* 3 a) c)))
0.8b
(- (* b b) (* (* 3 a) c))
0.4b
(+ (- b) (sqrt (- (* b b) (* (* 3 a) c))))
0.2b
(* (* 3 a) c)

rewrite23.0ms

Algorithm
rewrite-expression-head
Counts
4 → 48
Calls

4 calls. Slowest were:

11.0ms
(+ (- b) (sqrt (- (* b b) (* (* 3 a) c))))
4.0ms
(- (* b b) (* (* 3 a) c))
4.0ms
(* (* 3 a) c)

series176.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

66.0ms
(sqrt (- (* b b) (* (* 3 a) c)))
53.0ms
(+ (- b) (sqrt (- (* b b) (* (* 3 a) c))))
40.0ms
(- (* b b) (* (* 3 a) c))
16.0ms
(* (* 3 a) c)

simplify1.2s

Counts
21 → 60
Calls

21 calls. Slowest were:

384.0ms
(sqrt (- (pow (* b b) 3) (pow (* (* 3 a) c) 3)))
105.0ms
(sqrt (- (* (* b b) (* b b)) (* (* (* 3 a) c) (* (* 3 a) c))))
97.0ms
(- b (* 3/2 (/ (* a c) b)))

prune743.0ms

Pruning

13 alts after pruning (12 fresh and 1 done)

Merged error: 6.4b

localize35.0ms

Local error

Found 4 expressions with local error:

23.9b
(sqrt (+ (* c (* a -3)) (* b b)))
0.8b
(+ (* c (* a -3)) (* b b))
0.4b
(- (sqrt (+ (* c (* a -3)) (* b b))) b)
0.2b
(* 1/3 (/ (- (sqrt (+ (* c (* a -3)) (* b b))) b) a))

rewrite29.0ms

Algorithm
rewrite-expression-head
Counts
4 → 49
Calls

4 calls. Slowest were:

13.0ms
(* 1/3 (/ (- (sqrt (+ (* c (* a -3)) (* b b))) b) a))
10.0ms
(- (sqrt (+ (* c (* a -3)) (* b b))) b)
3.0ms
(+ (* c (* a -3)) (* b b))

series237.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

74.0ms
(* 1/3 (/ (- (sqrt (+ (* c (* a -3)) (* b b))) b) a))
67.0ms
(sqrt (+ (* c (* a -3)) (* b b)))
51.0ms
(+ (* c (* a -3)) (* b b))
45.0ms
(- (sqrt (+ (* c (* a -3)) (* b b))) b)

simplify554.0ms

Counts
23 → 61
Calls

23 calls. Slowest were:

212.0ms
(sqrt (- (* (* c (* a -3)) (* c (* a -3))) (* (* b b) (* b b))))
142.0ms
(sqrt (+ (pow (* c (* a -3)) 3) (pow (* b b) 3)))
35.0ms
(- (pow b 2) (* 3 (* a c)))

prune653.0ms

Pruning

14 alts after pruning (12 fresh and 2 done)

Merged error: 6.4b

localize55.0ms

Local error

Found 4 expressions with local error:

23.9b
(sqrt (+ (* b b) (* -3 (* c a))))
23.9b
(sqrt (+ (* b b) (* -3 (* c a))))
0.8b
(+ (* b b) (* -3 (* c a)))
0.8b
(+ (* b b) (* -3 (* c a)))

rewrite20.0ms

Algorithm
rewrite-expression-head
Counts
4 → 50
Calls

4 calls. Slowest were:

5.0ms
(+ (* b b) (* -3 (* c a)))
5.0ms
(+ (* b b) (* -3 (* c a)))
4.0ms
(sqrt (+ (* b b) (* -3 (* c a))))

series206.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

64.0ms
(sqrt (+ (* b b) (* -3 (* c a))))
62.0ms
(sqrt (+ (* b b) (* -3 (* c a))))
41.0ms
(+ (* b b) (* -3 (* c a)))
39.0ms
(+ (* b b) (* -3 (* c a)))

simplify1.3s

Counts
26 → 62
Calls

26 calls. Slowest were:

193.0ms
(sqrt (+ (pow (* b b) 3) (pow (* -3 (* c a)) 3)))
162.0ms
(sqrt (+ (pow (* b b) 3) (pow (* -3 (* c a)) 3)))
137.0ms
(sqrt (- (* (* b b) (* b b)) (* (* -3 (* c a)) (* -3 (* c a)))))

prune934.0ms

Pruning

14 alts after pruning (11 fresh and 3 done)

Merged error: 6.4b

regimes489.0ms

Accuracy

81.5% (5.1b remaining)

Error of 11.0b against oracle of 5.9b and baseline of 33.4b

bsearch415.0ms

end0.0ms

sample4.6s

Algorithm
intervals