Average Error: 20.3 → 6.0
Time: 18.7s
Precision: 64
\[\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -1.2458730547416133 \cdot 10^{+293}:\\ \;\;\;\;\left(\frac{b}{c \cdot z} + \frac{x}{\frac{c \cdot z}{y}} \cdot 9.0\right) - 4.0 \cdot \left(t \cdot \frac{a}{c}\right)\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -7.19657682972917 \cdot 10^{+72}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 1.0275879372618488 \cdot 10^{+308}:\\ \;\;\;\;\left(\frac{\frac{y \cdot x}{z}}{c} \cdot 9.0 + \frac{b}{c \cdot z}\right) - \frac{t \cdot a}{c} \cdot 4.0\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\frac{x}{z} \cdot \frac{y}{c}\right) \cdot 9.0 + \frac{b}{c \cdot z}\right) - 4.0 \cdot \left(\frac{t}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{a}{\sqrt[3]{c}}\right)\\ \end{array}\]
\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}
\begin{array}{l}
\mathbf{if}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -1.2458730547416133 \cdot 10^{+293}:\\
\;\;\;\;\left(\frac{b}{c \cdot z} + \frac{x}{\frac{c \cdot z}{y}} \cdot 9.0\right) - 4.0 \cdot \left(t \cdot \frac{a}{c}\right)\\

\mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -7.19657682972917 \cdot 10^{+72}:\\
\;\;\;\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\

\mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 1.0275879372618488 \cdot 10^{+308}:\\
\;\;\;\;\left(\frac{\frac{y \cdot x}{z}}{c} \cdot 9.0 + \frac{b}{c \cdot z}\right) - \frac{t \cdot a}{c} \cdot 4.0\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{x}{z} \cdot \frac{y}{c}\right) \cdot 9.0 + \frac{b}{c \cdot z}\right) - 4.0 \cdot \left(\frac{t}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{a}{\sqrt[3]{c}}\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r38935060 = x;
        double r38935061 = 9.0;
        double r38935062 = r38935060 * r38935061;
        double r38935063 = y;
        double r38935064 = r38935062 * r38935063;
        double r38935065 = z;
        double r38935066 = 4.0;
        double r38935067 = r38935065 * r38935066;
        double r38935068 = t;
        double r38935069 = r38935067 * r38935068;
        double r38935070 = a;
        double r38935071 = r38935069 * r38935070;
        double r38935072 = r38935064 - r38935071;
        double r38935073 = b;
        double r38935074 = r38935072 + r38935073;
        double r38935075 = c;
        double r38935076 = r38935065 * r38935075;
        double r38935077 = r38935074 / r38935076;
        return r38935077;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r38935078 = x;
        double r38935079 = 9.0;
        double r38935080 = r38935078 * r38935079;
        double r38935081 = y;
        double r38935082 = r38935080 * r38935081;
        double r38935083 = z;
        double r38935084 = 4.0;
        double r38935085 = r38935083 * r38935084;
        double r38935086 = t;
        double r38935087 = r38935085 * r38935086;
        double r38935088 = a;
        double r38935089 = r38935087 * r38935088;
        double r38935090 = r38935082 - r38935089;
        double r38935091 = b;
        double r38935092 = r38935090 + r38935091;
        double r38935093 = c;
        double r38935094 = r38935093 * r38935083;
        double r38935095 = r38935092 / r38935094;
        double r38935096 = -1.2458730547416133e+293;
        bool r38935097 = r38935095 <= r38935096;
        double r38935098 = r38935091 / r38935094;
        double r38935099 = r38935094 / r38935081;
        double r38935100 = r38935078 / r38935099;
        double r38935101 = r38935100 * r38935079;
        double r38935102 = r38935098 + r38935101;
        double r38935103 = r38935088 / r38935093;
        double r38935104 = r38935086 * r38935103;
        double r38935105 = r38935084 * r38935104;
        double r38935106 = r38935102 - r38935105;
        double r38935107 = -7.19657682972917e+72;
        bool r38935108 = r38935095 <= r38935107;
        double r38935109 = 1.0275879372618488e+308;
        bool r38935110 = r38935095 <= r38935109;
        double r38935111 = r38935081 * r38935078;
        double r38935112 = r38935111 / r38935083;
        double r38935113 = r38935112 / r38935093;
        double r38935114 = r38935113 * r38935079;
        double r38935115 = r38935114 + r38935098;
        double r38935116 = r38935086 * r38935088;
        double r38935117 = r38935116 / r38935093;
        double r38935118 = r38935117 * r38935084;
        double r38935119 = r38935115 - r38935118;
        double r38935120 = r38935078 / r38935083;
        double r38935121 = r38935081 / r38935093;
        double r38935122 = r38935120 * r38935121;
        double r38935123 = r38935122 * r38935079;
        double r38935124 = r38935123 + r38935098;
        double r38935125 = cbrt(r38935093);
        double r38935126 = r38935125 * r38935125;
        double r38935127 = r38935086 / r38935126;
        double r38935128 = r38935088 / r38935125;
        double r38935129 = r38935127 * r38935128;
        double r38935130 = r38935084 * r38935129;
        double r38935131 = r38935124 - r38935130;
        double r38935132 = r38935110 ? r38935119 : r38935131;
        double r38935133 = r38935108 ? r38935095 : r38935132;
        double r38935134 = r38935097 ? r38935106 : r38935133;
        return r38935134;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original20.3
Target14.5
Herbie6.0
\[\begin{array}{l} \mathbf{if}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt -1.100156740804105 \cdot 10^{-171}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(z \cdot 4.0\right) \cdot \left(t \cdot a\right)\right) + b}{z \cdot c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt -0.0:\\ \;\;\;\;\frac{\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z}}{c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt 1.1708877911747488 \cdot 10^{-53}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(z \cdot 4.0\right) \cdot \left(t \cdot a\right)\right) + b}{z \cdot c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt 2.876823679546137 \cdot 10^{+130}:\\ \;\;\;\;\left(\left(9.0 \cdot \frac{y}{c}\right) \cdot \frac{x}{z} + \frac{b}{c \cdot z}\right) - 4.0 \cdot \frac{a \cdot t}{c}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c} \lt 1.3838515042456319 \cdot 10^{+158}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(z \cdot 4.0\right) \cdot \left(t \cdot a\right)\right) + b}{z \cdot c}\\ \mathbf{else}:\\ \;\;\;\;\left(9.0 \cdot \left(\frac{y}{c \cdot z} \cdot x\right) + \frac{b}{c \cdot z}\right) - 4.0 \cdot \frac{a \cdot t}{c}\\ \end{array}\]

