Average Error: 2.0 → 1.0
Time: 25.1s
Precision: 64
\[\frac{x}{y} \cdot \left(z - t\right) + t\]
\[\begin{array}{l} \mathbf{if}\;\frac{x}{y} \le -3.9791520014535619 \cdot 10^{-163} \lor \neg \left(\frac{x}{y} \le 8.23383008289744965 \cdot 10^{-230}\right) \land \frac{x}{y} \le 2.6979942480068814 \cdot 10^{197}:\\ \;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x \cdot z}{y} - \frac{t \cdot x}{y}\right) + t\\ \end{array}\]
\frac{x}{y} \cdot \left(z - t\right) + t
\begin{array}{l}
\mathbf{if}\;\frac{x}{y} \le -3.9791520014535619 \cdot 10^{-163} \lor \neg \left(\frac{x}{y} \le 8.23383008289744965 \cdot 10^{-230}\right) \land \frac{x}{y} \le 2.6979942480068814 \cdot 10^{197}:\\
\;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r346613 = x;
        double r346614 = y;
        double r346615 = r346613 / r346614;
        double r346616 = z;
        double r346617 = t;
        double r346618 = r346616 - r346617;
        double r346619 = r346615 * r346618;
        double r346620 = r346619 + r346617;
        return r346620;
}

double f(double x, double y, double z, double t) {
        double r346621 = x;
        double r346622 = y;
        double r346623 = r346621 / r346622;
        double r346624 = -3.979152001453562e-163;
        bool r346625 = r346623 <= r346624;
        double r346626 = 8.23383008289745e-230;
        bool r346627 = r346623 <= r346626;
        double r346628 = !r346627;
        double r346629 = 2.6979942480068814e+197;
        bool r346630 = r346623 <= r346629;
        bool r346631 = r346628 && r346630;
        bool r346632 = r346625 || r346631;
        double r346633 = z;
        double r346634 = t;
        double r346635 = r346633 - r346634;
        double r346636 = r346623 * r346635;
        double r346637 = r346636 + r346634;
        double r346638 = r346621 * r346633;
        double r346639 = r346638 / r346622;
        double r346640 = r346634 * r346621;
        double r346641 = r346640 / r346622;
        double r346642 = r346639 - r346641;
        double r346643 = r346642 + r346634;
        double r346644 = r346632 ? r346637 : r346643;
        return r346644;
}

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.3
Herbie1.0
\[\begin{array}{l} \mathbf{if}\;z \lt 2.7594565545626922 \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 2 regimes
  2. if (/ x y) < -3.979152001453562e-163 or 8.23383008289745e-230 < (/ x y) < 2.6979942480068814e+197

    1. Initial program 1.1

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

    if -3.979152001453562e-163 < (/ x y) < 8.23383008289745e-230 or 2.6979942480068814e+197 < (/ x y)

    1. Initial program 3.8

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

      \[\leadsto \frac{x}{\color{blue}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}}} \cdot \left(z - t\right) + t\]
    4. Applied add-cube-cbrt4.0

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}} \cdot \left(z - t\right) + t\]
    5. Applied times-frac4.0

      \[\leadsto \color{blue}{\left(\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{\sqrt[3]{x}}{\sqrt[3]{y}}\right)} \cdot \left(z - t\right) + t\]
    6. Applied associate-*l*0.6

      \[\leadsto \color{blue}{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}} \cdot \left(z - t\right)\right)} + t\]
    7. Using strategy rm
    8. Applied div-inv0.6

      \[\leadsto \color{blue}{\left(\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \frac{1}{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right)} \cdot \left(\frac{\sqrt[3]{x}}{\sqrt[3]{y}} \cdot \left(z - t\right)\right) + t\]
    9. Applied associate-*l*0.5

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{x}{y} \le -3.9791520014535619 \cdot 10^{-163} \lor \neg \left(\frac{x}{y} \le 8.23383008289744965 \cdot 10^{-230}\right) \land \frac{x}{y} \le 2.6979942480068814 \cdot 10^{197}:\\ \;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x \cdot z}{y} - \frac{t \cdot x}{y}\right) + t\\ \end{array}\]

Reproduce

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