prod 配列要素の積

## 呼び出し手順

    y=prod(x)
                y=prod(x,orientation)
                y=prod(x,outtype)
                y=prod(x,orientation,outtype)

## 引数

x

  実数, 複素数, 論理値, 多項式または有理数の配列

orientation

  以下のどちらかを指定します

  - 文字列で,使用可能な値は `"*"`, `"r"`, `"c"` または `"m"`

  - 正の整数値

outtype

  文字列で, 使用可能な値は `"native"` または `"double"`.

y

  スカラーまたは配列

## 説明

配列`x`に関して, `y=prod(x)`はスカラー `y`に `x`の全要素の積を返します.

`y=prod(x,orientation)` は `orientation`で指定された方向の `x`の積を`y`に返します:

- `orientation`が1または "r"の場合:

  { y(\mathbf{1},j) = \prod_{\mathbf{i}} x(\mathbf{i},j)}

  または

  y(\mathbf{1},j,k,\ldots) = \prod_{\mathbf{i}} x(\mathbf{i},j,k,\ldots)

- `orientation`が 2 または "c" の場合:

  y(i,\mathbf{1}) = \prod_{\mathbf{j}} x(i,\mathbf{j})

  または

  y(i,\mathbf{1},k,\ldots) = \prod_{j} x(i,\mathbf{j},k,\ldots)

- `orientation` が n の場合:

  y(i_1,\ldots,i_{n-1},\mathbf{1},i_{n+1},\ldots) = \prod_{\mathbf{i_n}} x(i_1,\ldots,i_{n-1},\mathbf{i_n},i_{n+1},\ldots)

- `y=prod(x,"*")` は `y=prod(x)` と等価です.

- `y=prod(x,"m")` は `y=prod(x,orientation)` と等価です. ただし,`orientation` は `x`の1より大きい最初の次元の添字です.

`outtype`引数は積算の動作を規定します:

- float, 多項式, 有理数の配列の場合, 評価は常に浮動小数点演算により行われます. `"double"` と `"native"` オプションは等価です.

- 整数の配列の場合,

  `outtype="native"`の時, 評価は整数演算(モジュロ 2^b, ただし b は使用されるビット数) により行われます.

  `outtype="double"`の時, 評価は浮動小数点演算により行われます.

  デフォルト値は `outtype="native"`です.

- 論理値の配列の場合,

  `outtype="native"`の時, 評価は論理値演算(* は &で置換されます)で行われます.

  `outtype="double"`の時, 評価は浮動小数点演算(%t は1, %f は 0 で置換されます) により行われます.

  デフォルト値は, `outtype="double"`です. このオプションは Matlabとの互換性のために使用されます.

This function applies with identical rules to sparse matrices.

## 例

    A=[1,2;3,4];
    prod(A)
    prod(A,1)

    I=uint8([2 95 103;254 9 0])
    prod(I) //native evaluation
    prod(I,"double")
    prod(I,2,"double")

    s=poly(0,"s");
    P=[s,%i+s;s^2,1];
    prod(P),
    prod(P,2)

    B=[%t %t %f %f];
    prod(B) //evaluation in float
    prod(B,"native") //similar to and(B)

## 参照

- cumprod
- sum