Derivation

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

    1. Initial program 54.3

      \[\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]
    2. Simplified24.4

      \[\leadsto \color{blue}{\frac{\frac{\left(x \cdot 9.0\right) \cdot y + b}{z} - \left(4.0 \cdot a\right) \cdot t}{c}}\]
    3. Taylor expanded around 0 26.4

      \[\leadsto \color{blue}{\left(9.0 \cdot \frac{x \cdot y}{z \cdot c} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \frac{t \cdot a}{c}}\]
    4. Using strategy rm
    5. Applied associate-/l*14.5

      \[\leadsto \left(9.0 \cdot \color{blue}{\frac{x}{\frac{z \cdot c}{y}}} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \frac{t \cdot a}{c}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity14.5

      \[\leadsto \left(9.0 \cdot \frac{x}{\frac{z \cdot c}{y}} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \frac{t \cdot a}{\color{blue}{1 \cdot c}}\]
    8. Applied times-frac9.2

      \[\leadsto \left(9.0 \cdot \frac{x}{\frac{z \cdot c}{y}} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \color{blue}{\left(\frac{t}{1} \cdot \frac{a}{c}\right)}\]
    9. Simplified9.2

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

    if -1.2458730547416133e+293 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < -7.19657682972917e+72

    1. Initial program 0.7

      \[\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]

    if -7.19657682972917e+72 < (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)) < 1.0275879372618488e+308

    1. Initial program 7.8

      \[\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]
    2. Simplified5.6

      \[\leadsto \color{blue}{\frac{\frac{\left(x \cdot 9.0\right) \cdot y + b}{z} - \left(4.0 \cdot a\right) \cdot t}{c}}\]
    3. Taylor expanded around 0 5.8

      \[\leadsto \color{blue}{\left(9.0 \cdot \frac{x \cdot y}{z \cdot c} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \frac{t \cdot a}{c}}\]
    4. Using strategy rm
    5. Applied associate-/r*5.9

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

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

    1. Initial program 61.6

      \[\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}\]
    2. Simplified27.5

      \[\leadsto \color{blue}{\frac{\frac{\left(x \cdot 9.0\right) \cdot y + b}{z} - \left(4.0 \cdot a\right) \cdot t}{c}}\]
    3. Taylor expanded around 0 31.4

      \[\leadsto \color{blue}{\left(9.0 \cdot \frac{x \cdot y}{z \cdot c} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \frac{t \cdot a}{c}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt31.9

      \[\leadsto \left(9.0 \cdot \frac{x \cdot y}{z \cdot c} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \frac{t \cdot a}{\color{blue}{\left(\sqrt[3]{c} \cdot \sqrt[3]{c}\right) \cdot \sqrt[3]{c}}}\]
    6. Applied times-frac26.0

      \[\leadsto \left(9.0 \cdot \frac{x \cdot y}{z \cdot c} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \color{blue}{\left(\frac{t}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{a}{\sqrt[3]{c}}\right)}\]
    7. Using strategy rm
    8. Applied times-frac9.4

      \[\leadsto \left(9.0 \cdot \color{blue}{\left(\frac{x}{z} \cdot \frac{y}{c}\right)} + \frac{b}{z \cdot c}\right) - 4.0 \cdot \left(\frac{t}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{a}{\sqrt[3]{c}}\right)\]
  3. Recombined 4 regimes into one program.
  4. Final simplification6.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -1.2458730547416133 \cdot 10^{+293}:\\ \;\;\;\;\left(\frac{b}{c \cdot z} + \frac{x}{\frac{c \cdot z}{y}} \cdot 9.0\right) - 4.0 \cdot \left(t \cdot \frac{a}{c}\right)\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le -7.19657682972917 \cdot 10^{+72}:\\ \;\;\;\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z}\\ \mathbf{elif}\;\frac{\left(\left(x \cdot 9.0\right) \cdot y - \left(\left(z \cdot 4.0\right) \cdot t\right) \cdot a\right) + b}{c \cdot z} \le 1.0275879372618488 \cdot 10^{+308}:\\ \;\;\;\;\left(\frac{\frac{y \cdot x}{z}}{c} \cdot 9.0 + \frac{b}{c \cdot z}\right) - \frac{t \cdot a}{c} \cdot 4.0\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\frac{x}{z} \cdot \frac{y}{c}\right) \cdot 9.0 + \frac{b}{c \cdot z}\right) - 4.0 \cdot \left(\frac{t}{\sqrt[3]{c} \cdot \sqrt[3]{c}} \cdot \frac{a}{\sqrt[3]{c}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019165 
(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)))