functor (M : ExtendSig->
  sig
    type ('a, 'b) op_t1 = ('a, 'b) M.t
    val ( =$ ) : ('a, 'b) M.t -> '-> bool
    val ( !=$ ) : ('a, 'b) M.t -> '-> bool
    val ( <>$ ) : ('a, 'b) M.t -> '-> bool
    val ( <$ ) : ('a, 'b) M.t -> '-> bool
    val ( >$ ) : ('a, 'b) M.t -> '-> bool
    val ( <=$ ) : ('a, 'b) M.t -> '-> bool
    val ( >=$ ) : ('a, 'b) M.t -> '-> bool
    val ( =. ) : ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
    val ( !=. ) : ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
    val ( <>. ) : ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
    val ( <. ) : ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
    val ( >. ) : ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
    val ( <=. ) : ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
    val ( >=. ) : ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
    val ( =.$ ) : ('a, 'b) M.t -> '-> ('a, 'b) M.t
    val ( !=.$ ) : ('a, 'b) M.t -> '-> ('a, 'b) M.t
    val ( <>.$ ) : ('a, 'b) M.t -> '-> ('a, 'b) M.t
    val ( <.$ ) : ('a, 'b) M.t -> '-> ('a, 'b) M.t
    val ( >.$ ) : ('a, 'b) M.t -> '-> ('a, 'b) M.t
    val ( <=.$ ) : ('a, 'b) M.t -> '-> ('a, 'b) M.t
    val ( >=.$ ) : ('a, 'b) M.t -> '-> ('a, 'b) M.t
    val ( =~ ) : ?eps:float -> ('a, 'b) M.t -> ('a, 'b) M.t -> bool
    val ( =~$ ) : ?eps:float -> ('a, 'b) M.t -> '-> bool
    val ( =~. ) : ?eps:float -> ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
    val ( =~.$ ) : ?eps:float -> ('a, 'b) M.t -> '-> ('a, 'b) M.t
    val ( % ) : (float, 'a) M.t -> (float, 'a) M.t -> (float, 'a) M.t
    val ( %$ ) : (float, 'a) M.t -> float -> (float, 'a) M.t
    val ( ** ) : (float, 'a) M.t -> (float, 'a) M.t -> (float, 'a) M.t
    val ( $** ) : float -> (float, 'a) M.t -> (float, 'a) M.t
    val ( **$ ) : (float, 'a) M.t -> float -> (float, 'a) M.t
  end