Average Error: 20.2 → 7.0
Time: 30.5s
Precision: 64
\[\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -2.261854331447077498369269309258775740366 \cdot 10^{71}:\\ \;\;\;\;\left(\frac{b}{c \cdot z} + \frac{y \cdot x}{c \cdot z} \cdot 9\right) - 4 \cdot \frac{t \cdot a}{c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 0.0:\\ \;\;\;\;\left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right) \cdot \frac{1}{c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 1.09762604569508917121686233511500823776 \cdot 10^{287}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\ \mathbf{else}:\\ \;\;\;\;\left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right) \cdot \frac{1}{c}\\ \end{array}\]
\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}
\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -2.261854331447077498369269309258775740366 \cdot 10^{71}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \frac{y \cdot x}{c \cdot z} \cdot 9\right) - 4 \cdot \frac{t \cdot a}{c}\\

\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 0.0:\\
\;\;\;\;\left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right) \cdot \frac{1}{c}\\

\mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 1.09762604569508917121686233511500823776 \cdot 10^{287}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\

\mathbf{else}:\\
\;\;\;\;\left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right) \cdot \frac{1}{c}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r26472342 = x;
        double r26472343 = 9.0;
        double r26472344 = r26472342 * r26472343;
        double r26472345 = y;
        double r26472346 = r26472344 * r26472345;
        double r26472347 = z;
        double r26472348 = 4.0;
        double r26472349 = r26472347 * r26472348;
        double r26472350 = t;
        double r26472351 = r26472349 * r26472350;
        double r26472352 = a;
        double r26472353 = r26472351 * r26472352;
        double r26472354 = r26472346 - r26472353;
        double r26472355 = b;
        double r26472356 = r26472354 + r26472355;
        double r26472357 = c;
        double r26472358 = r26472347 * r26472357;
        double r26472359 = r26472356 / r26472358;
        return r26472359;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r26472360 = x;
        double r26472361 = 9.0;
        double r26472362 = r26472360 * r26472361;
        double r26472363 = y;
        double r26472364 = r26472362 * r26472363;
        double r26472365 = z;
        double r26472366 = 4.0;
        double r26472367 = r26472365 * r26472366;
        double r26472368 = t;
        double r26472369 = r26472367 * r26472368;
        double r26472370 = a;
        double r26472371 = r26472369 * r26472370;
        double r26472372 = r26472364 - r26472371;
        double r26472373 = b;
        double r26472374 = r26472372 + r26472373;
        double r26472375 = c;
        double r26472376 = r26472375 * r26472365;
        double r26472377 = r26472374 / r26472376;
        double r26472378 = -2.2618543314470775e+71;
        bool r26472379 = r26472377 <= r26472378;
        double r26472380 = r26472373 / r26472376;
        double r26472381 = r26472363 * r26472360;
        double r26472382 = r26472381 / r26472376;
        double r26472383 = r26472382 * r26472361;
        double r26472384 = r26472380 + r26472383;
        double r26472385 = r26472368 * r26472370;
        double r26472386 = r26472385 / r26472375;
        double r26472387 = r26472366 * r26472386;
        double r26472388 = r26472384 - r26472387;
        double r26472389 = 0.0;
        bool r26472390 = r26472377 <= r26472389;
        double r26472391 = r26472365 / r26472363;
        double r26472392 = r26472360 / r26472391;
        double r26472393 = r26472373 / r26472365;
        double r26472394 = fma(r26472361, r26472392, r26472393);
        double r26472395 = r26472370 * r26472366;
        double r26472396 = r26472368 * r26472395;
        double r26472397 = r26472394 - r26472396;
        double r26472398 = 1.0;
        double r26472399 = r26472398 / r26472375;
        double r26472400 = r26472397 * r26472399;
        double r26472401 = 1.0976260456950892e+287;
        bool r26472402 = r26472377 <= r26472401;
        double r26472403 = r26472402 ? r26472377 : r26472400;
        double r26472404 = r26472390 ? r26472400 : r26472403;
        double r26472405 = r26472379 ? r26472388 : r26472404;
        return r26472405;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original20.2
