?

Average Accuracy: 99.0% → 99.0%
Time: 6.4s
Precision: binary64
Cost: 25860

?

\[\frac{e^{a}}{e^{a} + e^{b}} \]
\[\begin{array}{l} \mathbf{if}\;e^{b} \leq 0.99:\\ \;\;\;\;e^{-\mathsf{log1p}\left(e^{b}\right)}\\ \mathbf{elif}\;e^{b} \leq 2:\\ \;\;\;\;\frac{1}{1 + e^{-a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{e^{b} + 1}\\ \end{array} \]
(FPCore (a b) :precision binary64 (/ (exp a) (+ (exp a) (exp b))))
(FPCore (a b)
 :precision binary64
 (if (<= (exp b) 0.99)
   (exp (- (log1p (exp b))))
   (if (<= (exp b) 2.0) (/ 1.0 (+ 1.0 (exp (- a)))) (/ 1.0 (+ (exp b) 1.0)))))
double code(double a, double b) {
	return exp(a) / (exp(a) + exp(b));
}
double code(double a, double b) {
	double tmp;
	if (exp(b) <= 0.99) {
		tmp = exp(-log1p(exp(b)));
	} else if (exp(b) <= 2.0) {
		tmp = 1.0 / (1.0 + exp(-a));
	} else {
		tmp = 1.0 / (exp(b) + 1.0);
	}
	return tmp;
}
public static double code(double a, double b) {
	return Math.exp(a) / (Math.exp(a) + Math.exp(b));
}
public static double code(double a, double b) {
	double tmp;
	if (Math.exp(b) <= 0.99) {
		tmp = Math.exp(-Math.log1p(Math.exp(b)));
	} else if (Math.exp(b) <= 2.0) {
		tmp = 1.0 / (1.0 + Math.exp(-a));
	} else {
		tmp = 1.0 / (Math.exp(b) + 1.0);
	}
	return tmp;
}
def code(a, b):
	return math.exp(a) / (math.exp(a) + math.exp(b))
def code(a, b):
	tmp = 0
	if math.exp(b) <= 0.99:
		tmp = math.exp(-math.log1p(math.exp(b)))
	elif math.exp(b) <= 2.0:
		tmp = 1.0 / (1.0 + math.exp(-a))
	else:
		tmp = 1.0 / (math.exp(b) + 1.0)
	return tmp
function code(a, b)
	return Float64(exp(a) / Float64(exp(a) + exp(b)))
end
function code(a, b)
	tmp = 0.0
	if (exp(b) <= 0.99)
		tmp = exp(Float64(-log1p(exp(b))));
	elseif (exp(b) <= 2.0)
		tmp = Float64(1.0 / Float64(1.0 + exp(Float64(-a))));
	else
		tmp = Float64(1.0 / Float64(exp(b) + 1.0));
	end
	return tmp
end
code[a_, b_] := N[(N[Exp[a], $MachinePrecision] / N[(N[Exp[a], $MachinePrecision] + N[Exp[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[a_, b_] := If[LessEqual[N[Exp[b], $MachinePrecision], 0.99], N[Exp[(-N[Log[1 + N[Exp[b], $MachinePrecision]], $MachinePrecision])], $MachinePrecision], If[LessEqual[N[Exp[b], $MachinePrecision], 2.0], N[(1.0 / N[(1.0 + N[Exp[(-a)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(1.0 / N[(N[Exp[b], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\frac{e^{a}}{e^{a} + e^{b}}
\begin{array}{l}
\mathbf{if}\;e^{b} \leq 0.99:\\
\;\;\;\;e^{-\mathsf{log1p}\left(e^{b}\right)}\\

\mathbf{elif}\;e^{b} \leq 2:\\
\;\;\;\;\frac{1}{1 + e^{-a}}\\

\mathbf{else}:\\
\;\;\;\;\frac{1}{e^{b} + 1}\\


\end{array}

Error?

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original99.0%
Target100.0%
Herbie99.0%
\[\frac{1}{1 + e^{b - a}} \]

Derivation?

  1. Split input into 3 regimes
  2. if (exp.f64 b) < 0.98999999999999999

    1. Initial program 97.2%

      \[\frac{e^{a}}{e^{a} + e^{b}} \]
    2. Applied egg-rr97.2%

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

      [Start]97.2

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

      add-exp-log [=>]97.2

      \[ \frac{e^{a}}{\color{blue}{e^{\log \left(e^{a} + e^{b}\right)}}} \]

      div-exp [=>]97.2

      \[ \color{blue}{e^{a - \log \left(e^{a} + e^{b}\right)}} \]
    3. Taylor expanded in a around 0 98.8%

      \[\leadsto e^{\color{blue}{-1 \cdot \log \left(1 + e^{b}\right)}} \]
    4. Simplified98.8%

      \[\leadsto e^{\color{blue}{-\mathsf{log1p}\left(e^{b}\right)}} \]
      Proof

      [Start]98.8

      \[ e^{-1 \cdot \log \left(1 + e^{b}\right)} \]

      mul-1-neg [=>]98.8

      \[ e^{\color{blue}{-\log \left(1 + e^{b}\right)}} \]

      log1p-def [=>]98.8

      \[ e^{-\color{blue}{\mathsf{log1p}\left(e^{b}\right)}} \]

    if 0.98999999999999999 < (exp.f64 b) < 2

    1. Initial program 99.4%

      \[\frac{e^{a}}{e^{a} + e^{b}} \]
    2. Taylor expanded in b around 0 98.2%

      \[\leadsto \color{blue}{\frac{e^{a}}{1 + e^{a}}} \]
    3. Applied egg-rr98.1%

      \[\leadsto \color{blue}{\left(-e^{a}\right) \cdot \frac{1}{\left(-e^{a}\right) + -1}} \]
      Proof

      [Start]98.2

      \[ \frac{e^{a}}{1 + e^{a}} \]

      frac-2neg [=>]98.2

      \[ \color{blue}{\frac{-e^{a}}{-\left(1 + e^{a}\right)}} \]

      div-inv [=>]98.1

      \[ \color{blue}{\left(-e^{a}\right) \cdot \frac{1}{-\left(1 + e^{a}\right)}} \]

      +-commutative [=>]98.1

      \[ \left(-e^{a}\right) \cdot \frac{1}{-\color{blue}{\left(e^{a} + 1\right)}} \]

      distribute-neg-in [=>]98.1

      \[ \left(-e^{a}\right) \cdot \frac{1}{\color{blue}{\left(-e^{a}\right) + \left(-1\right)}} \]

      metadata-eval [=>]98.1

      \[ \left(-e^{a}\right) \cdot \frac{1}{\left(-e^{a}\right) + \color{blue}{-1}} \]
    4. Simplified98.7%

      \[\leadsto \color{blue}{\frac{-1}{\frac{-1}{e^{a}} + -1}} \]
      Proof

      [Start]98.1

      \[ \left(-e^{a}\right) \cdot \frac{1}{\left(-e^{a}\right) + -1} \]

      associate-*r/ [=>]98.2

      \[ \color{blue}{\frac{\left(-e^{a}\right) \cdot 1}{\left(-e^{a}\right) + -1}} \]

      *-rgt-identity [=>]98.2

      \[ \frac{\color{blue}{-e^{a}}}{\left(-e^{a}\right) + -1} \]

      neg-mul-1 [=>]98.2

      \[ \frac{\color{blue}{-1 \cdot e^{a}}}{\left(-e^{a}\right) + -1} \]

      associate-/l* [=>]98.1

      \[ \color{blue}{\frac{-1}{\frac{\left(-e^{a}\right) + -1}{e^{a}}}} \]

      +-commutative [=>]98.1

      \[ \frac{-1}{\frac{\color{blue}{-1 + \left(-e^{a}\right)}}{e^{a}}} \]

      unsub-neg [=>]98.1

      \[ \frac{-1}{\frac{\color{blue}{-1 - e^{a}}}{e^{a}}} \]

      div-sub [=>]63.8

      \[ \frac{-1}{\color{blue}{\frac{-1}{e^{a}} - \frac{e^{a}}{e^{a}}}} \]

      *-inverses [=>]98.7

      \[ \frac{-1}{\frac{-1}{e^{a}} - \color{blue}{1}} \]

      sub-neg [=>]98.7

      \[ \frac{-1}{\color{blue}{\frac{-1}{e^{a}} + \left(-1\right)}} \]

      metadata-eval [=>]98.7

      \[ \frac{-1}{\frac{-1}{e^{a}} + \color{blue}{-1}} \]
    5. Taylor expanded in a around inf 98.7%

      \[\leadsto \color{blue}{\frac{1}{1 + \frac{1}{e^{a}}}} \]
    6. Simplified98.7%

      \[\leadsto \color{blue}{\frac{1}{1 + e^{-a}}} \]
      Proof

      [Start]98.7

      \[ \frac{1}{1 + \frac{1}{e^{a}}} \]

      metadata-eval [<=]98.7

      \[ \frac{1}{1 + \frac{\color{blue}{--1}}{e^{a}}} \]

      distribute-neg-frac [<=]98.7

      \[ \frac{1}{1 + \color{blue}{\left(-\frac{-1}{e^{a}}\right)}} \]

      distribute-neg-frac [=>]98.7

      \[ \frac{1}{1 + \color{blue}{\frac{--1}{e^{a}}}} \]

      metadata-eval [=>]98.7

      \[ \frac{1}{1 + \frac{\color{blue}{1}}{e^{a}}} \]

      exp-neg [<=]98.7

      \[ \frac{1}{1 + \color{blue}{e^{-a}}} \]

    if 2 < (exp.f64 b)

    1. Initial program 99.5%

      \[\frac{e^{a}}{e^{a} + e^{b}} \]
    2. Taylor expanded in a around 0 99.7%

      \[\leadsto \color{blue}{\frac{1}{1 + e^{b}}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification99.0%

    \[\leadsto \begin{array}{l} \mathbf{if}\;e^{b} \leq 0.99:\\ \;\;\;\;e^{-\mathsf{log1p}\left(e^{b}\right)}\\ \mathbf{elif}\;e^{b} \leq 2:\\ \;\;\;\;\frac{1}{1 + e^{-a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{e^{b} + 1}\\ \end{array} \]

Alternatives

Alternative 1
Accuracy99.2%
Cost25920
\[e^{a - \log \left(e^{a} + e^{b}\right)} \]
Alternative 2
Accuracy99.0%
Cost19849
\[\begin{array}{l} \mathbf{if}\;e^{b} \leq 0.99 \lor \neg \left(e^{b} \leq 2\right):\\ \;\;\;\;\frac{1}{e^{b} + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{1 + e^{-a}}\\ \end{array} \]
Alternative 3
Accuracy99.0%
Cost19520
\[\frac{e^{a}}{e^{a} + e^{b}} \]
Alternative 4
Accuracy78.7%
Cost13124
\[\begin{array}{l} \mathbf{if}\;e^{b} \leq 0:\\ \;\;\;\;e^{b} + 1\\ \mathbf{else}:\\ \;\;\;\;-1 + \left(1 + \frac{-1}{a + -2}\right)\\ \end{array} \]
Alternative 5
Accuracy97.8%
Cost6852
\[\begin{array}{l} \mathbf{if}\;a \leq -9 \cdot 10^{+15}:\\ \;\;\;\;-1 + \left(1 + \frac{-1}{a + -2}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{e^{b} + 1}\\ \end{array} \]
Alternative 6
Accuracy77.9%
Cost6596
\[\begin{array}{l} \mathbf{if}\;b \leq -10:\\ \;\;\;\;e^{a}\\ \mathbf{else}:\\ \;\;\;\;-1 + \left(1 + \frac{-1}{a + -2}\right)\\ \end{array} \]
Alternative 7
Accuracy63.8%
Cost576
\[-1 + \left(1 + \frac{-1}{a + -2}\right) \]
Alternative 8
Accuracy52.6%
Cost452
\[\begin{array}{l} \mathbf{if}\;a \leq -1.7:\\ \;\;\;\;\frac{2}{a \cdot a}\\ \mathbf{else}:\\ \;\;\;\;0.5 + a \cdot 0.25\\ \end{array} \]
Alternative 9
Accuracy38.4%
Cost320
\[0.5 + a \cdot 0.25 \]
Alternative 10
Accuracy39.0%
Cost320
\[\frac{-1}{a + -2} \]
Alternative 11
Accuracy38.2%
Cost64
\[0.5 \]

Error

Reproduce?

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

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

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