sig
  type ('a, 'b) t
  val equal_scalar : ('a, 'b) Owl_operator.ExtendSig.t -> '-> bool
  val not_equal_scalar : ('a, 'b) Owl_operator.ExtendSig.t -> '-> bool
  val less_scalar : ('a, 'b) Owl_operator.ExtendSig.t -> '-> bool
  val greater_scalar : ('a, 'b) Owl_operator.ExtendSig.t -> '-> bool
  val less_equal_scalar : ('a, 'b) Owl_operator.ExtendSig.t -> '-> bool
  val greater_equal_scalar : ('a, 'b) Owl_operator.ExtendSig.t -> '-> bool
  val elt_equal :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    ('a, 'b) Owl_operator.ExtendSig.t -> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_not_equal :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    ('a, 'b) Owl_operator.ExtendSig.t -> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_less :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    ('a, 'b) Owl_operator.ExtendSig.t -> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_greater :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    ('a, 'b) Owl_operator.ExtendSig.t -> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_less_equal :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    ('a, 'b) Owl_operator.ExtendSig.t -> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_greater_equal :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    ('a, 'b) Owl_operator.ExtendSig.t -> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_equal_scalar :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    '-> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_not_equal_scalar :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    '-> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_less_scalar :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    '-> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_greater_scalar :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    '-> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_less_equal_scalar :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    '-> ('a, 'b) Owl_operator.ExtendSig.t
  val elt_greater_equal_scalar :
    ('a, 'b) Owl_operator.ExtendSig.t ->
    '-> ('a, 'b) Owl_operator.ExtendSig.t
  val fmod :
    (float, 'a) Owl_operator.ExtendSig.t ->
    (float, 'a) Owl_operator.ExtendSig.t ->
    (float, 'a) Owl_operator.ExtendSig.t
  val fmod_scalar :
    (float, 'a) Owl_operator.ExtendSig.t ->
    float -> (float, 'a) Owl_operator.ExtendSig.t
  val pow :
    (float, 'a) Owl_operator.ExtendSig.t ->
    (float, 'a) Owl_operator.ExtendSig.t ->
    (float, 'a) Owl_operator.ExtendSig.t
  val scalar_pow :
    float ->
    (float, 'a) Owl_operator.ExtendSig.t ->
    (float, 'a) Owl_operator.ExtendSig.t
  val pow_scalar :
    (float, 'a) Owl_operator.ExtendSig.t ->
    float -> (float, 'a) Owl_operator.ExtendSig.t
  val approx_equal :
    ?eps:float ->
    ('a, 'b) Owl_operator.ExtendSig.t ->
    ('a, 'b) Owl_operator.ExtendSig.t -> bool
  val approx_equal_scalar :
    ?eps:float -> ('a, 'b) Owl_operator.ExtendSig.t -> '-> bool
  val approx_elt_equal :
    ?eps:float ->
    ('a, 'b) Owl_operator.ExtendSig.t ->
    ('a, 'b) Owl_operator.ExtendSig.t -> ('a, 'b) Owl_operator.ExtendSig.t
  val approx_elt_equal_scalar :
    ?eps:float ->
    ('a, 'b) Owl_operator.ExtendSig.t ->
    '-> ('a, 'b) Owl_operator.ExtendSig.t
end