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