Average Error: 0.2 → 0.0
Time: 6.8s
Precision: 64
\[1 + \frac{4 \cdot \left(\left(x + y \cdot 0.75\right) - z\right)}{y}\]
\[4 + \left(\frac{x}{y} - \frac{z}{y}\right) \cdot 4\]
1 + \frac{4 \cdot \left(\left(x + y \cdot 0.75\right) - z\right)}{y}
4 + \left(\frac{x}{y} - \frac{z}{y}\right) \cdot 4
double f(double x, double y, double z) {
        double r350696 = 1.0;
        double r350697 = 4.0;
        double r350698 = x;
        double r350699 = y;
        double r350700 = 0.75;
        double r350701 = r350699 * r350700;
        double r350702 = r350698 + r350701;
        double r350703 = z;
        double r350704 = r350702 - r350703;
        double r350705 = r350697 * r350704;
        double r350706 = r350705 / r350699;
        double r350707 = r350696 + r350706;
        return r350707;
}

double f(double x, double y, double z) {
        double r350708 = 4.0;
        double r350709 = x;
        double r350710 = y;
        double r350711 = r350709 / r350710;
        double r350712 = z;
        double r350713 = r350712 / r350710;
        double r350714 = r350711 - r350713;
        double r350715 = r350714 * r350708;
        double r350716 = r350708 + r350715;
        return r350716;
}

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. Initial program 0.2

    \[1 + \frac{4 \cdot \left(\left(x + y \cdot 0.75\right) - z\right)}{y}\]
  2. Simplified0.0

    \[\leadsto \color{blue}{4 \cdot \left(0.75 + \frac{x - z}{y}\right) + 1}\]
  3. Taylor expanded around 0 0.0

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

    \[\leadsto \color{blue}{4 + \frac{x - z}{y} \cdot 4}\]
  5. Using strategy rm
  6. Applied div-sub0.0

    \[\leadsto 4 + \color{blue}{\left(\frac{x}{y} - \frac{z}{y}\right)} \cdot 4\]
  7. Final simplification0.0

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

Reproduce

herbie shell --seed 2020046 
(FPCore (x y z)
  :name "Data.Array.Repa.Algorithms.ColorRamp:rampColorHotToCold from repa-algorithms-3.4.0.1, A"
  :precision binary64
  (+ 1 (/ (* 4 (- (+ x (* y 0.75)) z)) y)))