Average Error: 7.4 → 4.9
Time: 18.6s
Precision: 64
\[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
\[\begin{array}{l} \mathbf{if}\;\left(z \cdot 9\right) \cdot t \le -1.654581372873604285653245436545007261713 \cdot 10^{143}:\\ \;\;\;\;\frac{x}{\frac{a}{0.5}} \cdot y - z \cdot \left(\frac{4.5}{a} \cdot t\right)\\ \mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le -5.35651608434410405542734389883583406978 \cdot 10^{-257} \lor \neg \left(\left(z \cdot 9\right) \cdot t \le 0.0\right) \land \left(z \cdot 9\right) \cdot t \le 8.464150091225659695774595298852786761345 \cdot 10^{254}:\\ \;\;\;\;\left(0.5 \cdot x\right) \cdot \left(y \cdot \frac{1}{a}\right) - \frac{4.5}{\frac{a}{t \cdot z}}\\ \mathbf{else}:\\ \;\;\;\;\frac{0.5}{\frac{a}{y \cdot x}} - \frac{z}{\frac{\frac{a}{t}}{4.5}}\\ \end{array}\]
\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}
\begin{array}{l}
\mathbf{if}\;\left(z \cdot 9\right) \cdot t \le -1.654581372873604285653245436545007261713 \cdot 10^{143}:\\
\;\;\;\;\frac{x}{\frac{a}{0.5}} \cdot y - z \cdot \left(\frac{4.5}{a} \cdot t\right)\\

\mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le -5.35651608434410405542734389883583406978 \cdot 10^{-257} \lor \neg \left(\left(z \cdot 9\right) \cdot t \le 0.0\right) \land \left(z \cdot 9\right) \cdot t \le 8.464150091225659695774595298852786761345 \cdot 10^{254}:\\
\;\;\;\;\left(0.5 \cdot x\right) \cdot \left(y \cdot \frac{1}{a}\right) - \frac{4.5}{\frac{a}{t \cdot z}}\\

\mathbf{else}:\\
\;\;\;\;\frac{0.5}{\frac{a}{y \cdot x}} - \frac{z}{\frac{\frac{a}{t}}{4.5}}\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r670217 = x;
        double r670218 = y;
        double r670219 = r670217 * r670218;
        double r670220 = z;
        double r670221 = 9.0;
        double r670222 = r670220 * r670221;
        double r670223 = t;
        double r670224 = r670222 * r670223;
        double r670225 = r670219 - r670224;
        double r670226 = a;
        double r670227 = 2.0;
        double r670228 = r670226 * r670227;
        double r670229 = r670225 / r670228;
        return r670229;
}

