Average Error: 5.7 → 0.2
Time: 19.5s
Precision: 64
\[\frac{\left(1 - x\right) \cdot \left(3 - x\right)}{y \cdot 3}\]
\[\frac{\frac{-x}{y} \cdot \left(3 - x\right)}{3} + \frac{\left(1 - \frac{x}{3}\right) \cdot 1}{y}\]
\frac{\left(1 - x\right) \cdot \left(3 - x\right)}{y \cdot 3}
\frac{\frac{-x}{y} \cdot \left(3 - x\right)}{3} + \frac{\left(1 - \frac{x}{3}\right) \cdot 1}{y}
double f(double x, double y) {
        double r504962 = 1.0;
        double r504963 = x;
        double r504964 = r504962 - r504963;
        double r504965 = 3.0;
        double r504966 = r504965 - r504963;
        double r504967 = r504964 * r504966;
        double r504968 = y;
        double r504969 = r504968 * r504965;
        double r504970 = r504967 / r504969;
        return r504970;
}

double f(double x, double y) {
        double r504971 = x;
        double r504972 = -r504971;
        double r504973 = y;
        double r504974 = r504972 / r504973;
        double r504975 = 3.0;
        double r504976 = r504975 - r504971;
        double r504977 = r504974 * r504976;
        double r504978 = r504977 / r504975;
        double r504979 = 1.0;
        double r504980 = r504971 / r504975;
        double r504981 = r504979 - r504980;
        double r504982 = 1.0;
        double r504983 = r504981 * r504982;
        double r504984 = r504983 / r504973;
        double r504985 = r504978 + r504984;
        return r504985;
}

Error

Bits error versus x

Bits error versus y

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original5.7
Target0.1
Herbie0.2
\[\frac{1 - x}{y} \cdot \frac{3 - x}{3}\]

Derivation

  1. Initial program 5.7

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

    \[\leadsto \color{blue}{\frac{3 - x}{3} \cdot \frac{1 - x}{y}}\]
  3. Using strategy rm
  4. Applied div-sub0.1

    \[\leadsto \frac{3 - x}{3} \cdot \color{blue}{\left(\frac{1}{y} - \frac{x}{y}\right)}\]
  5. Using strategy rm
  6. Applied sub-neg0.1

    \[\leadsto \frac{3 - x}{3} \cdot \color{blue}{\left(\frac{1}{y} + \left(-\frac{x}{y}\right)\right)}\]
  7. Applied distribute-rgt-in0.1

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

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

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

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

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y)
  :name "Diagrams.TwoD.Arc:bezierFromSweepQ1 from diagrams-lib-1.3.0.3"

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

  (/ (* (- 1.0 x) (- 3.0 x)) (* y 3.0)))