Use the --timeout flag to change the timeout.
\frac{{\left(\frac{1}{1 + e^{-s}}\right)}^{c_p} \cdot {\left(1 - \frac{1}{1 + e^{-s}}\right)}^{c_n}}{{\left(\frac{1}{1 + e^{-t}}\right)}^{c_p} \cdot {\left(1 - \frac{1}{1 + e^{-t}}\right)}^{c_n}}double f(double c_p, double c_n, double t, double s) {
double r65063963 = 1.0;
double r65063964 = s;
double r65063965 = -r65063964;
double r65063966 = exp(r65063965);
double r65063967 = r65063963 + r65063966;
double r65063968 = r65063963 / r65063967;
double r65063969 = c_p;
double r65063970 = pow(r65063968, r65063969);
double r65063971 = r65063963 - r65063968;
double r65063972 = c_n;
double r65063973 = pow(r65063971, r65063972);
double r65063974 = r65063970 * r65063973;
double r65063975 = t;
double r65063976 = -r65063975;
double r65063977 = exp(r65063976);
double r65063978 = r65063963 + r65063977;
double r65063979 = r65063963 / r65063978;
double r65063980 = pow(r65063979, r65063969);
double r65063981 = r65063963 - r65063979;
double r65063982 = pow(r65063981, r65063972);
double r65063983 = r65063980 * r65063982;
double r65063984 = r65063974 / r65063983;
return r65063984;
}
herbie shell --seed 2019125 +o rules:numerics
(FPCore (c_p c_n t s)
:name "Harley's example"
:pre (and (< 0 c_p) (< 0 c_n))
:herbie-target
(* (pow (/ (+ 1 (exp (- t))) (+ 1 (exp (- s)))) c_p) (pow (/ (+ 1 (exp t)) (+ 1 (exp s))) c_n))
(/ (* (pow (/ 1 (+ 1 (exp (- s)))) c_p) (pow (- 1 (/ 1 (+ 1 (exp (- s))))) c_n)) (* (pow (/ 1 (+ 1 (exp (- t)))) c_p) (pow (- 1 (/ 1 (+ 1 (exp (- t))))) c_n))))