Listing 5: Some unary functions


UDouble<is_correlated>  sin(UDouble<is_correlated>  arg)
{
      if  (is_correlated)
            arg.uncertainty  *=  cos(arg.value);
      else
            arg.uncertainty  *=  fabs(cos(arg.value));
      arg.value  =  sin(arg.value);
      return  arg;
}
UDouble<is_correlated>  exp(UDouble<is_correlated>  arg)
{
      arg.value  =  exp(arg.value);
      if  (is_correlated)
            arg.uncertainty  *=  arg.value;
      else
            arg.uncertainty  *=  fabs(arg.value);
      return  arg;
}
UDouble<is_correlated>  ceil(UDouble<is_correlated>  arg)
{
      arg.value  =  ceil(arg.value);
      arg.uncertainty  =  0.0;
      return  arg;
}
//End of File