Average Error: 0.1 → 0.2
Time: 2.3s
Precision: 64
\[1 + \frac{4 \cdot \left(\left(x + y \cdot 0.25\right) - z\right)}{y}\]
\[\frac{4}{y} \cdot \left(x - z\right) + 2\]
1 + \frac{4 \cdot \left(\left(x + y \cdot 0.25\right) - z\right)}{y}
\frac{4}{y} \cdot \left(x - z\right) + 2
double f(double x, double y, double z) {
        double r187437 = 1.0;
        double r187438 = 4.0;
        double r187439 = x;
        double r187440 = y;
        double r187441 = 0.25;
        double r187442 = r187440 * r187441;
        double r187443 = r187439 + r187442;
        double r187444 = z;
        double r187445 = r187443 - r187444;
        double r187446 = r187438 * r187445;
        double r187447 = r187446 / r187440;
        double r187448 = r187437 + r187447;
        return r187448;
}

double f(double x, double y, double z) {
        double r187449 = 4.0;
        double r187450 = y;
        double r187451 = r187449 / r187450;
        double r187452 = x;
        double r187453 = z;
        double r187454 = r187452 - r187453;
        double r187455 = r187451 * r187454;
        double r187456 = 2.0;
        double r187457 = r187455 + r187456;
        return r187457;
}

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. Taylor expanded around 0 0.0

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

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

Reproduce

herbie shell --seed 2019304 
(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)))