Average Error: 0.5 → 0.5
Time: 4.2m
Precision: 64
\[x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6\right)\right) \cdot \left(x1 \cdot x1 + 1\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right)\]
\[\left(\left(x1 \cdot \left(x1 \cdot 3\right)\right) \cdot \frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} + \left(3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x1\right) - x2 \cdot 2}{x1 \cdot x1 + 1} + x1\right)\right) + \left(x1 \cdot x1 + 1\right) \cdot \left(\left(\left(x1 \cdot x1\right) \cdot \left(\frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} \cdot 4 - 6\right) + \frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} \cdot \left(2 \cdot \left(x1 \cdot \left(\frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} - 3\right)\right)\right)\right) + x1\right)\]
x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6\right)\right) \cdot \left(x1 \cdot x1 + 1\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right)
\left(\left(x1 \cdot \left(x1 \cdot 3\right)\right) \cdot \frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} + \left(3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x1\right) - x2 \cdot 2}{x1 \cdot x1 + 1} + x1\right)\right) + \left(x1 \cdot x1 + 1\right) \cdot \left(\left(\left(x1 \cdot x1\right) \cdot \left(\frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} \cdot 4 - 6\right) + \frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} \cdot \left(2 \cdot \left(x1 \cdot \left(\frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} - 3\right)\right)\right)\right) + x1\right)
double f(double x1, double x2) {
        double r33183484 = x1;
        double r33183485 = 2.0;
        double r33183486 = r33183485 * r33183484;
        double r33183487 = 3.0;
        double r33183488 = r33183487 * r33183484;
        double r33183489 = r33183488 * r33183484;
        double r33183490 = x2;
        double r33183491 = r33183485 * r33183490;
        double r33183492 = r33183489 + r33183491;
        double r33183493 = r33183492 - r33183484;
        double r33183494 = r33183484 * r33183484;
        double r33183495 = 1.0;
        double r33183496 = r33183494 + r33183495;
        double r33183497 = r33183493 / r33183496;
        double r33183498 = r33183486 * r33183497;
        double r33183499 = r33183497 - r33183487;
        double r33183500 = r33183498 * r33183499;
        double r33183501 = 4.0;
        double r33183502 = r33183501 * r33183497;
        double r33183503 = 6.0;
        double r33183504 = r33183502 - r33183503;
        double r33183505 = r33183494 * r33183504;
        double r33183506 = r33183500 + r33183505;
        double r33183507 = r33183506 * r33183496;
        double r33183508 = r33183489 * r33183497;
        double r33183509 = r33183507 + r33183508;
        double r33183510 = r33183494 * r33183484;
        double r33183511 = r33183509 + r33183510;
        double r33183512 = r33183511 + r33183484;
        double r33183513 = r33183489 - r33183491;
        double r33183514 = r33183513 - r33183484;
        double r33183515 = r33183514 / r33183496;
        double r33183516 = r33183487 * r33183515;
        double r33183517 = r33183512 + r33183516;
        double r33183518 = r33183484 + r33183517;
        return r33183518;
}

double f(double x1, double x2) {
        double r33183519 = x1;
        double r33183520 = 3.0;
        double r33183521 = r33183519 * r33183520;
        double r33183522 = r33183519 * r33183521;
        double r33183523 = x2;
        double r33183524 = 2.0;
        double r33183525 = r33183523 * r33183524;
        double r33183526 = r33183519 - r33183522;
        double r33183527 = r33183525 - r33183526;
        double r33183528 = r33183519 * r33183519;
        double r33183529 = 1.0;
        double r33183530 = r33183528 + r33183529;
        double r33183531 = r33183527 / r33183530;
        double r33183532 = r33183522 * r33183531;
        double r33183533 = r33183522 - r33183519;
        double r33183534 = r33183533 - r33183525;
        double r33183535 = r33183534 / r33183530;
        double r33183536 = r33183520 * r33183535;
        double r33183537 = r33183536 + r33183519;
        double r33183538 = r33183532 + r33183537;
        double r33183539 = 4.0;
        double r33183540 = r33183531 * r33183539;
        double r33183541 = 6.0;
        double r33183542 = r33183540 - r33183541;
        double r33183543 = r33183528 * r33183542;
        double r33183544 = r33183531 - r33183520;
        double r33183545 = r33183519 * r33183544;
        double r33183546 = r33183524 * r33183545;
        double r33183547 = r33183531 * r33183546;
        double r33183548 = r33183543 + r33183547;
        double r33183549 = r33183548 + r33183519;
        double r33183550 = r33183530 * r33183549;
        double r33183551 = r33183538 + r33183550;
        return r33183551;
}