double f(double x, double y, double z, double t, double a) {
        double r670230 = z;
        double r670231 = 9.0;
        double r670232 = r670230 * r670231;
        double r670233 = t;
        double r670234 = r670232 * r670233;
        double r670235 = -1.6545813728736043e+143;
        bool r670236 = r670234 <= r670235;
        double r670237 = x;
        double r670238 = a;
        double r670239 = 0.5;
        double r670240 = r670238 / r670239;
        double r670241 = r670237 / r670240;
        double r670242 = y;
        double r670243 = r670241 * r670242;
        double r670244 = 4.5;
        double r670245 = r670244 / r670238;
        double r670246 = r670245 * r670233;
        double r670247 = r670230 * r670246;
        double r670248 = r670243 - r670247;
        double r670249 = -5.356516084344104e-257;
        bool r670250 = r670234 <= r670249;
        double r670251 = 0.0;
        bool r670252 = r670234 <= r670251;
        double r670253 = !r670252;
        double r670254 = 8.46415009122566e+254;
        bool r670255 = r670234 <= r670254;
        bool r670256 = r670253 && r670255;
        bool r670257 = r670250 || r670256;
        double r670258 = r670239 * r670237;
        double r670259 = 1.0;
        double r670260 = r670259 / r670238;
        double r670261 = r670242 * r670260;
        double r670262 = r670258 * r670261;
        double r670263 = r670233 * r670230;
        double r670264 = r670238 / r670263;
        double r670265 = r670244 / r670264;
        double r670266 = r670262 - r670265;
        double r670267 = r670242 * r670237;
        double r670268 = r670238 / r670267;
        double r670269 = r670239 / r670268;
        double r670270 = r670238 / r670233;
        double r670271 = r670270 / r670244;
        double r670272 = r670230 / r670271;
        double r670273 = r670269 - r670272;
        double r670274 = r670257 ? r670266 : r670273;
        double r670275 = r670236 ? r670248 : r670274;
        return r670275;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original7.4
Target5.4
Herbie4.9
\[\begin{array}{l} \mathbf{if}\;a \lt -2.090464557976709043451944897028999329376 \cdot 10^{86}:\\ \;\;\;\;0.5 \cdot \frac{y \cdot x}{a} - 4.5 \cdot \frac{t}{\frac{a}{z}}\\ \mathbf{elif}\;a \lt 2.144030707833976090627817222818061808815 \cdot 10^{99}:\\ \;\;\;\;\frac{x \cdot y - z \cdot \left(9 \cdot t\right)}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;\frac{y}{a} \cdot \left(x \cdot 0.5\right) - \frac{t}{a} \cdot \left(z \cdot 4.5\right)\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (* (* z 9.0) t) < -1.6545813728736043e+143

    1. Initial program 21.8

      \[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
    2. Taylor expanded around 0 21.3

      \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot y}{a} - 4.5 \cdot \frac{t \cdot z}{a}}\]
    3. Simplified18.5

      \[\leadsto \color{blue}{\frac{0.5 \cdot x}{\frac{a}{y}} - \frac{4.5}{\frac{a}{z \cdot t}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity18.5

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \frac{4.5}{\frac{\color{blue}{1 \cdot a}}{z \cdot t}}\]
    6. Applied times-frac1.9

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \frac{4.5}{\color{blue}{\frac{1}{z} \cdot \frac{a}{t}}}\]
    7. Applied *-un-lft-identity1.9

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \frac{\color{blue}{1 \cdot 4.5}}{\frac{1}{z} \cdot \frac{a}{t}}\]
    8. Applied times-frac2.2

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \color{blue}{\frac{1}{\frac{1}{z}} \cdot \frac{4.5}{\frac{a}{t}}}\]
    9. Simplified2.1

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \color{blue}{z} \cdot \frac{4.5}{\frac{a}{t}}\]
    10. Simplified2.0

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - z \cdot \color{blue}{\left(\frac{4.5}{a} \cdot t\right)}\]
    11. Using strategy rm
    12. Applied associate-/r/2.1

      \[\leadsto \color{blue}{\frac{0.5 \cdot x}{a} \cdot y} - z \cdot \left(\frac{4.5}{a} \cdot t\right)\]
    13. Simplified2.1

      \[\leadsto \color{blue}{\frac{x}{\frac{a}{0.5}}} \cdot y - z \cdot \left(\frac{4.5}{a} \cdot t\right)\]

    if -1.6545813728736043e+143 < (* (* z 9.0) t) < -5.356516084344104e-257 or 0.0 < (* (* z 9.0) t) < 8.46415009122566e+254

    1. Initial program 3.6

      \[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
    2. Taylor expanded around 0 3.6

      \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot y}{a} - 4.5 \cdot \frac{t \cdot z}{a}}\]
    3. Simplified4.9

      \[\leadsto \color{blue}{\frac{0.5 \cdot x}{\frac{a}{y}} - \frac{4.5}{\frac{a}{z \cdot t}}}\]
    4. Using strategy rm
    5. Applied div-inv5.3

      \[\leadsto \color{blue}{\left(0.5 \cdot x\right) \cdot \frac{1}{\frac{a}{y}}} - \frac{4.5}{\frac{a}{z \cdot t}}\]
    6. Simplified5.2

      \[\leadsto \left(0.5 \cdot x\right) \cdot \color{blue}{\left(y \cdot \frac{1}{a}\right)} - \frac{4.5}{\frac{a}{z \cdot t}}\]

    if -5.356516084344104e-257 < (* (* z 9.0) t) < 0.0 or 8.46415009122566e+254 < (* (* z 9.0) t)

    1. Initial program 13.0

      \[\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\]
    2. Taylor expanded around 0 12.9

      \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot y}{a} - 4.5 \cdot \frac{t \cdot z}{a}}\]
    3. Simplified14.2

      \[\leadsto \color{blue}{\frac{0.5 \cdot x}{\frac{a}{y}} - \frac{4.5}{\frac{a}{z \cdot t}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity14.2

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \frac{4.5}{\frac{\color{blue}{1 \cdot a}}{z \cdot t}}\]
    6. Applied times-frac5.4

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \frac{4.5}{\color{blue}{\frac{1}{z} \cdot \frac{a}{t}}}\]
    7. Applied associate-/r*5.4

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \color{blue}{\frac{\frac{4.5}{\frac{1}{z}}}{\frac{a}{t}}}\]
    8. Simplified5.3

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \frac{\color{blue}{4.5 \cdot z}}{\frac{a}{t}}\]
    9. Using strategy rm
    10. Applied *-un-lft-identity5.3

      \[\leadsto \frac{0.5 \cdot x}{\frac{a}{y}} - \color{blue}{1 \cdot \frac{4.5 \cdot z}{\frac{a}{t}}}\]
    11. Applied *-un-lft-identity5.3

      \[\leadsto \color{blue}{1 \cdot \frac{0.5 \cdot x}{\frac{a}{y}}} - 1 \cdot \frac{4.5 \cdot z}{\frac{a}{t}}\]
    12. Applied distribute-lft-out--5.3

      \[\leadsto \color{blue}{1 \cdot \left(\frac{0.5 \cdot x}{\frac{a}{y}} - \frac{4.5 \cdot z}{\frac{a}{t}}\right)}\]
    13. Simplified5.4

      \[\leadsto 1 \cdot \color{blue}{\left(\frac{0.5}{\frac{a}{x \cdot y}} - \frac{z}{\frac{\frac{a}{t}}{4.5}}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(z \cdot 9\right) \cdot t \le -1.654581372873604285653245436545007261713 \cdot 10^{143}:\\ \;\;\;\;\frac{x}{\frac{a}{0.5}} \cdot y - z \cdot \left(\frac{4.5}{a} \cdot t\right)\\ \mathbf{elif}\;\left(z \cdot 9\right) \cdot t \le -5.35651608434410405542734389883583406978 \cdot 10^{-257} \lor \neg \left(\left(z \cdot 9\right) \cdot t \le 0.0\right) \land \left(z \cdot 9\right) \cdot t \le 8.464150091225659695774595298852786761345 \cdot 10^{254}:\\ \;\;\;\;\left(0.5 \cdot x\right) \cdot \left(y \cdot \frac{1}{a}\right) - \frac{4.5}{\frac{a}{t \cdot z}}\\ \mathbf{else}:\\ \;\;\;\;\frac{0.5}{\frac{a}{y \cdot x}} - \frac{z}{\frac{\frac{a}{t}}{4.5}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 
(FPCore (x y z t a)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, I"

  :herbie-target
  (if (< a -2.090464557976709e+86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.144030707833976e+99) (/ (- (* x y) (* z (* 9.0 t))) (* a 2.0)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))

  (/ (- (* x y) (* (* z 9.0) t)) (* a 2.0)))