Listing 12

double GTL::uncertainty(UncertainPtr const & u) {
   Set inputs;
   u->dependsOn(inputs);
   const Set::const iterator end( inputs.end() );
   double uncertainty = 0.0;
   Set::const iterator it;
   for(it=inputs.begin();it!=end;++it) {
      const double uc( u->uComponent(*it) );
      uncertainty += uc*uc;
   }
   return std::sqrt(uncertainty);
}