Average Error: 2.2 → 1.9
Time: 41.1s
Precision: 64
\[\frac{x}{y} \cdot \left(z - t\right) + t\]
\[\begin{array}{l} \mathbf{if}\;y \le -1.262382052246431312198188775325087218832 \cdot 10^{113}:\\ \;\;\;\;x \cdot \frac{z - t}{y} + t\\ \mathbf{elif}\;y \le 3.762043282718022991691557885371293926069 \cdot 10^{-123}:\\ \;\;\;\;t + \frac{\left(z - t\right) \cdot x}{y}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y} \cdot z + t\right) + \frac{x}{y} \cdot \left(-t\right)\\ \end{array}\]
\frac{x}{y} \cdot \left(z - t\right) + t
\begin{array}{l}
\mathbf{if}\;y \le -1.262382052246431312198188775325087218832 \cdot 10^{113}:\\
\;\;\;\;x \cdot \frac{z - t}{y} + t\\

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

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

\end{array}
double f(double x, double y, double z, double t) {
        double r23612877 = x;
        double r23612878 = y;
        double r23612879 = r23612877 / r23612878;
        double r23612880 = z;
        double r23612881 = t;
        double r23612882 = r23612880 - r23612881;
        double r23612883 = r23612879 * r23612882;
        double r23612884 = r23612883 + r23612881;
        return r23612884;
}

double f(double x, double y, double z, double t) {
        double r23612885 = y;
        double r23612886 = -1.2623820522464313e+113;
        bool r23612887 = r23612885 <= r23612886;
        double r23612888 = x;
        double r23612889 = z;
        double r23612890 = t;
        double r23612891 = r23612889 - r23612890;
        double r23612892 = r23612891 / r23612885;
        double r23612893 = r23612888 * r23612892;
        double r23612894 = r23612893 + r23612890;
        double r23612895 = 3.762043282718023e-123;
        bool r23612896 = r23612885 <= r23612895;
        double r23612897 = r23612891 * r23612888;
        double r23612898 = r23612897 / r23612885;
        double r23612899 = r23612890 + r23612898;
        double r23612900 = r23612888 / r23612885;
        double r23612901 = r23612900 * r23612889;
        double r23612902 = r23612901 + r23612890;
        double r23612903 = -r23612890;
        double r23612904 = r23612900 * r23612903;
        double r23612905 = r23612902 + r23612904;
        double r23612906 = r23612896 ? r23612899 : r23612905;
        double r23612907 = r23612887 ? r23612894 : r23612906;
        return r23612907;
}

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.2
Target2.4
Herbie1.9
\[\begin{array}{l} \mathbf{if}\;z \lt 2.759456554562692182563154937894909044548 \cdot 10^{-282}:\\ \;\;\;\;\frac{x}{y} \cdot \left(z - t\right) + t\\ \mathbf{elif}\;z \lt 2.32699445087443595687739933019129648094 \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 y < -1.2623820522464313e+113

    1. Initial program 1.4

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

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

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

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

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

    if -1.2623820522464313e+113 < y < 3.762043282718023e-123

    1. Initial program 3.8

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

      \[\leadsto \color{blue}{t + \frac{x}{y} \cdot \left(z - t\right)}\]
    4. Using strategy rm
    5. Applied associate-*l/3.0

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

    if 3.762043282718023e-123 < y

    1. Initial program 1.1

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

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

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

      \[\leadsto t + \color{blue}{\left(\frac{x}{y} \cdot z + \frac{x}{y} \cdot \left(-t\right)\right)}\]
    7. Applied associate-+r+1.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1.262382052246431312198188775325087218832 \cdot 10^{113}:\\ \;\;\;\;x \cdot \frac{z - t}{y} + t\\ \mathbf{elif}\;y \le 3.762043282718022991691557885371293926069 \cdot 10^{-123}:\\ \;\;\;\;t + \frac{\left(z - t\right) \cdot x}{y}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y} \cdot z + t\right) + \frac{x}{y} \cdot \left(-t\right)\\ \end{array}\]

Reproduce

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