--- a/src/op-mp.cc
+++ b/src/op-mp.cc
@@ -28,8 +28,32 @@
 #include "ov-mp.h"
 #include "op-mp.h"
 
+DEFUNOP_OP (transpose, mp, /* no-op */)
+DEFUNOP_OP (hermitian, mp, /* no-op */)
+
+/* generate our own version of DEFUNOP_OP */
+#ifdef DEFUNOP_OP
+#undef DEFUNOP_OP
+#endif
+
+#define DEFUNOP_OP(name, t, op)                  \
+  UNOPDECL (name, a)                             \
+  {                                                     \
+    octave_mp retval;                                   \
+    return retval.oct_monop_proxy (a, mpfr_ ## op);     \
+  }
+DEFUNOP_OP (uminus, octave_mp, neg)
+
+#undef DEFUNOP_OP
+#define DEFUNOP_OP(name, t, op)                  \
+  UNOPDECL (name, a)                             \
+  {                                                     \
+    octave_mp retval;                                     \
+    return retval.oct_monocmp_proxy (a, mpfr_ ## op).bool_value ();     \
+  }
+DEFUNOP_OP (not, octave_mp, regular_p)
+
 /* generate our own version of DEFBINOP */
-
 #if defined(DEFBINOP_OP)
 #undef DEFBINOP_OP
 #endif
@@ -43,14 +67,26 @@
 DEFBINOP_OP (add, mp, mp, add)
 DEFBINOP_OP (sub, mp, mp, sub)
 DEFBINOP_OP (mul, mp, mp, mul)
+DEFBINOP_OP (div, mp, mp, div)
 
+/* ldiv is div with inverted args */
+#undef DEFBINOP_OP
+#define DEFBINOP_OP(name, t1, t2, op)                                   \
+  BINOPDECL (name, a1, a2)                                              \
+  {                                                                     \
+    octave_mp retval;                                                   \
+    return  retval.oct_binop_proxy (a2, a1, mpfr_ ## op);               \
+  }
+DEFBINOP_OP (ldiv, mp, mp, div)
+
+#undef DEFBINOP_OP
 /* For the comparisons functions */
 #undef DEFBINOP_OP
 #define DEFBINOP_OP(name, t1, t2, op)                                   \
   BINOPDECL (name, a1, a2)                                              \
   {                                                                     \
     octave_mp retval;                                                   \
-    return  retval.oct_cmp_proxy (a1, a2, mpfr_ ## op);                 \
+    return  retval.oct_bincmp_proxy (a1, a2, mpfr_ ## op);                 \
   }
 
 DEFBINOP_OP (lt, mp, mp, less_p)
@@ -82,10 +118,15 @@
 
 void install_mp_ops()
 {
+  INSTALL_UNOP (op_not, octave_mp, not);
+  INSTALL_UNOP (op_uminus, octave_mp, uminus);
+  INSTALL_UNOP (op_transpose, octave_mp, transpose);
+  INSTALL_UNOP (op_hermitian, octave_mp, hermitian);
+  
   INSTALL_NCUNOP (op_incr, octave_mp, s_incr);
   INSTALL_NCUNOP (op_decr, octave_mp, s_decr);
   
-  //  INSTALL_BINOP (op_eq, octave_mp, octave_mp, eq);
+    //  INSTALL_BINOP (op_eq, octave_mp, octave_mp, eq);
   // 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);
@@ -98,6 +139,12 @@
   INSTALL_BINOP (op_mul, octave_mp, octave_mp, mul);
   INSTALL_BINOP (op_mul, octave_scalar, octave_mp, mul);
   INSTALL_BINOP (op_mul, octave_mp, octave_scalar, mul);
+  INSTALL_BINOP (op_div, octave_mp, octave_mp, div);
+  INSTALL_BINOP (op_div, octave_scalar, octave_mp, div);
+  INSTALL_BINOP (op_div, octave_mp, octave_scalar, div);
+  INSTALL_BINOP (op_ldiv, octave_mp, octave_mp, ldiv);
+  INSTALL_BINOP (op_ldiv, octave_scalar, octave_mp, ldiv);
+  INSTALL_BINOP (op_ldiv, octave_mp, octave_scalar, ldiv);
 
   INSTALL_BINOP (op_lt, octave_mp, octave_mp, lt);
   INSTALL_BINOP (op_lt, octave_scalar, octave_mp, lt);