Average Error: 20.3 → 4.8
Time: 30.4s
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} = -\infty:\\ \;\;\;\;\frac{1}{c} \cdot \left(\mathsf{fma}\left(x \cdot \frac{y}{z}, 9, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right)\\ \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.143656966902138628653369801663880934825 \cdot 10^{-208}:\\ \;\;\;\;\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{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 2.218303569588247401770491780248048496182 \cdot 10^{-286}:\\ \;\;\;\;\frac{1}{c} \cdot \left(\mathsf{fma}\left(x \cdot \frac{y}{z}, 9, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right)\\ \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.646526307585928545464016302227471938453 \cdot 10^{294}:\\ \;\;\;\;\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}:\\ \;\;\;\;\mathsf{fma}\left(9, \frac{x}{c} \cdot \frac{y}{z}, \frac{\frac{b}{z}}{c} - \frac{t \cdot a}{c} \cdot 4\right)\\ \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} = -\infty:\\
\;\;\;\;\frac{1}{c} \cdot \left(\mathsf{fma}\left(x \cdot \frac{y}{z}, 9, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right)\\

\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.143656966902138628653369801663880934825 \cdot 10^{-208}:\\
\;\;\;\;\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{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 2.218303569588247401770491780248048496182 \cdot 10^{-286}:\\
\;\;\;\;\frac{1}{c} \cdot \left(\mathsf{fma}\left(x \cdot \frac{y}{z}, 9, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right)\\

\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.646526307585928545464016302227471938453 \cdot 10^{294}:\\
\;\;\;\;\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}:\\
\;\;\;\;\mathsf{fma}\left(9, \frac{x}{c} \cdot \frac{y}{z}, \frac{\frac{b}{z}}{c} - \frac{t \cdot a}{c} \cdot 4\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r688898 = x;
        double r688899 = 9.0;
        double r688900 = r688898 * r688899;
        double r688901 = y;
        double r688902 = r688900 * r688901;
        double r688903 = z;
        double r688904 = 4.0;
        double r688905 = r688903 * r688904;
        double r688906 = t;
        double r688907 = r688905 * r688906;
        double r688908 = a;
        double r688909 = r688907 * r688908;
        double r688910 = r688902 - r688909;
        double r688911 = b;
        double r688912 = r688910 + r688911;
        double r688913 = c;
        double r688914 = r688903 * r688913;
        double r688915 = r688912 / r688914;
        return r688915;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r688916 = x;
        double r688917 = 9.0;
        double r688918 = r688916 * r688917;
        double r688919 = y;
        double r688920 = r688918 * r688919;
        double r688921 = z;
        double r688922 = 4.0;
        double r688923 = r688921 * r688922;
        double r688924 = t;
        double r688925 = r688923 * r688924;
        double r688926 = a;
        double r688927 = r688925 * r688926;
        double r688928 = r688920 - r688927;
        double r688929 = b;
        double r688930 = r688928 + r688929;
        double r688931 = c;
        double r688932 = r688931 * r688921;
        double r688933 = r688930 / r688932;
        double r688934 = -inf.0;
        bool r688935 = r688933 <= r688934;
        double r688936 = 1.0;
        double r688937 = r688936 / r688931;
        double r688938 = r688919 / r688921;
        double r688939 = r688916 * r688938;
        double r688940 = r688929 / r688921;
        double r688941 = fma(r688939, r688917, r688940);
        double r688942 = r688926 * r688922;
        double r688943 = r688924 * r688942;
        double r688944 = r688941 - r688943;
        double r688945 = r688937 * r688944;
        double r688946 = -1.1436569669021386e-208;
        bool r688947 = r688933 <= r688946;
        double r688948 = 2.2183035695882474e-286;
        bool r688949 = r688933 <= r688948;
        double r688950 = 1.6465263075859285e+294;
        bool r688951 = r688933 <= r688950;
        double r688952 = r688916 / r688931;
        double r688953 = r688952 * r688938;
        double r688954 = r688940 / r688931;
        double r688955 = r688924 * r688926;
        double r688956 = r688955 / r688931;
        double r688957 = r688956 * r688922;
        double r688958 = r688954 - r688957;
        double r688959 = fma(r688917, r688953, r688958);
        double r688960 = r688951 ? r688933 : r688959;
        double r688961 = r688949 ? r688945 : r688960;
        double r688962 = r688947 ? r688933 : r688961;
        double r688963 = r688935 ? r688945 : r688962;
        return r688963;
}

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.3
Target14.3
Herbie4.8
\[\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)) < -inf.0 or -1.1436569669021386e-208 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 2.2183035695882474e-286

    1. Initial program 44.8

      \[\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. Simplified10.1

      \[\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-inv10.2

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

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

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

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

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

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

    if -inf.0 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -1.1436569669021386e-208 or 2.2183035695882474e-286 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.6465263075859285e+294

    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}\]

    if 1.6465263075859285e+294 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c))

    1. Initial program 61.0

      \[\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. Simplified27.4

      \[\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-inv27.5

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

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

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

      \[\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}}\]
    8. Simplified15.8

      \[\leadsto \color{blue}{\mathsf{fma}\left(9, \frac{y}{z} \cdot \frac{x}{c}, \frac{\frac{b}{z}}{c} - 4 \cdot \frac{a \cdot t}{c}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.8

    \[\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} = -\infty:\\ \;\;\;\;\frac{1}{c} \cdot \left(\mathsf{fma}\left(x \cdot \frac{y}{z}, 9, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right)\\ \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.143656966902138628653369801663880934825 \cdot 10^{-208}:\\ \;\;\;\;\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{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 2.218303569588247401770491780248048496182 \cdot 10^{-286}:\\ \;\;\;\;\frac{1}{c} \cdot \left(\mathsf{fma}\left(x \cdot \frac{y}{z}, 9, \frac{b}{z}\right) - t \cdot \left(a \cdot 4\right)\right)\\ \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.646526307585928545464016302227471938453 \cdot 10^{294}:\\ \;\;\;\;\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}:\\ \;\;\;\;\mathsf{fma}\left(9, \frac{x}{c} \cdot \frac{y}{z}, \frac{\frac{b}{z}}{c} - \frac{t \cdot a}{c} \cdot 4\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019196 +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)))