Average Error: 0.2 → 0.1
Time: 11.8s
Precision: 64
\[1.0 + \frac{4.0 \cdot \left(\left(x + y \cdot 0.75\right) - z\right)}{y}\]
\[4.0 + \frac{\left(x - z\right) \cdot 4.0}{y}\]
1.0 + \frac{4.0 \cdot \left(\left(x + y \cdot 0.75\right) - z\right)}{y}
4.0 + \frac{\left(x - z\right) \cdot 4.0}{y}
double f(double x, double y, double z) {
        double r15881933 = 1.0;
        double r15881934 = 4.0;
        double r15881935 = x;
        double r15881936 = y;
        double r15881937 = 0.75;
        double r15881938 = r15881936 * r15881937;
        double r15881939 = r15881935 + r15881938;
        double r15881940 = z;
        double r15881941 = r15881939 - r15881940;
        double r15881942 = r15881934 * r15881941;
        double r15881943 = r15881942 / r15881936;
        double r15881944 = r15881933 + r15881943;
        return r15881944;
}

double f(double x, double y, double z) {
        double r15881945 = 4.0;
        double r15881946 = x;
        double r15881947 = z;
        double r15881948 = r15881946 - r15881947;
        double r15881949 = r15881948 * r15881945;
        double r15881950 = y;
        double r15881951 = r15881949 / r15881950;
        double r15881952 = r15881945 + r15881951;
        return r15881952;
}

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.0 + \frac{4.0 \cdot \left(\left(x + y \cdot 0.75\right) - z\right)}{y}\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(0.75 + \frac{x - z}{y}, 4.0, 1.0\right)}\]
  3. Taylor expanded around 0 0.0

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

    \[\leadsto \color{blue}{\frac{4.0 \cdot \left(x - z\right)}{y} + 4.0}\]
  5. Final simplification0.1

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

Reproduce

herbie shell --seed 2019168 +o rules:numerics
(FPCore (x y z)
  :name "Data.Array.Repa.Algorithms.ColorRamp:rampColorHotToCold from repa-algorithms-3.4.0.1, A"
  (+ 1.0 (/ (* 4.0 (- (+ x (* y 0.75)) z)) y)))