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