Average Error: 0.6 → 0.4
Time: 39.6s
Precision: 64
\[1 - \frac{x}{\left(y - z\right) \cdot \left(y - t\right)}\]
\[\begin{array}{l} \mathbf{if}\;\frac{x}{\left(y - z\right) \cdot \left(y - t\right)} \le 2.075149733991123120410744372495800627202 \cdot 10^{278}:\\ \;\;\;\;1 - \frac{x}{\left(y - z\right) \cdot \left(y - t\right)}\\ \mathbf{else}:\\ \;\;\;\;1 - \frac{\frac{x}{y - t}}{y - z}\\ \end{array}\]
1 - \frac{x}{\left(y - z\right) \cdot \left(y - t\right)}
\begin{array}{l}
\mathbf{if}\;\frac{x}{\left(y - z\right) \cdot \left(y - t\right)} \le 2.075149733991123120410744372495800627202 \cdot 10^{278}:\\
\;\;\;\;1 - \frac{x}{\left(y - z\right) \cdot \left(y - t\right)}\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r11342642 = 1.0;
        double r11342643 = x;
        double r11342644 = y;
        double r11342645 = z;
        double r11342646 = r11342644 - r11342645;
        double r11342647 = t;
        double r11342648 = r11342644 - r11342647;
        double r11342649 = r11342646 * r11342648;
        double r11342650 = r11342643 / r11342649;
        double r11342651 = r11342642 - r11342650;
        return r11342651;
}

double f(double x, double y, double z, double t) {
        double r11342652 = x;
        double r11342653 = y;
        double r11342654 = z;
        double r11342655 = r11342653 - r11342654;
        double r11342656 = t;
        double r11342657 = r11342653 - r11342656;
        double r11342658 = r11342655 * r11342657;
        double r11342659 = r11342652 / r11342658;
        double r11342660 = 2.075149733991123e+278;
        bool r11342661 = r11342659 <= r11342660;
        double r11342662 = 1.0;
        double r11342663 = r11342662 - r11342659;
        double r11342664 = r11342652 / r11342657;
        double r11342665 = r11342664 / r11342655;
        double r11342666 = r11342662 - r11342665;
        double r11342667 = r11342661 ? r11342663 : r11342666;
        return r11342667;
}

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 (/ x (* (- y z) (- y t))) < 2.075149733991123e+278

    1. Initial program 0.3

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

    if 2.075149733991123e+278 < (/ x (* (- y z) (- y t)))

    1. Initial program 26.2

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

      \[\leadsto 1 - \frac{\color{blue}{1 \cdot x}}{\left(y - z\right) \cdot \left(y - t\right)}\]
    4. Applied times-frac11.0

      \[\leadsto 1 - \color{blue}{\frac{1}{y - z} \cdot \frac{x}{y - t}}\]
    5. Using strategy rm
    6. Applied associate-*l/10.8

      \[\leadsto 1 - \color{blue}{\frac{1 \cdot \frac{x}{y - t}}{y - z}}\]
    7. Simplified10.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{x}{\left(y - z\right) \cdot \left(y - t\right)} \le 2.075149733991123120410744372495800627202 \cdot 10^{278}:\\ \;\;\;\;1 - \frac{x}{\left(y - z\right) \cdot \left(y - t\right)}\\ \mathbf{else}:\\ \;\;\;\;1 - \frac{\frac{x}{y - t}}{y - z}\\ \end{array}\]

Reproduce

herbie shell --seed 2019168 +o rules:numerics
(FPCore (x y z t)
  :name "Data.Random.Distribution.Triangular:triangularCDF from random-fu-0.2.6.2, A"
  (- 1.0 (/ x (* (- y z) (- y t)))))