Average Error: 0.1 → 0.0
Time: 7.0s
Precision: 64
\[1 + \frac{4 \cdot \left(\left(x + y \cdot 0.25\right) - z\right)}{y}\]
\[4 \cdot \left(0.25 + \frac{x - z}{y}\right) + 1\]
1 + \frac{4 \cdot \left(\left(x + y \cdot 0.25\right) - z\right)}{y}
4 \cdot \left(0.25 + \frac{x - z}{y}\right) + 1
double f(double x, double y, double z) {
        double r339279 = 1.0;
        double r339280 = 4.0;
        double r339281 = x;
        double r339282 = y;
        double r339283 = 0.25;
        double r339284 = r339282 * r339283;
        double r339285 = r339281 + r339284;
        double r339286 = z;
        double r339287 = r339285 - r339286;
        double r339288 = r339280 * r339287;
        double r339289 = r339288 / r339282;
        double r339290 = r339279 + r339289;
        return r339290;
}

double f(double x, double y, double z) {
        double r339291 = 4.0;
        double r339292 = 0.25;
        double r339293 = x;
        double r339294 = z;
        double r339295 = r339293 - r339294;
        double r339296 = y;
        double r339297 = r339295 / r339296;
        double r339298 = r339292 + r339297;
        double r339299 = r339291 * r339298;
        double r339300 = 1.0;
        double r339301 = r339299 + r339300;
        return r339301;
}

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.1

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

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

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

Reproduce

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