Average Error: 0.8 → 0.7
Time: 11.1s
Precision: 64
\[\frac{e^{a}}{e^{a} + e^{b}}\]
\[e^{a - \log \left(e^{a} + e^{b}\right)}\]
\frac{e^{a}}{e^{a} + e^{b}}
e^{a - \log \left(e^{a} + e^{b}\right)}
double f(double a, double b) {
        double r4655738 = a;
        double r4655739 = exp(r4655738);
        double r4655740 = b;
        double r4655741 = exp(r4655740);
        double r4655742 = r4655739 + r4655741;
        double r4655743 = r4655739 / r4655742;
        return r4655743;
}

double f(double a, double b) {
        double r4655744 = a;
        double r4655745 = exp(r4655744);
        double r4655746 = b;
        double r4655747 = exp(r4655746);
        double r4655748 = r4655745 + r4655747;
        double r4655749 = log(r4655748);
        double r4655750 = r4655744 - r4655749;
        double r4655751 = exp(r4655750);
        return r4655751;
}

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Initial program 0.8

    \[\frac{e^{a}}{e^{a} + e^{b}}\]
  2. Using strategy rm
  3. Applied add-exp-log0.8

    \[\leadsto \frac{e^{a}}{\color{blue}{e^{\log \left(e^{a} + e^{b}\right)}}}\]
  4. Applied div-exp0.7

    \[\leadsto \color{blue}{e^{a - \log \left(e^{a} + e^{b}\right)}}\]
  5. Final simplification0.7

    \[\leadsto e^{a - \log \left(e^{a} + e^{b}\right)}\]

Reproduce

herbie shell --seed 2019152 +o rules:numerics
(FPCore (a b)
  :name "Quotient of sum of exps"

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

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