Average Error: 0.7 → 0.1
Time: 4.6s
Precision: 64
\[1 - \frac{x}{\left(y - z\right) \cdot \left(y - t\right)}\]
\[\begin{array}{l} \mathbf{if}\;z \le -1.901406615607111 \cdot 10^{-6} \lor \neg \left(z \le 7.10710294630171767 \cdot 10^{50}\right):\\ \;\;\;\;1 - \frac{\frac{x}{y - z}}{y - t}\\ \mathbf{else}:\\ \;\;\;\;1 - \frac{1}{\frac{y - z}{\frac{x}{y - t}}}\\ \end{array}\]
1 - \frac{x}{\left(y - z\right) \cdot \left(y - t\right)}
\begin{array}{l}
\mathbf{if}\;z \le -1.901406615607111 \cdot 10^{-6} \lor \neg \left(z \le 7.10710294630171767 \cdot 10^{50}\right):\\
\;\;\;\;1 - \frac{\frac{x}{y - z}}{y - t}\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r298411 = 1.0;
        double r298412 = x;
        double r298413 = y;
        double r298414 = z;
        double r298415 = r298413 - r298414;
        double r298416 = t;
        double r298417 = r298413 - r298416;
        double r298418 = r298415 * r298417;
        double r298419 = r298412 / r298418;
        double r298420 = r298411 - r298419;
        return r298420;
}

double f(double x, double y, double z, double t) {
        double r298421 = z;
        double r298422 = -1.901406615607111e-06;
        bool r298423 = r298421 <= r298422;
        double r298424 = 7.107102946301718e+50;
        bool r298425 = r298421 <= r298424;
        double r298426 = !r298425;
        bool r298427 = r298423 || r298426;
        double r298428 = 1.0;
        double r298429 = x;
        double r298430 = y;
        double r298431 = r298430 - r298421;
        double r298432 = r298429 / r298431;
        double r298433 = t;
        double r298434 = r298430 - r298433;
        double r298435 = r298432 / r298434;
        double r298436 = r298428 - r298435;
        double r298437 = 1.0;
        double r298438 = r298429 / r298434;
        double r298439 = r298431 / r298438;
        double r298440 = r298437 / r298439;
        double r298441 = r298428 - r298440;
        double r298442 = r298427 ? r298436 : r298441;
        return r298442;
}

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

Derivation

  1. Split input into 2 regimes
  2. if z < -1.901406615607111e-06 or 7.107102946301718e+50 < z

    1. Initial program 0.1

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

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

    if -1.901406615607111e-06 < z < 7.107102946301718e+50

    1. Initial program 1.2

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -1.901406615607111 \cdot 10^{-6} \lor \neg \left(z \le 7.10710294630171767 \cdot 10^{50}\right):\\ \;\;\;\;1 - \frac{\frac{x}{y - z}}{y - t}\\ \mathbf{else}:\\ \;\;\;\;1 - \frac{1}{\frac{y - z}{\frac{x}{y - t}}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020003 
(FPCore (x y z t)
  :name "Data.Random.Distribution.Triangular:triangularCDF from random-fu-0.2.6.2, A"
  :precision binary64
  (- 1 (/ x (* (- y z) (- y t)))))