sig
  type ('a, 'b) t
  val add :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> ('a, 'b) Owl_operator.BasicSig.t
  val sub :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> ('a, 'b) Owl_operator.BasicSig.t
  val mul :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> ('a, 'b) Owl_operator.BasicSig.t
  val div :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> ('a, 'b) Owl_operator.BasicSig.t
  val add_scalar :
    ('a, 'b) Owl_operator.BasicSig.t ->
    '-> ('a, 'b) Owl_operator.BasicSig.t
  val sub_scalar :
    ('a, 'b) Owl_operator.BasicSig.t ->
    '-> ('a, 'b) Owl_operator.BasicSig.t
  val mul_scalar :
    ('a, 'b) Owl_operator.BasicSig.t ->
    '-> ('a, 'b) Owl_operator.BasicSig.t
  val div_scalar :
    ('a, 'b) Owl_operator.BasicSig.t ->
    '-> ('a, 'b) Owl_operator.BasicSig.t
  val scalar_add :
    '->
    ('a, 'b) Owl_operator.BasicSig.t -> ('a, 'b) Owl_operator.BasicSig.t
  val scalar_sub :
    '->
    ('a, 'b) Owl_operator.BasicSig.t -> ('a, 'b) Owl_operator.BasicSig.t
  val scalar_mul :
    '->
    ('a, 'b) Owl_operator.BasicSig.t -> ('a, 'b) Owl_operator.BasicSig.t
  val scalar_div :
    '->
    ('a, 'b) Owl_operator.BasicSig.t -> ('a, 'b) Owl_operator.BasicSig.t
  val equal :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> bool
  val not_equal :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> bool
  val greater :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> bool
  val less :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> bool
  val greater_equal :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> bool
  val less_equal :
    ('a, 'b) Owl_operator.BasicSig.t ->
    ('a, 'b) Owl_operator.BasicSig.t -> bool
end