Average Error: 0.5 → 0.5
Time: 6.3s
Precision: 64
\[\frac{e^{a}}{e^{a} + e^{b}}\]
\[\frac{e^{a}}{e^{a} + e^{b}}\]
double f(double a, double b) {
        double r35164603 = a;
        double r35164604 = exp(r35164603);
        double r35164605 = b;
        double r35164606 = exp(r35164605);
        double r35164607 = r35164604 + r35164606;
        double r35164608 = r35164604 / r35164607;
        return r35164608;
}

double f(double a, double b) {
        double r35164609 = a;
        double r35164610 = exp(r35164609);
        double r35164611 = b;
        double r35164612 = exp(r35164611);
        double r35164613 = r35164610 + r35164612;
        double r35164614 = r35164610 / r35164613;
        return r35164614;
}

\frac{e^{a}}{e^{a} + e^{b}}
\frac{e^{a}}{e^{a} + e^{b}}

Error

Bits error versus a

Bits error versus b

Target

Original0.5
Target0.0
Herbie0.5
\[\frac{1}{1 + e^{b - a}}\]

Derivation

  1. Initial program 0.5

    \[\frac{e^{a}}{e^{a} + e^{b}}\]
  2. Final simplification0.5

    \[\leadsto \frac{e^{a}}{e^{a} + e^{b}}\]

Reproduce

herbie shell --seed 2019102 
(FPCore (a b)
  :name "Quotient of sum of exps"

  :herbie-target
  (/ 1 (+ 1 (exp (- b a))))

  (/ (exp a) (+ (exp a) (exp b))))