Average Error: 19.5 → 13.3
Time: 20.9s
Precision: 64
Internal Precision: 128
\[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \end{array}\]
\[\begin{array}{l} \mathbf{if}\;b \le 5.249016491775119 \cdot 10^{+108}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;-\frac{(\left(\sqrt{\sqrt[3]{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}}\right) \cdot \left(\left|\sqrt[3]{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}\right|\right) + b)_*}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot 2}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\\ \mathbf{elif}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - b}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot 2}{\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}}\\ \end{array}\]

Error

Bits error versus a

Bits error versus b

Bits error versus c

Derivation

  1. Split input into 2 regimes
  2. if b < 5.249016491775119e+108

    1. Initial program 14.8

      \[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \end{array}\]
    2. Initial simplification14.8

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt15.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{\color{blue}{\left(\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}\right) \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]
    5. Applied sqrt-prod15.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \color{blue}{\sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]
    6. Applied add-sqr-sqrt34.2

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\color{blue}{\sqrt{-b} \cdot \sqrt{-b}} - \sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]
    7. Applied prod-diff34.2

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\color{blue}{(\left(\sqrt{-b}\right) \cdot \left(\sqrt{-b}\right) + \left(-\sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right))_* + (\left(-\sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) + \left(\sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right))_*}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]
    8. Simplified15.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\color{blue}{\left(-(\left(\sqrt{\sqrt[3]{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}}\right) \cdot \left(\left|\sqrt[3]{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}\right|\right) + b)_*\right)} + (\left(-\sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) \cdot \left(\sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right) + \left(\sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}\right))_*}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]
    9. Simplified15.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-(\left(\sqrt{\sqrt[3]{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}}\right) \cdot \left(\left|\sqrt[3]{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}\right|\right) + b)_*\right) + \color{blue}{0}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]

    if 5.249016491775119e+108 < b

    1. Initial program 46.4

      \[\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \end{array}\]
    2. Initial simplification46.4

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]
    3. Taylor expanded around 0 3.9

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - \color{blue}{b}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt3.9

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - b}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\color{blue}{\frac{2 \cdot c}{\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}}}\\ \end{array}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification13.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 5.249016491775119 \cdot 10^{+108}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0:\\ \;\;\;\;-\frac{(\left(\sqrt{\sqrt[3]{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}}\right) \cdot \left(\left|\sqrt[3]{(\left(a \cdot -4\right) \cdot c + \left(b \cdot b\right))_*}\right|\right) + b)_*}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot 2}{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}\\ \end{array}\\ \mathbf{elif}\;b \ge 0:\\ \;\;\;\;\frac{\left(-b\right) - b}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot 2}{\sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b} \cdot \sqrt{\sqrt{(c \cdot \left(a \cdot -4\right) + \left(b \cdot b\right))_*} - b}}\\ \end{array}\]

Reproduce

herbie shell --seed 2018365 +o rules:numerics
(FPCore (a b c)
  :name "jeff quadratic root 1"
  (if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))

Details

Time bar (total: 15.3s)Debug log

start165.0ms

Algorithm
intervals

setup157.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 18.8b

localize161.0ms

Local error

Found 4 expressions with local error:

24.1b
(sqrt (fma c (* a -4) (* b b)))
24.1b
(sqrt (fma c (* a -4) (* b b)))
1.2b
(- (sqrt (fma c (* a -4) (* b b))) b)
1.2b
(- (- b) (sqrt (fma c (* a -4) (* b b))))

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
4 → 93
Calls

4 calls. Slowest were:

5.0ms
(- (sqrt (fma c (* a -4) (* b b))) b)
4.0ms
(- (- b) (sqrt (fma c (* a -4) (* b b))))
1.0ms
(sqrt (fma c (* a -4) (* b b)))

series237.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

72.0ms
(sqrt (fma c (* a -4) (* b b)))
65.0ms
(sqrt (fma c (* a -4) (* b b)))
53.0ms
(- (sqrt (fma c (* a -4) (* b b))) b)
48.0ms
(- (- b) (sqrt (fma c (* a -4) (* b b))))

simplify2.4s

Counts
81 → 105
Calls

81 calls. Slowest were:

78.0ms
(fma 1 (- b) (- (* (sqrt (fma c (* a -4) (* b b))) (sqrt 1))))
70.0ms
(fma (* (cbrt (- b)) (cbrt (- b))) (cbrt (- b)) (- (* (sqrt (fma c (* a -4) (* b b))) (sqrt 1))))
68.0ms
(fma 1 (- b) (- (* (sqrt (fma c (* a -4) (* b b))) 1)))

