Average Error: 5.6 → 1.9
Time: 18.1s
Precision: 64
\[x + \frac{y \cdot \left(z - x\right)}{t}\]
\[\begin{array}{l} \mathbf{if}\;x \le -2.8802141711072454 \cdot 10^{-269}:\\ \;\;\;\;x + \left(\frac{z}{\frac{t}{y}} - \frac{x}{\frac{t}{y}}\right)\\ \mathbf{elif}\;x \le 3.5955709352295983 \cdot 10^{-115}:\\ \;\;\;\;\frac{y \cdot \left(z - x\right)}{t} + x\\ \mathbf{else}:\\ \;\;\;\;x + \left(\frac{z}{\frac{t}{y}} - \frac{x}{\frac{t}{y}}\right)\\ \end{array}\]
x + \frac{y \cdot \left(z - x\right)}{t}
\begin{array}{l}
\mathbf{if}\;x \le -2.8802141711072454 \cdot 10^{-269}:\\
\;\;\;\;x + \left(\frac{z}{\frac{t}{y}} - \frac{x}{\frac{t}{y}}\right)\\

\mathbf{elif}\;x \le 3.5955709352295983 \cdot 10^{-115}:\\
\;\;\;\;\frac{y \cdot \left(z - x\right)}{t} + x\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r20050400 = x;
        double r20050401 = y;
        double r20050402 = z;
        double r20050403 = r20050402 - r20050400;
        double r20050404 = r20050401 * r20050403;
        double r20050405 = t;
        double r20050406 = r20050404 / r20050405;
        double r20050407 = r20050400 + r20050406;
        return r20050407;
}

double f(double x, double y, double z, double t) {
        double r20050408 = x;
        double r20050409 = -2.8802141711072454e-269;
        bool r20050410 = r20050408 <= r20050409;
        double r20050411 = z;
        double r20050412 = t;
        double r20050413 = y;
        double r20050414 = r20050412 / r20050413;
        double r20050415 = r20050411 / r20050414;
        double r20050416 = r20050408 / r20050414;
        double r20050417 = r20050415 - r20050416;
        double r20050418 = r20050408 + r20050417;
        double r20050419 = 3.5955709352295983e-115;
        bool r20050420 = r20050408 <= r20050419;
        double r20050421 = r20050411 - r20050408;
        double r20050422 = r20050413 * r20050421;
        double r20050423 = r20050422 / r20050412;
        double r20050424 = r20050423 + r20050408;
        double r20050425 = r20050420 ? r20050424 : r20050418;
        double r20050426 = r20050410 ? r20050418 : r20050425;
        return r20050426;
}

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

Original5.6
Target2.1
Herbie1.9
\[x - \left(x \cdot \frac{y}{t} + \left(-z\right) \cdot \frac{y}{t}\right)\]

Derivation

  1. Split input into 2 regimes
  2. if x < -2.8802141711072454e-269 or 3.5955709352295983e-115 < x

    1. Initial program 5.9

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

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

      \[\leadsto x + \color{blue}{\frac{z - x}{\frac{t}{y}}}\]
    4. Using strategy rm
    5. Applied div-sub1.2

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

    if -2.8802141711072454e-269 < x < 3.5955709352295983e-115

    1. Initial program 4.7

      \[x + \frac{y \cdot \left(z - x\right)}{t}\]
    2. Using strategy rm
    3. Applied +-commutative4.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -2.8802141711072454 \cdot 10^{-269}:\\ \;\;\;\;x + \left(\frac{z}{\frac{t}{y}} - \frac{x}{\frac{t}{y}}\right)\\ \mathbf{elif}\;x \le 3.5955709352295983 \cdot 10^{-115}:\\ \;\;\;\;\frac{y \cdot \left(z - x\right)}{t} + x\\ \mathbf{else}:\\ \;\;\;\;x + \left(\frac{z}{\frac{t}{y}} - \frac{x}{\frac{t}{y}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019164 
(FPCore (x y z t)
  :name "Optimisation.CirclePacking:place from circle-packing-0.1.0.4, D"

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

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