Average Error: 34.0 → 9.8
Time: 10.3s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -1.939122797387644981598378751450729435399 \cdot 10^{59}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le \frac{7249572029462281}{1.38034926935811275748695117245540509049 \cdot 10^{70}}:\\ \;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -1.939122797387644981598378751450729435399 \cdot 10^{59}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

\mathbf{elif}\;b \le \frac{7249572029462281}{1.38034926935811275748695117245540509049 \cdot 10^{70}}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

\end{array}
double f(double a, double b, double c) {
        double r271256 = b;
        double r271257 = -r271256;
        double r271258 = r271256 * r271256;
        double r271259 = 4.0;
        double r271260 = a;
        double r271261 = c;
        double r271262 = r271260 * r271261;
        double r271263 = r271259 * r271262;
        double r271264 = r271258 - r271263;
        double r271265 = sqrt(r271264);
        double r271266 = r271257 + r271265;
        double r271267 = 2.0;
        double r271268 = r271267 * r271260;
        double r271269 = r271266 / r271268;
        return r271269;
}

double f(double a, double b, double c) {
        double r271270 = b;
        double r271271 = -1.939122797387645e+59;
        bool r271272 = r271270 <= r271271;
        double r271273 = 1.0;
        double r271274 = c;
        double r271275 = r271274 / r271270;
        double r271276 = a;
        double r271277 = r271270 / r271276;
        double r271278 = r271275 - r271277;
        double r271279 = r271273 * r271278;
        double r271280 = 7249572029462281.0;
        double r271281 = 1.3803492693581128e+70;
        double r271282 = r271280 / r271281;
        bool r271283 = r271270 <= r271282;
        double r271284 = -r271270;
        double r271285 = r271270 * r271270;
        double r271286 = 4.0;
        double r271287 = r271276 * r271274;
        double r271288 = r271286 * r271287;
        double r271289 = r271285 - r271288;
        double r271290 = sqrt(r271289);
        double r271291 = r271284 + r271290;
        double r271292 = 1.0;
        double r271293 = 2.0;
        double r271294 = r271293 * r271276;
        double r271295 = r271292 / r271294;
        double r271296 = r271291 * r271295;
        double r271297 = -1.0;
        double r271298 = r271297 * r271275;
        double r271299 = r271283 ? r271296 : r271298;
        double r271300 = r271272 ? r271279 : r271299;
        return r271300;
}

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

Target

Original34.0
Target21.0
Herbie9.8
\[\begin{array}{l} \mathbf{if}\;b \lt 0.0:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if b < -1.939122797387645e+59

    1. Initial program 37.8

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

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

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

    if -1.939122797387645e+59 < b < 5.251983820611911e-55

    1. Initial program 13.9

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied div-inv14.0

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

    if 5.251983820611911e-55 < b

    1. Initial program 54.9

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.939122797387644981598378751450729435399 \cdot 10^{59}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le \frac{7249572029462281}{1.38034926935811275748695117245540509049 \cdot 10^{70}}:\\ \;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 350497007 
(FPCore (a b c)
  :name "quadp (p42, positive)"
  :precision binary64

  :herbie-target
  (if (< b 0.0) (/ (+ (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)) (/ c (* a (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))))

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