prune2.0s

Pruning

6 alts after pruning (6 fresh and 0 done)

Merged error: 10.2b

localize144.0ms

Local error

Found 4 expressions with local error:

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

rewrite29.0ms

Algorithm
rewrite-expression-head
Counts
4 → 66
Calls

4 calls. Slowest were:

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

series318.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

174.0ms
(/ (* 2 c) (- (sqrt (fma c (* a -4) (* b b))) b))
60.0ms
(- (sqrt (fma c (* a -4) (* b b))) b)
46.0ms
(sqrt (fma c (* a -4) (* b b)))
38.0ms
(fma c (* a -4) (* b b))

simplify1.2s

Counts
34 → 78
Calls

34 calls. Slowest were:

621.0ms
(/ (* (* (* 2 c) (* 2 c)) (* 2 c)) (* (* (- (sqrt (fma c (* a -4) (* b b))) b) (- (sqrt (fma c (* a -4) (* b b))) b)) (- (sqrt (fma c (* a -4) (* b b))) b)))
119.0ms
(+ (* (sqrt (fma c (* a -4) (* b b))) (sqrt (fma c (* a -4) (* b b)))) (+ (* b b) (* (sqrt (fma c (* a -4) (* b b))) b)))
50.0ms
(- (pow b 2) (* 4 (* a c)))

prune1.7s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 10.2b

localize112.0ms

Local error

Found 4 expressions with local error:

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

rewrite17.0ms

Algorithm
rewrite-expression-head
Counts
4 → 76
Calls

4 calls. Slowest were:

5.0ms
(* (* 2 c) (/ 1 (- (sqrt (fma c (* a -4) (* b b))) b)))
5.0ms
(- (sqrt (fma c (* a -4) (* b b))) b)
5.0ms
(/ 1 (- (sqrt (fma c (* a -4) (* b b))) b))

series365.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

152.0ms
(* (* 2 c) (/ 1 (- (sqrt (fma c (* a -4) (* b b))) b)))
103.0ms
(/ 1 (- (sqrt (fma c (* a -4) (* b b))) b))
56.0ms
(sqrt (fma c (* a -4) (* b b)))
54.0ms
(- (sqrt (fma c (* a -4) (* b b))) b)

simplify1.2s

Counts
39 → 88
Calls

39 calls. Slowest were:

462.0ms
(* (* (* (* 2 c) (* 2 c)) (* 2 c)) (* (* (/ 1 (- (sqrt (fma c (* a -4) (* b b))) b)) (/ 1 (- (sqrt (fma c (* a -4) (* b b))) b))) (/ 1 (- (sqrt (fma c (* a -4) (* b b))) b))))
129.0ms
(* (* 2 c) (/ 1 (- (sqrt (fma c (* a -4) (* b b))) b)))
91.0ms
(+ (log (* 2 c)) (log (/ 1 (- (sqrt (fma c (* a -4) (* b b))) b))))

prune1.9s

Pruning

8 alts after pruning (7 fresh and 1 done)

Merged error: 10.2b

localize130.0ms

Local error

Found 4 expressions with local error:

24.1b
(sqrt (fma c (* a -4) (* b b)))
24.1b
(sqrt (fma c (* a -4) (* b b)))
1.2b
(- (sqrt (fma c (* a -4) (* b b))) b)
1.2b
(- (sqrt (fma c (* a -4) (* b b))) b)

rewrite25.0ms

Algorithm
rewrite-expression-head
Counts
4 → 66
Calls

4 calls. Slowest were:

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

series239.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

66.0ms
(sqrt (fma c (* a -4) (* b b)))
66.0ms
(sqrt (fma c (* a -4) (* b b)))
53.0ms
(- (sqrt (fma c (* a -4) (* b b))) b)
53.0ms
(- (sqrt (fma c (* a -4) (* b b))) b)

simplify250.0ms

Counts
30 → 78
Calls

30 calls. Slowest were:

22.0ms
(sqrt (* (cbrt (fma c (* a -4) (* b b))) (cbrt (fma c (* a -4) (* b b)))))
21.0ms
(* (cbrt (sqrt (fma c (* a -4) (* b b)))) (cbrt (sqrt (fma c (* a -4) (* b b)))))
20.0ms
(sqrt (sqrt (fma c (* a -4) (* b b))))

prune2.0s

Pruning

7 alts after pruning (6 fresh and 1 done)

Merged error: 10.2b

regimes350.0ms

Accuracy

91.7% (0.7b remaining)

Error of 13.3b against oracle of 12.6b and baseline of 21.3b

bsearch257.0ms