Average Error: 29.1 → 29.1
Time: 9.9s
Precision: binary64
Cost: 19904
\[\frac{2}{1 + e^{-2 \cdot x}} - 1 \]
\[\log \left(e^{-0.3333333333333333 + \frac{0.6666666666666666}{1 + e^{x \cdot -2}}}\right) \cdot 3 \]
(FPCore (x y) :precision binary64 (- (/ 2.0 (+ 1.0 (exp (* -2.0 x)))) 1.0))
(FPCore (x y)
 :precision binary64
 (*
  (log
   (exp
    (+ -0.3333333333333333 (/ 0.6666666666666666 (+ 1.0 (exp (* x -2.0)))))))
  3.0))
double code(double x, double y) {
	return (2.0 / (1.0 + exp((-2.0 * x)))) - 1.0;
}
double code(double x, double y) {
	return log(exp((-0.3333333333333333 + (0.6666666666666666 / (1.0 + exp((x * -2.0))))))) * 3.0;
}
real(8) function code(x, y)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    code = (2.0d0 / (1.0d0 + exp(((-2.0d0) * x)))) - 1.0d0
end function
real(8) function code(x, y)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    code = log(exp(((-0.3333333333333333d0) + (0.6666666666666666d0 / (1.0d0 + exp((x * (-2.0d0)))))))) * 3.0d0
end function
public static double code(double x, double y) {
	return (2.0 / (1.0 + Math.exp((-2.0 * x)))) - 1.0;
}
public static double code(double x, double y) {
	return Math.log(Math.exp((-0.3333333333333333 + (0.6666666666666666 / (1.0 + Math.exp((x * -2.0))))))) * 3.0;
}
def code(x, y):
	return (2.0 / (1.0 + math.exp((-2.0 * x)))) - 1.0
def code(x, y):
	return math.log(math.exp((-0.3333333333333333 + (0.6666666666666666 / (1.0 + math.exp((x * -2.0))))))) * 3.0
function code(x, y)
	return Float64(Float64(2.0 / Float64(1.0 + exp(Float64(-2.0 * x)))) - 1.0)
end
function code(x, y)
	return Float64(log(exp(Float64(-0.3333333333333333 + Float64(0.6666666666666666 / Float64(1.0 + exp(Float64(x * -2.0))))))) * 3.0)
end
function tmp = code(x, y)
	tmp = (2.0 / (1.0 + exp((-2.0 * x)))) - 1.0;
end
function tmp = code(x, y)
	tmp = log(exp((-0.3333333333333333 + (0.6666666666666666 / (1.0 + exp((x * -2.0))))))) * 3.0;
