Listing 8

class Multiplication : public BinaryOp {
public:
   Multiplication(UncertainPtr const & l,
                     UncertainPtr const & r) : BinaryOp(l,r) {}
   virtual double value() const {
      return left->value() * right->value();
   }
   virtual double uComponent(ILeaf const * i) const {
      const double lv( left->value() );
      const double rv( right->value() );
      return rv * left->uComponent(i) + lv * right->uComponent(i);
   }
};