## DOTPOWER Element-wise Power Operator

Section: Mathematical Operators

### Usage

Raises one numerical array to another array (elementwise). There are three operators all with the same general syntax:

      y = a .^ b

The result `y` depends on which of the following three situations applies to the arguments `a` and `b`:

1. `a` is a scalar, `b` is an arbitrary `n`-dimensional numerical array, in which case the output is `a` raised to the power of each element of `b`, and the output is the same size as `b`.
2. `a` is an `n`-dimensional numerical array, and `b` is a scalar, then the output is the same size as `a`, and is defined by each element of `a` raised to the power `b`.
3. `a` and `b` are both `n`-dimensional numerical arrays of \emph{the same size}. In this case, each element of the output is the corresponding element of `a` raised to the power defined by the corresponding element of `b`.

The output follows the standard type promotion rules, although types are not generally preserved under the power operation. In particular, integers are automatically converted to `double` type, and negative numbers raised to fractional powers can return complex values.

### Function Internals

There are three formulae for this operator. For the first form

and the second form

and in the third form

### Examples

We demonstrate the three forms of the dot-power operator using some simple examples. First, the case of a scalar raised to a series of values.

    --> a = 2
    a =
      <int32>  - size: [1 1]
     2
    --> b = 1:4
    b =
      <int32>  - size: [1 4]

    Columns 1 to 4
     1  2  3  4
    --> c = a.^b
    c =
      <double>  - size: [1 4]

    Columns 1 to 4
      2   4   8  16

The second case shows a vector raised to a scalar.

    --> c = b.^a
    c =
      <double>  - size: [1 4]

    Columns 1 to 4
      1   4   9  16

The third case shows the most general use of the dot-power operator.

    --> A = [1,2;3,2]
    A =
      <int32>  - size: [2 2]

    Columns 1 to 2
     1  2
     3  2
    --> B = [2,1.5;0.5,0.6]
    B =
      <double>  - size: [2 2]

    Columns 1 to 2
     2.0  1.5
     0.5  0.6
    --> C = A.^B
    C =
      <double>  - size: [2 2]

    Columns 1 to 2
     1.0000000000000000  2.8284271247461903
     1.7320508075688772  1.5157165665103980