Average Error: 0.2 → 0.0
Time: 20.9s
Precision: 64
\[\left(d1 \cdot 10 + d1 \cdot d2\right) + d1 \cdot 20\]
\[\left(\left(d2 + 10\right) + 20\right) \cdot d1\]
\left(d1 \cdot 10 + d1 \cdot d2\right) + d1 \cdot 20
\left(\left(d2 + 10\right) + 20\right) \cdot d1
double f(double d1, double d2) {
        double r11608719 = d1;
        double r11608720 = 10.0;
        double r11608721 = r11608719 * r11608720;
        double r11608722 = d2;
        double r11608723 = r11608719 * r11608722;
        double r11608724 = r11608721 + r11608723;
        double r11608725 = 20.0;
        double r11608726 = r11608719 * r11608725;
        double r11608727 = r11608724 + r11608726;
        return r11608727;
}

double f(double d1, double d2) {
        double r11608728 = d2;
        double r11608729 = 10.0;
        double r11608730 = r11608728 + r11608729;
        double r11608731 = 20.0;
        double r11608732 = r11608730 + r11608731;
        double r11608733 = d1;
        double r11608734 = r11608732 * r11608733;
        return r11608734;
}

Error

Bits error versus d1

Bits error versus d2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.2
Target0.0
Herbie0.0
\[d1 \cdot \left(30 + d2\right)\]

Derivation

  1. Initial program 0.2

    \[\left(d1 \cdot 10 + d1 \cdot d2\right) + d1 \cdot 20\]
  2. Simplified0.0

    \[\leadsto \color{blue}{d1 \cdot \left(20 + \left(d2 + 10\right)\right)}\]
  3. Final simplification0.0

    \[\leadsto \left(\left(d2 + 10\right) + 20\right) \cdot d1\]

Reproduce

herbie shell --seed 2019200 
(FPCore (d1 d2)
  :name "FastMath test2"

  :herbie-target
  (* d1 (+ 30.0 d2))

  (+ (+ (* d1 10.0) (* d1 d2)) (* d1 20.0)))