}
-// Computes the odds of survival.
+// Computes the odds of survival as a sigmoid function.
double Virus::survival() const {
- double z = exp(-energy);
- return z/(1+z);
+ //double z = exp(-energy);
+ //return z/(1+z);
+ return (energy<0.0) ? 1.0/(1.0+exp(energy)) : exp(-energy)/(1.0+exp(-energy));
}
-// Computes the odds of survival.
+// Computes the odds of survival as a sigmoid function,
+// relative to average energy.
double Virus::survival(double Eavg) const {
- double z = exp(Eavg-energy);
- return z/(1+z);
+ //double z = exp(Eavg-energy);
+ //return z/(1+z);
+ double dE = Eavg - energy;
+ return (dE>0.0) ? 1.0/(1.0+exp(-dE)) : exp(dE)/(1.0+exp(dE));
}