Average Error: 3.8 → 1.6
Time: 17.4s
Precision: 64
\[\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\]
\[\begin{array}{l} \mathbf{if}\;y \le -3.637695460150344223366200288683848705459 \cdot 10^{-139}:\\ \;\;\;\;\frac{t}{y \cdot \left(3 \cdot z\right)} + \left(x - \frac{\frac{y}{z}}{3}\right)\\ \mathbf{elif}\;y \le 5.030262730305992219295073547083025688912 \cdot 10^{-97}:\\ \;\;\;\;\left(x - \frac{y}{3} \cdot \frac{1}{z}\right) + \frac{\frac{t}{3 \cdot z}}{y}\\ \mathbf{else}:\\ \;\;\;\;\frac{t}{z \cdot y} \cdot 0.3333333333333333148296162562473909929395 + \left(x - \frac{y}{3 \cdot z}\right)\\ \end{array}\]
\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}
\begin{array}{l}
\mathbf{if}\;y \le -3.637695460150344223366200288683848705459 \cdot 10^{-139}:\\
\;\;\;\;\frac{t}{y \cdot \left(3 \cdot z\right)} + \left(x - \frac{\frac{y}{z}}{3}\right)\\

\mathbf{elif}\;y \le 5.030262730305992219295073547083025688912 \cdot 10^{-97}:\\
\;\;\;\;\left(x - \frac{y}{3} \cdot \frac{1}{z}\right) + \frac{\frac{t}{3 \cdot z}}{y}\\

\mathbf{else}:\\
\;\;\;\;\frac{t}{z \cdot y} \cdot 0.3333333333333333148296162562473909929395 + \left(x - \frac{y}{3 \cdot z}\right)\\

\end{array}
double f(double x, double y, double z, double t) {
        double r22903493 = x;
        double r22903494 = y;
        double r22903495 = z;
        double r22903496 = 3.0;
        double r22903497 = r22903495 * r22903496;
        double r22903498 = r22903494 / r22903497;
        double r22903499 = r22903493 - r22903498;
        double r22903500 = t;
        double r22903501 = r22903497 * r22903494;
        double r22903502 = r22903500 / r22903501;
        double r22903503 = r22903499 + r22903502;
        return r22903503;
}

double f(double x, double y, double z, double t) {
        double r22903504 = y;
        double r22903505 = -3.637695460150344e-139;
        bool r22903506 = r22903504 <= r22903505;
        double r22903507 = t;
        double r22903508 = 3.0;
        double r22903509 = z;
        double r22903510 = r22903508 * r22903509;
        double r22903511 = r22903504 * r22903510;
        double r22903512 = r22903507 / r22903511;
        double r22903513 = x;
        double r22903514 = r22903504 / r22903509;
        double r22903515 = r22903514 / r22903508;
        double r22903516 = r22903513 - r22903515;
        double r22903517 = r22903512 + r22903516;
        double r22903518 = 5.030262730305992e-97;
        bool r22903519 = r22903504 <= r22903518;
        double r22903520 = r22903504 / r22903508;
        double r22903521 = 1.0;
        double r22903522 = r22903521 / r22903509;
        double r22903523 = r22903520 * r22903522;
        double r22903524 = r22903513 - r22903523;
        double r22903525 = r22903507 / r22903510;
        double r22903526 = r22903525 / r22903504;
        double r22903527 = r22903524 + r22903526;
        double r22903528 = r22903509 * r22903504;
        double r22903529 = r22903507 / r22903528;
        double r22903530 = 0.3333333333333333;
        double r22903531 = r22903529 * r22903530;
        double r22903532 = r22903504 / r22903510;
        double r22903533 = r22903513 - r22903532;
        double r22903534 = r22903531 + r22903533;
        double r22903535 = r22903519 ? r22903527 : r22903534;
        double r22903536 = r22903506 ? r22903517 : r22903535;
        return r22903536;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original3.8
Target1.8
Herbie1.6
\[\left(x - \frac{y}{z \cdot 3}\right) + \frac{\frac{t}{z \cdot 3}}{y}\]

Derivation

  1. Split input into 3 regimes
  2. if y < -3.637695460150344e-139

    1. Initial program 1.8

      \[\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\]
    2. Using strategy rm
    3. Applied associate-/r*1.9

      \[\leadsto \left(x - \color{blue}{\frac{\frac{y}{z}}{3}}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\]

    if -3.637695460150344e-139 < y < 5.030262730305992e-97

    1. Initial program 10.3

      \[\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\]
    2. Using strategy rm
    3. Applied associate-/r*2.2

      \[\leadsto \left(x - \frac{y}{z \cdot 3}\right) + \color{blue}{\frac{\frac{t}{z \cdot 3}}{y}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity2.2

      \[\leadsto \left(x - \frac{\color{blue}{1 \cdot y}}{z \cdot 3}\right) + \frac{\frac{t}{z \cdot 3}}{y}\]
    6. Applied times-frac2.2

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

    if 5.030262730305992e-97 < y

    1. Initial program 0.9

      \[\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\]
    2. Taylor expanded around 0 0.9

      \[\leadsto \left(x - \frac{y}{z \cdot 3}\right) + \color{blue}{0.3333333333333333148296162562473909929395 \cdot \frac{t}{z \cdot y}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -3.637695460150344223366200288683848705459 \cdot 10^{-139}:\\ \;\;\;\;\frac{t}{y \cdot \left(3 \cdot z\right)} + \left(x - \frac{\frac{y}{z}}{3}\right)\\ \mathbf{elif}\;y \le 5.030262730305992219295073547083025688912 \cdot 10^{-97}:\\ \;\;\;\;\left(x - \frac{y}{3} \cdot \frac{1}{z}\right) + \frac{\frac{t}{3 \cdot z}}{y}\\ \mathbf{else}:\\ \;\;\;\;\frac{t}{z \cdot y} \cdot 0.3333333333333333148296162562473909929395 + \left(x - \frac{y}{3 \cdot z}\right)\\ \end{array}\]

Reproduce

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

  :herbie-target
  (+ (- x (/ y (* z 3.0))) (/ (/ t (* z 3.0)) y))

  (+ (- x (/ y (* z 3.0))) (/ t (* (* z 3.0) y))))