Average Error: 9.4 → 0.1
Time: 12.6s
Precision: 64
\[\frac{x \cdot \left(\frac{x}{y} + 1\right)}{x + 1}\]
\[x \cdot \frac{1 + \frac{x}{y}}{1 + x}\]
\frac{x \cdot \left(\frac{x}{y} + 1\right)}{x + 1}
x \cdot \frac{1 + \frac{x}{y}}{1 + x}
double f(double x, double y) {
        double r669486 = x;
        double r669487 = y;
        double r669488 = r669486 / r669487;
        double r669489 = 1.0;
        double r669490 = r669488 + r669489;
        double r669491 = r669486 * r669490;
        double r669492 = r669486 + r669489;
        double r669493 = r669491 / r669492;
        return r669493;
}

double f(double x, double y) {
        double r669494 = x;
        double r669495 = 1.0;
        double r669496 = y;
        double r669497 = r669494 / r669496;
        double r669498 = r669495 + r669497;
        double r669499 = r669495 + r669494;
        double r669500 = r669498 / r669499;
        double r669501 = r669494 * r669500;
        return r669501;
}

Error

Bits error versus x

Bits error versus y

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original9.4
Target0.1
Herbie0.1
\[\frac{x}{1} \cdot \frac{\frac{x}{y} + 1}{x + 1}\]

Derivation

  1. Initial program 9.4

    \[\frac{x \cdot \left(\frac{x}{y} + 1\right)}{x + 1}\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\left(\frac{x}{y} + 1\right) \cdot \frac{x}{1 + x}}\]
  3. Using strategy rm
  4. Applied clear-num0.2

    \[\leadsto \left(\frac{x}{y} + 1\right) \cdot \color{blue}{\frac{1}{\frac{1 + x}{x}}}\]
  5. Using strategy rm
  6. Applied associate-/r/0.1

    \[\leadsto \left(\frac{x}{y} + 1\right) \cdot \color{blue}{\left(\frac{1}{1 + x} \cdot x\right)}\]
  7. Applied associate-*r*0.2

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

    \[\leadsto \color{blue}{\frac{\frac{x}{y} + 1}{1 + x}} \cdot x\]
  9. Final simplification0.1

    \[\leadsto x \cdot \frac{1 + \frac{x}{y}}{1 + x}\]

Reproduce

herbie shell --seed 2019194 
(FPCore (x y)
  :name "Codec.Picture.Types:toneMapping from JuicyPixels-3.2.6.1"

  :herbie-target
  (* (/ x 1.0) (/ (+ (/ x y) 1.0) (+ x 1.0)))

  (/ (* x (+ (/ x y) 1.0)) (+ x 1.0)))