--- a/src/op-mp.cc
+++ b/src/op-mp.cc
@@ -27,6 +27,21 @@
 
 #include "ov-mp.h"
 #include "op-mp.h"
+
+// DEFBINOP_OP (add, mp, mp, +)
+
+octave_value octave_mp::oct_binop_add (const octave_base_value& a1, const octave_base_value& a2) { 
+  const octave_mp& v1 = dynamic_cast<const octave_mp&> (a1); 
+  const octave_mp& v2 = dynamic_cast<const octave_mp&> (a2); 
+
+  octave_mp* retval = new octave_mp(static_cast<long unsigned int>(0), v1.prec, v1.rnd); 
+  (void) mpfr_add(retval->scalar, v1.scalar, v2.scalar, v1.rnd);
+  return octave_value (retval);
+ 
+}
+
+// DEFBINOP_OP (sub, mp, mp, -)
+// DEFBINOP_OP (mul, mp, mp, *)
 
 #if defined(DEFBINOP_OP)
 #undef DEFBINOP_OP
@@ -80,4 +95,5 @@
   // INSTALL_BINOP (op_ne, octave_mp, octave_mp, ne);
   // INSTALL_BINOP (op_el_and, octave_mp, octave_mp, el_and);
   // INSTALL_BINOP (op_el_or, octave_mp, octave_mp, el_or);
+  INSTALL_BINOP (octave_mp::oct_binop, octave_mp, octave_mp, add);
 }