Average Error: 1.5 → 1.5
Time: 25.1s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\begin{array}{l} \mathbf{if}\;y \le -1.214782750567965144698113996402707065017 \cdot 10^{-69}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{y} \cdot x\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\left(\sqrt[3]{\frac{4 + x}{y}} \cdot \sqrt[3]{\frac{4 + x}{y}}\right) \cdot \sqrt[3]{\frac{4 + x}{y}} - z \cdot \frac{x}{y}\right|\\ \end{array}\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\begin{array}{l}
\mathbf{if}\;y \le -1.214782750567965144698113996402707065017 \cdot 10^{-69}:\\
\;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{y} \cdot x\right|\\

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

\end{array}
double f(double x, double y, double z) {
        double r2186289 = x;
        double r2186290 = 4.0;
        double r2186291 = r2186289 + r2186290;
        double r2186292 = y;
        double r2186293 = r2186291 / r2186292;
        double r2186294 = r2186289 / r2186292;
        double r2186295 = z;
        double r2186296 = r2186294 * r2186295;
        double r2186297 = r2186293 - r2186296;
        double r2186298 = fabs(r2186297);
        return r2186298;
}

double f(double x, double y, double z) {
        double r2186299 = y;
        double r2186300 = -1.2147827505679651e-69;
        bool r2186301 = r2186299 <= r2186300;
        double r2186302 = 4.0;
        double r2186303 = x;
        double r2186304 = r2186302 + r2186303;
        double r2186305 = r2186304 / r2186299;
        double r2186306 = z;
        double r2186307 = r2186306 / r2186299;
        double r2186308 = r2186307 * r2186303;
        double r2186309 = r2186305 - r2186308;
        double r2186310 = fabs(r2186309);
        double r2186311 = cbrt(r2186305);
        double r2186312 = r2186311 * r2186311;
        double r2186313 = r2186312 * r2186311;
        double r2186314 = r2186303 / r2186299;
        double r2186315 = r2186306 * r2186314;
        double r2186316 = r2186313 - r2186315;
        double r2186317 = fabs(r2186316);
        double r2186318 = r2186301 ? r2186310 : r2186317;
        return r2186318;
}

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 y < -1.2147827505679651e-69

    1. Initial program 2.2

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied div-inv2.3

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

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

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

    if -1.2147827505679651e-69 < y

    1. Initial program 1.1

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Using strategy rm
    3. Applied add-cube-cbrt2.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1.214782750567965144698113996402707065017 \cdot 10^{-69}:\\ \;\;\;\;\left|\frac{4 + x}{y} - \frac{z}{y} \cdot x\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\left(\sqrt[3]{\frac{4 + x}{y}} \cdot \sqrt[3]{\frac{4 + x}{y}}\right) \cdot \sqrt[3]{\frac{4 + x}{y}} - z \cdot \frac{x}{y}\right|\\ \end{array}\]

Reproduce

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