elementwise modulo

    Generalizes a scalar op to tensors.

    All the inputs must have the same number of dimensions. When the
    Op is performed, for each dimension, each input's size for that
    dimension must be the same. As a special case, it can also be 1
    but only if the input's broadcastable flag is True for that
    dimension. In that case, the tensor is (virtually) replicated
    along that dimension to match the size of the others.

    The dtypes of the outputs mirror those of the scalar Op that is
    being generalized to tensors. In particular, if the calculations
    for an output are done inplace on an input, the output type must
    be the same as the corresponding input type (see the doc of
    scalar.ScalarOp to get help about controlling the output type)

    Examples:
      Elemwise(add) # represents + on tensors (x + y)
      Elemwise(add, {0 : 0}) # represents the += operation (x += y)
      Elemwise(add, {0 : 1}) # represents += on the second argument (y += x)
      Elemwise(mul)(rand(10, 5), rand(1, 5)) # the second input is completed
        # along the first dimension to match the first input
      Elemwise(true_div)(rand(10, 5), rand(10, 1)) # same but along the
        # second dimension
      Elemwise(int_div)(rand(1, 5), rand(10, 1)) # the output has size (10, 5)
      Elemwise(log)(rand(3, 4, 5))
    
a != b

    Examples:
    
elementwise addition

    Examples:
    
elementwise multiplication

    Examples:
    
elementwise subtraction

    Examples:
    
elementwise [floor] division (inverse of multiplication)

    Examples:
    
base e logarithm of a

    Examples:
    
square root of a

    Examples:
    
cosine of a

    Examples:
    
sine of a

    Examples:
    
hyperbolic tangent of a

    Examples:
    
elementwise power

    Examples:
    
elementwise [true] division (inverse of multiplication)

    Examples: