Average Error: 1.6 → 0.3
Time: 18.1s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.2305355125827335 \cdot 10^{+35}:\\ \;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{z}{y} \cdot x\right|\\ \mathbf{elif}\;x \le 8.399085920482073 \cdot 10^{+83}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \frac{x \cdot z}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{z}{y} \cdot x\right|\\ \end{array}\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\begin{array}{l}
\mathbf{if}\;x \le -1.2305355125827335 \cdot 10^{+35}:\\
\;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{z}{y} \cdot x\right|\\

\mathbf{elif}\;x \le 8.399085920482073 \cdot 10^{+83}:\\
\;\;\;\;\left|\frac{4 + x}{y} - \frac{x \cdot z}{y}\right|\\

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

\end{array}
double f(double x, double y, double z) {
        double r1449443 = x;
        double r1449444 = 4.0;
        double r1449445 = r1449443 + r1449444;
        double r1449446 = y;
        double r1449447 = r1449445 / r1449446;
        double r1449448 = r1449443 / r1449446;
        double r1449449 = z;
        double r1449450 = r1449448 * r1449449;
        double r1449451 = r1449447 - r1449450;
        double r1449452 = fabs(r1449451);
        return r1449452;
}

double f(double x, double y, double z) {
        double r1449453 = x;
        double r1449454 = -1.2305355125827335e+35;
        bool r1449455 = r1449453 <= r1449454;
        double r1449456 = 4.0;
        double r1449457 = y;
        double r1449458 = r1449456 / r1449457;
        double r1449459 = r1449453 / r1449457;
        double r1449460 = r1449458 + r1449459;
        double r1449461 = z;
        double r1449462 = r1449461 / r1449457;
        double r1449463 = r1449462 * r1449453;
        double r1449464 = r1449460 - r1449463;
        double r1449465 = fabs(r1449464);
        double r1449466 = 8.399085920482073e+83;
        bool r1449467 = r1449453 <= r1449466;
        double r1449468 = r1449456 + r1449453;
        double r1449469 = r1449468 / r1449457;
        double r1449470 = r1449453 * r1449461;
        double r1449471 = r1449470 / r1449457;
        double r1449472 = r1449469 - r1449471;
        double r1449473 = fabs(r1449472);
        double r1449474 = r1449467 ? r1449473 : r1449465;
        double r1449475 = r1449455 ? r1449465 : r1449474;
        return r1449475;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if x < -1.2305355125827335e+35 or 8.399085920482073e+83 < x

    1. Initial program 0.1

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Taylor expanded around 0 11.1

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

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

    if -1.2305355125827335e+35 < x < 8.399085920482073e+83

    1. Initial program 2.2

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Taylor expanded around 0 0.4

      \[\leadsto \left|\frac{x + 4}{y} - \color{blue}{\frac{x \cdot z}{y}}\right|\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.2305355125827335 \cdot 10^{+35}:\\ \;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{z}{y} \cdot x\right|\\ \mathbf{elif}\;x \le 8.399085920482073 \cdot 10^{+83}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \frac{x \cdot z}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\left(\frac{4}{y} + \frac{x}{y}\right) - \frac{z}{y} \cdot x\right|\\ \end{array}\]

Reproduce

herbie shell --seed 2019121 
(FPCore (x y z)
  :name "fabs fraction 1"
  (fabs (- (/ (+ x 4) y) (* (/ x y) z))))