BinOp

@implicitNotFound(msg = "No BinOp ${O} instance available to operate on values of type ${X} and ${Y}")
trait BinOp[O <: OpType, @specialized(Boolean, Int, Long, Double) -X, @specialized(Boolean, Int, Long, Double) -Y, @specialized(Boolean, Int, Long, Double) +Z]()

Concrete implementations of BinOp provide primitive-specialized support for performing binary operations on elements of the following objects, as well as the objects themselves:

Appropriate BinOp instances have to be made available in an implicit context in order for the org.saddle.ops.NumericOps methods inherited by the structures above to operate in a seamless fashion.

For example:

 Vec(1,2,3) * Vec(4,5,6) == Vec(4,10,18)

The multiplication above relies on two BinOp implementations: the first is BinOp[Multiply, Vec, Vec, Vec], whose implementation in turn relies on BinOp[Multiply, Int, Int, Int].

class Object
trait Matchable
class Any
class FrFrEOp[OP, X, Y, A, B, C]
class FrScEOp[OP, X, Y, A, B, C]
class SrScEOp[OP, X, A, B, C]
class SrSrEOp[OP, X, A, B, C]
class MatMatElemOp[OP, A, B, C]
class MatSclrElemOp[OP, A, B, C]
class VecSclrElemOp[OP, A, B, C]
class VecVecDot[A, B, C]
class VecVecElemOp[OP, A, B, C]
class VecVecOuter[A, B, C]

Value members

Abstract methods

def apply(a: X, b: Y): Z