Listing 6: One-argument version of
PropagateUncertaintiesBySlope()
UDouble<is_correlated> PropagateUncertaintiesBySlope(
double (* certain_func)(double),
const UDouble<is_correlated>& arg)
{
UDouble<is_correlated> retval;
double sigma_up_value, sigma_down_value;
retval.value = certain_func(arg.value);
sigma_up_value = certain_func(arg.value + arg.uncertainty);
sigma_down_value = certain_func(arg.value - arg.uncertainty);
retval.uncertainty = (sigma_up_value - sigma_down_value) * 0.5;
if (!is_correlated)
retval.uncertainty = fabs(retval.uncertainty);
return retval;
}
//End of File