Target14.2
Herbie7.0
\[\begin{array}{l} \mathbf{if}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt -1.100156740804104887233830094663413900721 \cdot 10^{-171}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(z \cdot 4\right) \cdot \left(t \cdot a\right)\right) + b}{z \cdot c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt -0.0:\\ \;\;\;\;\frac{\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z}}{c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt 1.170887791174748819600820354912645756062 \cdot 10^{-53}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(z \cdot 4\right) \cdot \left(t \cdot a\right)\right) + b}{z \cdot c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt 2.876823679546137226963937101710277849382 \cdot 10^{130}:\\ \;\;\;\;\left(\left(9 \cdot \frac{y}{c}\right) \cdot \frac{x}{z} + \frac{b}{c \cdot z}\right) - 4 \cdot \frac{a \cdot t}{c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt 1.383851504245631860711731716196098366993 \cdot 10^{158}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(z \cdot 4\right) \cdot \left(t \cdot a\right)\right) + b}{z \cdot c}\\ \mathbf{else}:\\ \;\;\;\;\left(9 \cdot \left(\frac{y}{c \cdot z} \cdot x\right) + \frac{b}{c \cdot z}\right) - 4 \cdot \frac{a \cdot t}{c}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -2.2618543314470775e+71

    1. Initial program 18.9

      \[\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]
    2. Simplified17.6

      \[\leadsto \color{blue}{\frac{\frac{\mathsf{fma}\left(x \cdot 9, y, b\right)}{z} - \left(a \cdot 4\right) \cdot t}{c}}\]
    3. Taylor expanded around 0 10.8

      \[\leadsto \color{blue}{\left(9 \cdot \frac{x \cdot y}{z \cdot c} + \frac{b}{z \cdot c}\right) - 4 \cdot \frac{t \cdot a}{c}}\]

    if -2.2618543314470775e+71 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 0.0 or 1.0976260456950892e+287 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c))

    1. Initial program 34.9

      \[\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]
    2. Simplified12.6

      \[\leadsto \color{blue}{\frac{\frac{\mathsf{fma}\left(x \cdot 9, y, b\right)}{z} - \left(a \cdot 4\right) \cdot t}{c}}\]
    3. Using strategy rm
    4. Applied div-inv12.6

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(x \cdot 9, y, b\right) \cdot \frac{1}{z}} - \left(a \cdot 4\right) \cdot t}{c}\]
    5. Taylor expanded around 0 12.5

      \[\leadsto \frac{\color{blue}{\left(9 \cdot \frac{x \cdot y}{z} + \frac{b}{z}\right)} - \left(a \cdot 4\right) \cdot t}{c}\]
    6. Simplified9.3

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right)} - \left(a \cdot 4\right) \cdot t}{c}\]
    7. Using strategy rm
    8. Applied clear-num9.6

      \[\leadsto \color{blue}{\frac{1}{\frac{c}{\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - \left(a \cdot 4\right) \cdot t}}}\]
    9. Using strategy rm
    10. Applied associate-/r/9.4

      \[\leadsto \color{blue}{\frac{1}{c} \cdot \left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - \left(a \cdot 4\right) \cdot t\right)}\]

    if 0.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.0976260456950892e+287

    1. Initial program 0.6

      \[\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification7.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -2.261854331447077498369269309258775740366 \cdot 10^{71}:\\ \;\;\;\;\left(\frac{b}{c \cdot z} + \frac{y \cdot x}{c \cdot z} \cdot 9\right) - 4 \cdot \frac{t \cdot a}{c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 0.0:\\ \;\;\;\;\left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right) \cdot \frac{1}{c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 1.09762604569508917121686233511500823776 \cdot 10^{287}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\ \mathbf{else}:\\ \;\;\;\;\left(\mathsf{fma}\left(9, \frac{x}{\frac{z}{y}}, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right) \cdot \frac{1}{c}\\ \end{array}\]

Reproduce

herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t a b c)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, J"

  :herbie-target
  (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -1.100156740804105e-171) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) -0.0) (/ (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.1708877911747488e-53) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 2.876823679546137e+130) (- (+ (* (* 9.0 (/ y c)) (/ x z)) (/ b (* c z))) (* 4.0 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) 1.3838515042456319e+158) (/ (+ (- (* (* x 9.0) y) (* (* z 4.0) (* t a))) b) (* z c)) (- (+ (* 9.0 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4.0 (/ (* a t) c))))))))

  (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))