Error

Bits error versus x1

Bits error versus x2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.5

    \[x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) \cdot \left(\frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1} - 6\right)\right) \cdot \left(x1 \cdot x1 + 1\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 + 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - 2 \cdot x2\right) - x1}{x1 \cdot x1 + 1}\right)\]
  2. Simplified0.5

    \[\leadsto \color{blue}{\left(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x1\right) - x2 \cdot 2}{1 + x1 \cdot x1}\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{x2 \cdot 2 - \left(x1 - \left(3 \cdot x1\right) \cdot x1\right)}{1 + x1 \cdot x1}\right) + \left(1 + x1 \cdot x1\right) \cdot \left(\left(\left(4 \cdot \frac{x2 \cdot 2 - \left(x1 - \left(3 \cdot x1\right) \cdot x1\right)}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right) + \left(\left(\left(\frac{x2 \cdot 2 - \left(x1 - \left(3 \cdot x1\right) \cdot x1\right)}{1 + x1 \cdot x1} - 3\right) \cdot x1\right) \cdot 2\right) \cdot \frac{x2 \cdot 2 - \left(x1 - \left(3 \cdot x1\right) \cdot x1\right)}{1 + x1 \cdot x1}\right) + x1\right)}\]
  3. Using strategy rm
  4. Applied +-commutative0.5

    \[\leadsto \left(\left(x1 + 3 \cdot \frac{\left(\left(3 \cdot x1\right) \cdot x1 - x1\right) - x2 \cdot 2}{1 + x1 \cdot x1}\right) + \left(\left(3 \cdot x1\right) \cdot x1\right) \cdot \frac{x2 \cdot 2 - \left(x1 - \left(3 \cdot x1\right) \cdot x1\right)}{1 + x1 \cdot x1}\right) + \left(1 + x1 \cdot x1\right) \cdot \left(\color{blue}{\left(\left(\left(\left(\frac{x2 \cdot 2 - \left(x1 - \left(3 \cdot x1\right) \cdot x1\right)}{1 + x1 \cdot x1} - 3\right) \cdot x1\right) \cdot 2\right) \cdot \frac{x2 \cdot 2 - \left(x1 - \left(3 \cdot x1\right) \cdot x1\right)}{1 + x1 \cdot x1} + \left(4 \cdot \frac{x2 \cdot 2 - \left(x1 - \left(3 \cdot x1\right) \cdot x1\right)}{1 + x1 \cdot x1} - 6\right) \cdot \left(x1 \cdot x1\right)\right)} + x1\right)\]
  5. Final simplification0.5

    \[\leadsto \left(\left(x1 \cdot \left(x1 \cdot 3\right)\right) \cdot \frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} + \left(3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x1\right) - x2 \cdot 2}{x1 \cdot x1 + 1} + x1\right)\right) + \left(x1 \cdot x1 + 1\right) \cdot \left(\left(\left(x1 \cdot x1\right) \cdot \left(\frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} \cdot 4 - 6\right) + \frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} \cdot \left(2 \cdot \left(x1 \cdot \left(\frac{x2 \cdot 2 - \left(x1 - x1 \cdot \left(x1 \cdot 3\right)\right)}{x1 \cdot x1 + 1} - 3\right)\right)\right)\right) + x1\right)\]

Reproduce

herbie shell --seed 2019121 
(FPCore (x1 x2)
  :name "Rosa's FloatVsDoubleBenchmark"
  (+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2 x1) (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))) (- (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1)) 3)) (* (* x1 x1) (- (* 4 (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))) 6))) (+ (* x1 x1) 1)) (* (* (* 3 x1) x1) (/ (- (+ (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1)))) (* (* x1 x1) x1)) x1) (* 3 (/ (- (- (* (* 3 x1) x1) (* 2 x2)) x1) (+ (* x1 x1) 1))))))