Average Error: 1.3 → 1.2
Time: 22.5s
Precision: 64
\[x + y \cdot \frac{z - t}{z - a}\]
\[\begin{array}{l} \mathbf{if}\;y \le -8.96595528476415968 \cdot 10^{41}:\\ \;\;\;\;x + y \cdot \frac{z - t}{z - a}\\ \mathbf{elif}\;y \le 6.781252727543297 \cdot 10^{-83}:\\ \;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y}{z - a} \cdot \left(z - t\right)\\ \end{array}\]
x + y \cdot \frac{z - t}{z - a}
\begin{array}{l}
\mathbf{if}\;y \le -8.96595528476415968 \cdot 10^{41}:\\
\;\;\;\;x + y \cdot \frac{z - t}{z - a}\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r434850 = x;
        double r434851 = y;
        double r434852 = z;
        double r434853 = t;
        double r434854 = r434852 - r434853;
        double r434855 = a;
        double r434856 = r434852 - r434855;
        double r434857 = r434854 / r434856;
        double r434858 = r434851 * r434857;
        double r434859 = r434850 + r434858;
        return r434859;
}

double f(double x, double y, double z, double t, double a) {
        double r434860 = y;
        double r434861 = -8.96595528476416e+41;
        bool r434862 = r434860 <= r434861;
        double r434863 = x;
        double r434864 = z;
        double r434865 = t;
        double r434866 = r434864 - r434865;
        double r434867 = a;
        double r434868 = r434864 - r434867;
        double r434869 = r434866 / r434868;
        double r434870 = r434860 * r434869;
        double r434871 = r434863 + r434870;
        double r434872 = 6.781252727543297e-83;
        bool r434873 = r434860 <= r434872;
        double r434874 = r434866 * r434860;
        double r434875 = r434874 / r434868;
        double r434876 = r434863 + r434875;
        double r434877 = r434860 / r434868;
        double r434878 = r434877 * r434866;
        double r434879 = r434863 + r434878;
        double r434880 = r434873 ? r434876 : r434879;
        double r434881 = r434862 ? r434871 : r434880;
        return r434881;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original1.3
Target1.2
Herbie1.2
\[x + \frac{y}{\frac{z - a}{z - t}}\]

Derivation

  1. Split input into 3 regimes
  2. if y < -8.96595528476416e+41

    1. Initial program 0.5

      \[x + y \cdot \frac{z - t}{z - a}\]

    if -8.96595528476416e+41 < y < 6.781252727543297e-83

    1. Initial program 2.0

      \[x + y \cdot \frac{z - t}{z - a}\]
    2. Using strategy rm
    3. Applied associate-*r/0.4

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

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

    if 6.781252727543297e-83 < y

    1. Initial program 0.6

      \[x + y \cdot \frac{z - t}{z - a}\]
    2. Using strategy rm
    3. Applied clear-num0.7

      \[\leadsto x + y \cdot \color{blue}{\frac{1}{\frac{z - a}{z - t}}}\]
    4. Using strategy rm
    5. Applied associate-/r/0.7

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -8.96595528476415968 \cdot 10^{41}:\\ \;\;\;\;x + y \cdot \frac{z - t}{z - a}\\ \mathbf{elif}\;y \le 6.781252727543297 \cdot 10^{-83}:\\ \;\;\;\;x + \frac{\left(z - t\right) \cdot y}{z - a}\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y}{z - a} \cdot \left(z - t\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019199 
(FPCore (x y z t a)
  :name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"

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

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