Average Error: 2.0 → 0.8
Time: 18.8s
Precision: 64
\[\frac{x}{y} \cdot \left(z - t\right) + t\]
\[\begin{array}{l} \mathbf{if}\;\frac{x}{y} \le -1.827665421516834 \cdot 10^{+160}:\\ \;\;\;\;\frac{z \cdot x + x \cdot \left(-t\right)}{y} + t\\ \mathbf{elif}\;\frac{x}{y} \le -2.034529277574148 \cdot 10^{-152}:\\ \;\;\;\;t + \left(z - t\right) \cdot \frac{x}{y}\\ \mathbf{elif}\;\frac{x}{y} \le 0.0:\\ \;\;\;\;t + \frac{x}{\frac{y}{z - t}}\\ \mathbf{elif}\;\frac{x}{y} \le 1.0213694029549854 \cdot 10^{+99}:\\ \;\;\;\;t + \left(z - t\right) \cdot \frac{x}{y}\\ \mathbf{else}:\\ \;\;\;\;t + \frac{x}{\frac{y}{z - t}}\\ \end{array}\]
\frac{x}{y} \cdot \left(z - t\right) + t
\begin{array}{l}
\mathbf{if}\;\frac{x}{y} \le -1.827665421516834 \cdot 10^{+160}:\\
\;\;\;\;\frac{z \cdot x + x \cdot \left(-t\right)}{y} + t\\

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

\mathbf{elif}\;\frac{x}{y} \le 0.0:\\
\;\;\;\;t + \frac{x}{\frac{y}{z - t}}\\

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

\mathbf{else}:\\
\;\;\;\;t + \frac{x}{\frac{y}{z - t}}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r21979363 = x;
        double r21979364 = y;
        double r21979365 = r21979363 / r21979364;
        double r21979366 = z;
        double r21979367 = t;
        double r21979368 = r21979366 - r21979367;
        double r21979369 = r21979365 * r21979368;
        double r21979370 = r21979369 + r21979367;
        return r21979370;
}

double f(double x, double y, double z, double t) {
        double r21979371 = x;
        double r21979372 = y;
        double r21979373 = r21979371 / r21979372;
        double r21979374 = -1.827665421516834e+160;
        bool r21979375 = r21979373 <= r21979374;
        double r21979376 = z;
        double r21979377 = r21979376 * r21979371;
        double r21979378 = t;
        double r21979379 = -r21979378;
        double r21979380 = r21979371 * r21979379;
        double r21979381 = r21979377 + r21979380;
        double r21979382 = r21979381 / r21979372;
        double r21979383 = r21979382 + r21979378;
        double r21979384 = -2.034529277574148e-152;
        bool r21979385 = r21979373 <= r21979384;
        double r21979386 = r21979376 - r21979378;
        double r21979387 = r21979386 * r21979373;
        double r21979388 = r21979378 + r21979387;
        double r21979389 = 0.0;
        bool r21979390 = r21979373 <= r21979389;
        double r21979391 = r21979372 / r21979386;
        double r21979392 = r21979371 / r21979391;
        double r21979393 = r21979378 + r21979392;
        double r21979394 = 1.0213694029549854e+99;
        bool r21979395 = r21979373 <= r21979394;
        double r21979396 = r21979395 ? r21979388 : r21979393;
        double r21979397 = r21979390 ? r21979393 : r21979396;
        double r21979398 = r21979385 ? r21979388 : r21979397;
        double r21979399 = r21979375 ? r21979383 : r21979398;
        return r21979399;
}

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

Original2.0
Target2.2
Herbie0.8
\[\begin{array}{l} \mathbf{if}\;z \lt 2.759456554562692 \cdot 10^{-282}:\\ \;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\ \mathbf{elif}\;z \lt 2.326994450874436 \cdot 10^{-110}:\\ \;\;\;\;x \cdot \frac{z - t}{y} + t\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (/ x y) < -1.827665421516834e+160

    1. Initial program 13.6

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

      \[\leadsto \color{blue}{\frac{x \cdot \left(z - t\right)}{y}} + t\]
    4. Using strategy rm
    5. Applied sub-neg2.1

      \[\leadsto \frac{x \cdot \color{blue}{\left(z + \left(-t\right)\right)}}{y} + t\]
    6. Applied distribute-rgt-in2.1

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

    if -1.827665421516834e+160 < (/ x y) < -2.034529277574148e-152 or 0.0 < (/ x y) < 1.0213694029549854e+99

    1. Initial program 0.2

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

    if -2.034529277574148e-152 < (/ x y) < 0.0 or 1.0213694029549854e+99 < (/ x y)

    1. Initial program 3.4

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

      \[\leadsto \color{blue}{\frac{x \cdot \left(z - t\right)}{y}} + t\]
    4. Using strategy rm
    5. Applied sub-neg1.9

      \[\leadsto \frac{x \cdot \color{blue}{\left(z + \left(-t\right)\right)}}{y} + t\]
    6. Applied distribute-rgt-in1.9

      \[\leadsto \frac{\color{blue}{z \cdot x + \left(-t\right) \cdot x}}{y} + t\]
    7. Taylor expanded around 0 1.9

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

      \[\leadsto \color{blue}{t + \frac{x}{\frac{y}{z - t}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{x}{y} \le -1.827665421516834 \cdot 10^{+160}:\\ \;\;\;\;\frac{z \cdot x + x \cdot \left(-t\right)}{y} + t\\ \mathbf{elif}\;\frac{x}{y} \le -2.034529277574148 \cdot 10^{-152}:\\ \;\;\;\;t + \left(z - t\right) \cdot \frac{x}{y}\\ \mathbf{elif}\;\frac{x}{y} \le 0.0:\\ \;\;\;\;t + \frac{x}{\frac{y}{z - t}}\\ \mathbf{elif}\;\frac{x}{y} \le 1.0213694029549854 \cdot 10^{+99}:\\ \;\;\;\;t + \left(z - t\right) \cdot \frac{x}{y}\\ \mathbf{else}:\\ \;\;\;\;t + \frac{x}{\frac{y}{z - t}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019158 +o rules:numerics
(FPCore (x y z t)
  :name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"

  :herbie-target
  (if (< z 2.759456554562692e-282) (+ (* (/ x y) (- z t)) t) (if (< z 2.326994450874436e-110) (+ (* x (/ (- z t) y)) t) (+ (* (/ x y) (- z t)) t)))

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