end
code[x_, y_] := N[(N[(2.0 / N[(1.0 + N[Exp[N[(-2.0 * x), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 1.0), $MachinePrecision]
code[x_, y_] := N[(N[Log[N[Exp[N[(-0.3333333333333333 + N[(0.6666666666666666 / N[(1.0 + N[Exp[N[(x * -2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision] * 3.0), $MachinePrecision]
\frac{2}{1 + e^{-2 \cdot x}} - 1
\log \left(e^{-0.3333333333333333 + \frac{0.6666666666666666}{1 + e^{x \cdot -2}}}\right) \cdot 3

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 29.1

    \[\frac{2}{1 + e^{-2 \cdot x}} - 1 \]
  2. Applied egg-rr30.1

    \[\leadsto \color{blue}{\log \left({\left(\sqrt[3]{e^{\mathsf{expm1}\left(\mathsf{log1p}\left(1\right) - \mathsf{log1p}\left({\left(e^{x}\right)}^{-2}\right)\right)}}\right)}^{2}\right) + \log \left(\sqrt[3]{e^{\mathsf{expm1}\left(\mathsf{log1p}\left(1\right) - \mathsf{log1p}\left({\left(e^{x}\right)}^{-2}\right)\right)}}\right)} \]
  3. Simplified30.1

    \[\leadsto \color{blue}{\log \left(\sqrt[3]{e^{\mathsf{expm1}\left(\mathsf{log1p}\left(1\right) - \mathsf{log1p}\left({\left(e^{x}\right)}^{-2}\right)\right)}}\right) \cdot 3} \]
    Proof
    (*.f64 (log.f64 (cbrt.f64 (exp.f64 (expm1.f64 (-.f64 (log1p.f64 1) (log1p.f64 (pow.f64 (exp.f64 x) -2))))))) 3): 0 points increase in error, 0 points decrease in error
    (Rewrite<= *-commutative_binary64 (*.f64 3 (log.f64 (cbrt.f64 (exp.f64 (expm1.f64 (-.f64 (log1p.f64 1) (log1p.f64 (pow.f64 (exp.f64 x) -2))))))))): 0 points increase in error, 0 points decrease in error
    (*.f64 (Rewrite<= metadata-eval (+.f64 2 1)) (log.f64 (cbrt.f64 (exp.f64 (expm1.f64 (-.f64 (log1p.f64 1) (log1p.f64 (pow.f64 (exp.f64 x) -2)))))))): 0 points increase in error, 0 points decrease in error
    (Rewrite<= distribute-lft1-in_binary64 (+.f64 (*.f64 2 (log.f64 (cbrt.f64 (exp.f64 (expm1.f64 (-.f64 (log1p.f64 1) (log1p.f64 (pow.f64 (exp.f64 x) -2)))))))) (log.f64 (cbrt.f64 (exp.f64 (expm1.f64 (-.f64 (log1p.f64 1) (log1p.f64 (pow.f64 (exp.f64 x) -2))))))))): 0 points increase in error, 0 points decrease in error
    (+.f64 (Rewrite<= log-pow_binary64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (expm1.f64 (-.f64 (log1p.f64 1) (log1p.f64 (pow.f64 (exp.f64 x) -2)))))) 2))) (log.f64 (cbrt.f64 (exp.f64 (expm1.f64 (-.f64 (log1p.f64 1) (log1p.f64 (pow.f64 (exp.f64 x) -2)))))))): 3 points increase in error, 1 points decrease in error
  4. Applied egg-rr30.1

    \[\leadsto \log \color{blue}{\left(0 + \sqrt[3]{e^{\frac{2}{1 + {\left(e^{x}\right)}^{-2}} + -1}}\right)} \cdot 3 \]
  5. Simplified29.1

    \[\leadsto \log \color{blue}{\left(e^{-0.3333333333333333 + \frac{0.6666666666666666}{1 + {\left(e^{x}\right)}^{-2}}}\right)} \cdot 3 \]
    Proof
    (exp.f64 (+.f64 -1/3 (/.f64 2/3 (+.f64 1 (pow.f64 (exp.f64 x) -2))))): 0 points increase in error, 0 points decrease in error
    (exp.f64 (+.f64 (Rewrite<= metadata-eval (*.f64 -1 1/3)) (/.f64 2/3 (+.f64 1 (pow.f64 (exp.f64 x) -2))))): 0 points increase in error, 0 points decrease in error
    (exp.f64 (+.f64 (*.f64 -1 1/3) (/.f64 (Rewrite<= metadata-eval (*.f64 2 1/3)) (+.f64 1 (pow.f64 (exp.f64 x) -2))))): 0 points increase in error, 0 points decrease in error
    (exp.f64 (+.f64 (*.f64 -1 1/3) (Rewrite<= associate-*l/_binary64 (*.f64 (/.f64 2 (+.f64 1 (pow.f64 (exp.f64 x) -2))) 1/3)))): 0 points increase in error, 0 points decrease in error
    (exp.f64 (Rewrite<= distribute-rgt-in_binary64 (*.f64 1/3 (+.f64 -1 (/.f64 2 (+.f64 1 (pow.f64 (exp.f64 x) -2))))))): 0 points increase in error, 0 points decrease in error
    (exp.f64 (*.f64 1/3 (Rewrite<= +-commutative_binary64 (+.f64 (/.f64 2 (+.f64 1 (pow.f64 (exp.f64 x) -2))) -1)))): 0 points increase in error, 0 points decrease in error
    (exp.f64 (Rewrite<= *-commutative_binary64 (*.f64 (+.f64 (/.f64 2 (+.f64 1 (pow.f64 (exp.f64 x) -2))) -1) 1/3))): 0 points increase in error, 0 points decrease in error
    (Rewrite=> exp-prod_binary64 (pow.f64 (exp.f64 (+.f64 (/.f64 2 (+.f64 1 (pow.f64 (exp.f64 x) -2))) -1)) 1/3)): 0 points increase in error, 0 points decrease in error
    (Rewrite=> unpow1/3_binary64 (cbrt.f64 (exp.f64 (+.f64 (/.f64 2 (+.f64 1 (pow.f64 (exp.f64 x) -2))) -1)))): 74 points increase in error, 54 points decrease in error
    (Rewrite<= +-lft-identity_binary64 (+.f64 0 (cbrt.f64 (exp.f64 (+.f64 (/.f64 2 (+.f64 1 (pow.f64 (exp.f64 x) -2))) -1))))): 0 points increase in error, 0 points decrease in error
  6. Applied egg-rr29.1

    \[\leadsto \log \left(e^{-0.3333333333333333 + \frac{0.6666666666666666}{1 + \color{blue}{e^{x \cdot -2}}}}\right) \cdot 3 \]
  7. Final simplification29.1

    \[\leadsto \log \left(e^{-0.3333333333333333 + \frac{0.6666666666666666}{1 + e^{x \cdot -2}}}\right) \cdot 3 \]

Alternatives

Alternative 1
Error29.1
Cost13440
\[3 \cdot \left(-0.3333333333333333 + \frac{0.6666666666666666}{1 + {\left(e^{x}\right)}^{-2}}\right) \]
Alternative 2
Error29.1
Cost6976
\[\frac{2}{1 + e^{x \cdot -2}} + -1 \]

Error

Reproduce

herbie shell --seed 2022334 
(FPCore (x y)
  :name "Logistic function from Lakshay Garg"
  :precision binary64
  (- (/ 2.0 (+ 1.0 (exp (* -2.0 x)))) 1.0))