octave: Operator Overloading

 
 34.4.2 Operator Overloading
 ---------------------------
 
 The following table shows, for each built-in numerical operation, the
 corresponding function name to use when providing an overloaded method
 for a user class.
 
 Operation              Method                 Description
 ----------------------------------------------------------------------------
 ‘a + b’                ‘plus (a, b)’          Binary addition
 ‘a - b’                ‘minus (a, b)’         Binary subtraction
 ‘+a’                   ‘uplus (a)’            Unary addition
 ‘-a’                   ‘uminus (a)’           Unary subtraction
 ‘a .* b’               ‘times (a, b)’         Element-wise multiplication
 ‘a * b’                ‘mtimes (a, b)’        Matrix multiplication
 ‘a ./ b’               ‘rdivide (a, b)’       Element-wise right division
 ‘a / b’                ‘mrdivide (a, b)’      Matrix right division
 ‘a .\ b’               ‘ldivide (a, b)’       Element-wise left division
 ‘a \ b’                ‘mldivide (a, b)’      Matrix left division
 ‘a .^ b’               ‘power (a, b)’         Element-wise power
 ‘a ^ b’                ‘mpower (a, b)’        Matrix power
 ‘a < b’                ‘lt (a, b)’            Less than
 ‘a <= b’               ‘le (a, b)’            Less than or equal to
 ‘a > b’                ‘gt (a, b)’            Greater than
 ‘a >= b’               ‘ge (a, b)’            Greater than or equal to
 ‘a == b’               ‘eq (a, b)’            Equal to
 ‘a != b’               ‘ne (a, b)’            Not equal to
 ‘a & b’                ‘and (a, b)’           Logical and
 ‘a | b’                ‘or (a, b)’            Logical or
 ‘!a’                   ‘not (a)’              Logical not
 ‘a'’                   ‘ctranspose (a)’       Complex conjugate transpose
 ‘a.'’                  ‘transpose (a)’        Transpose
 ‘a:b’                  ‘colon (a, b)’         Two element range
 ‘a:b:c’                ‘colon (a, b, c)’      Three element range
 ‘[a, b]’               ‘horzcat (a, b)’       Horizontal concatenation
 ‘[a; b]’               ‘vertcat (a, b)’       Vertical concatenation
 ‘a(s_1,...,s_n)’       ‘subsref (a, s)’       Subscripted reference
 ‘a(s_1,...,s_n) = b’   ‘subsasgn (a, s, b)’   Subscripted assignment
 ‘b(a)’                 ‘subsindex (a)’        Convert object to index
 ‘display’              ‘display (a)’          Object display
 
 Table 34.1: Available overloaded operators and their corresponding class
 method
 
    An example ‘mtimes’ method for the polynomial class might look like
 
      function p = mtimes (a, b)
        p = polynomial (conv (double (a), double (b)));
      endfunction