Listing 7: Some simple binary functions


UDouble::UDouble<is_correlated>  
&operator  +=(const  UDouble<is_correlated>&  ud)
{
   if  (is_correlated)
       uncertainty  +=  ud.uncertainty;
   else
       uncertainty  =  hypot(uncertainty,  ud.uncertainty);
   value  +=  ud.value;
   return  *this;
}
UDouble::UDouble<is_correlated>  
&operator  /=(const  UDouble<is_correlated>&  ud)
{
   if  (is_correlated)
       uncertainty  =  uncertainty  /  ud.value
                     -  (ud.uncertainty  *  value)  /  (ud.value  *  ud.value);
   else
       uncertainty  = 
           hypot(uncertainty  /  ud.value,
                 (ud.uncertainty  *  value)  /  (ud.value  *  ud.value));
   value  /=  ud.value;
   return  *this;
}
//End of File