# Vnano Math プラグイン群
(org.vcssl.nano.plugin.math パッケージ)

## 概要

このパッケージ/サブパッケージ内のプラグイン群は、Vnano (VCSSL nano) のスクリプトから利用できる、初等的な数学・統計関数などを提供します。
なお、このプラグイン群の提供機能は、VCSSL の標準ライブラリである VCSSL Math ライブラリ および math.StatisticalFunction ライブラリ の機能のサブセット（※）になっています。 そのため、VCSSL のスクリプトにおいても、ほぼ同様の機能が標準で利用可能です。 ただし、その際は VCSSL スクリプトの先頭で「 import Math; import math.StatisticalFunction; 」と記述し、ライブラリを読み込む必要があります。

※ このプラグイン群が提供するいくつかの数学関数（ sin 関数など ）は、スカラだけでなく配列に対して処理を行えるように拡張されています。 この機能は現状ではVnanoでのみ対応しており、VCSSLではまだサポートされていません。

## 提供プラグインおよび機能一覧

MathElementaryXnci1Plugin
  初等的な数学関数などを提供するプラグインです。
  変数: PI
  関数: rad(degree) / deg(radian) / sin(x) / cos(x) / tan(x) / asin(x) / acos(x) / atan(x) / sqrt(x) / ln(x) / log10(x) / pow(x,exponent) / exp(x) / abs(x)
MathStatisticalXnci1Plugin
  初等的な統計関数などを提供するプラグインです。
  関数: sum(...) / sum(array) / mean(...) / mean(array) / van(...) / van(array) / van1(...) / van1(array) / sdn(...) / sdn(array) / sdn1(...) / sdn1(array)

## ライセンス

上記のプラグインは全て CC0 で公開されています。

## MathElementaryXnci1Plugin
(org.vcssl.nano.math.xnci1.MathElementaryXnci1Plugin)

初等的な数学関数などを提供するプラグインです。

### 変数

変数 | PI
--- | ---
値 | 円周率の値を格納しています。
データ型 | float (定数)

### 関数

関数 | rad( degree )
--- | ---
機能 | 度からラジアンへの変換関数です。引数 degree に指定した度の値が、ラジアンに変換されて返されます。引数に配列を指定した場合は、その各要素の値が変換されます。 なお、変換結果の値の範囲は特に調整されないため、負の度の値に対しては負のラジアン値が求まり、360度を超える値に対しては 2π を超えるラジアン値が求まります。
宣言形式 | float[]...[] rad( const float &degree[]...[] )
引数 | (float型、任意次元) degree: ラジアンに変換したい度の値。
戻り値 | (float型、引数と同次元・同要素数) ラジアンに変換された値。
使用例 | print( rad(180.0) ); // 3.14...

関数 | deg( radian )
--- | ---
機能 | ラジアンから度への変換関数です。引数 radian に指定したラジアンの値が、度に変換されて返されます。引数に配列を指定した場合は、その各要素の値が変換されます。 なお、変換結果の値の範囲は特に調整されないため、負のラジアンに対しては負の度が求まり、2πを超えるラジアンに対しては 360 度を超える値が求まります。
宣言形式 | float[]...[] deg( const float &radian[]...[] )
引数 | (float型、任意次元) radian: 度に変換したい度の値。
戻り値 | (float型、引数と同次元・同要素数) 度に変換された値。
使用例 | print( deg(PI) ); // 180.0

関数 | sin( x )
--- | ---
機能 | 正弦（サイン）関数です。引数 x の単位はラジアンで指定します。引数 x に配列を指定した場合は、その各要素 x[i] に対する sin(x[i]) の値を格納する配列が返されます。
宣言形式 | float[]...[] sin( const float &x[]...[] )
引数 | (float型、任意次元) x: ラジアン単位での、正弦関数の引数。
戻り値 | (float型、引数と同次元・同要素数) 正弦関数の値。
使用例 | print( sin(PI/2.0) ); // 1.0

関数 | cos( x )
--- | ---
機能 | 余弦（コサイン）関数です。引数 x の単位はラジアンで指定します。引数 x に配列を指定した場合は、その各要素 x[i] に対する cos(x[i]) の値を格納する配列が返されます。
宣言形式 | float[]...[] cos( const float &x[]...[] )
引数 | (float型、任意次元) x: ラジアン単位での、余弦関数の引数。
戻り値 | (float型、引数と同次元・同要素数) 余弦関数の値。
使用例 | print( cos(PI*2.0) ); // 1.0

関数 | tan( x )
--- | ---
機能 | 正接（タンジェント）関数です。引数 x の単位はラジアンで指定します。引数 x に配列を指定した場合は、その各要素 x[i] に対する tan(x[i]) の値を格納する配列が返されます。
宣言形式 | float[]...[] tan( const float &x[]...[] )
引数 | (float型、任意次元) x: ラジアン単位での、正接関数の引数。
戻り値 | (float型、引数と同次元・同要素数) 正接関数の値。
使用例 | print( tan(PI/4.0) ); // 0.99999... (真の値は 1 ですが、結果との不一致は表現精度や計算精度に関する微小な数値誤差によるものであり、バグではありません)

関数 | asin( x )
--- | ---
機能 | 正弦関数の逆関数（アークサイン）です。結果 x の単位はラジアンです。引数 x に配列を指定した場合は、その各要素 x[i] に対する asin(x[i]) の値を格納する配列が返されます。
宣言形式 | float[]...[] asin( const float &x[]...[] )
引数 | (float型、任意次元) x: 逆正弦関数の引数。
戻り値 | (float型、引数と同次元・同要素数) ラジアン単位での、逆正接関数の値。
使用例 | print( asin(1.0) ); // 1.5707963... (≒π/2)

関数 | acos( x )
--- | ---
機能 | 余弦関数の逆関数（アークサイン）です。結果 x の単位はラジアンです。引数 x に配列を指定した場合は、その各要素 x[i] に対する acos(x[i]) の値を格納する配列が返されます。
宣言形式 | float[]...[] acos( const float &x[]...[] )
引数 | (float型、任意次元) x: 逆余弦関数の引数。
戻り値 | (float型、引数と同次元・同要素数) ラジアン単位での、逆余弦関数の値。
使用例 | print( acos(-1.0) ); // 3.14... (≒π)

関数 | atan( x )
--- | ---
機能 | 正接関数の逆関数（アークタンジェント）です。結果 x の単位はラジアンです。引数 x に配列を指定した場合は、その各要素に対する atan(x[i]) の値を格納する配列が返されます。
宣言形式 | float[]...[] atan( const float &x[]...[] )
引数 | (float型、任意次元) x: 逆正接関数の引数。
戻り値 | (float型、引数と同次元・同要素数) ラジアン単位での、逆正接関数の値。
使用例 | print( atan(1.0) ); // 0.78539... (≒π/4)

関数 | sqrt( x )
--- | ---
機能 | 平方根を求める関数です。引数 x に配列を指定した場合は、その各要素 x[i] に対する sqrt(x[i]) の値を格納する配列が返されます。
宣言形式 | float[]...[] sqrt( const float &x[]...[] )
引数 | (float型、任意次元) x: 平方根を求めたい値。
戻り値 | (float型、引数と同次元・同要素数) 平方根の値。
使用例 | print( sqrt(4.0) ); // 2.0

関数 | ln( x )
--- | ---
機能 | 自然数 e を底とする対数関数（自然対数）です。引数 x に配列を指定した場合は、その各要素 x[i] に対する ln(x[i]) の値を格納する配列が返されます。
宣言形式 | float[]...[] ln( const float &x[]...[] )
引数 | (float型、任意次元) x: 自然対数を求めたい値。
戻り値 | (float型、引数と同次元・同要素数) 自然対数の値。
使用例 | print( ln(10.0) ); // 2.3025...

関数 | log10( x )
--- | ---
機能 | 10 を底とする対数関数（常用対数）です。引数に配列を指定した場合は、その各要素に対する常用対数値を格納する配列が返されます。
宣言形式 | float[]...[] log10( const float &x[]...[] )
引数 | (float型、任意次元) x: 常用対数を求めたい値。
戻り値 | (float型、引数と同次元・同要素数) 常用対数の値。
使用例 | print( log10(10.0) ); // 1.0

関数 | pow( x, exponent )
--- | ---
機能 | x の exponent 乗を求める関数です。引数 x に配列を指定した場合は、その各要素に対する exponent 乗の値を格納する配列が返されます。
宣言形式 | float[]...[] pow( const float &x[]...[], const float &exponent )
引数 | (float型、任意次元) x: 「機能」の項目参照。 (float型) exponent: 「機能」の項目参照。
戻り値 | (float型、引数と同次元・同要素数) x の exponent 乗の値。
使用例 | print( pow(2.0,3.0) ); // 8.0

関数 | exp( exponent )
--- | ---
機能 | 自然対数の低 e の exponent 乗を求める関数です。引数に配列を指定した場合は、その各要素を指数とした（～乗をとった）値を格納する配列が返されます。
宣言形式 | float[]...[] exp( const float &exponent[]...[] )
引数 | (float型、任意次元) exponent: 「機能」の項目参照。
戻り値 | (float型、引数と同次元・同要素数) 自然対数の低 e の exponent 乗の値。
使用例 | print( exp(2.0) ); // 7.38905... (≒ e の2乗)

関数 | abs( x )
--- | ---
機能 | 絶対値関数です。引数に配列を指定した場合は、その各要素の絶対値を格納する配列が返されます。
宣言形式 | float[]...[] abs( const float &x[]...[] )
引数 | (float型、任意次元) x: 絶対値を求めたい値。
戻り値 | (float型、引数と同次元・同要素数) 絶対値。
使用例 | print( abs(-1.23) ); // 1.23

## MathStatisticalXnci1Plugin
(org.vcssl.nano.math.xnci1.MathStatisticalXnci1Plugin)

初等的な統計関数などを提供するプラグインです。

### 関数

関数 | sum(...)
--- | ---
機能 | 和を求める関数です。
宣言形式 | float sum( ... float )
引数 | (float型、任意個数) 和を求めたい値。
戻り値 | (float型) 和の値。
使用例 | print( sum(1.0, 2.5, 4.0) ); // 7.5

関数 | sum( array )
--- | ---
機能 | 配列要素の和を求める関数です。
宣言形式 | float sum( float array[] )
引数 | (float型、1次元配列) 和を求めたい値を格納する配列。
戻り値 | (float型) 和の値。
使用例 | float array[3]; array[0] = 1.0; array[1] = 2.5; array[2] = 4.0; print( sum(array) ); // 7.5

関数 | mean(...)
--- | ---
機能 | 平均値（算術平均）を求める関数です。
宣言形式 | float mean( ... float )
引数 | (float型、任意個数) 平均値を求めたい値。
戻り値 | (float型) 平均値。
使用例 | print( mean(1.0, 2.5, 4.0) ); // 2.5

関数 | mean( array )
--- | ---
機能 | 配列要素の平均値（算術平均）を求める関数です。
宣言形式 | float mean( float array[] )
引数 | (float型、1次元配列) 平均値を求めたい値を格納する配列。
戻り値 | (float型) 平均値。
使用例 | float array[3]; array[0] = 1.0; array[1] = 2.5; array[2] = 4.0; print( mean(array) ); // 2.5

関数 | van(...)
--- | ---
機能 | 分散（ 分母： N ）を求める関数です。
宣言形式 | float van( ... float )
引数 | (float型、任意個数) 分散を求めたい値。
戻り値 | (float型) 分散の値（ 分母： n ）。
使用例 | print( van(1.0, 2.5, 4.0) ); // 1.5

関数 | van( array )
--- | ---
機能 | 配列要素の分散（ 分母： N ）を求める関数です。
宣言形式 | float van( float array[] )
引数 | (float型、1次元配列) 分散を求めたい値を格納する配列。
戻り値 | (float型) 分散の値（ 分母： n ）。
使用例 | float array[3]; array[0] = 1.0; array[1] = 2.5; array[2] = 4.0; print( van(array) ); // 1.5

関数 | van1(...)
--- | ---
機能 | 分散（ 分母： N-1 ）を求める関数です。
宣言形式 | float van( ... float )
引数 | (float型、任意個数) 分散を求めたい値。
戻り値 | (float型) 分散の値（ 分母： N-1 ）。
使用例 | print( van1(1.0, 2.5, 4.0) ); // 2.25

関数 | van1( array )
--- | ---
機能 | 配列要素の分散（ 分母： N-1 ）を求める関数です。
宣言形式 | float van1( float array[] )
引数 | (float型、1次元配列) 分散を求めたい値を格納する配列。
戻り値 | (float型) 分散の値（ 分母： N-1 ）。
使用例 | float array[3]; array[0] = 1.0; array[1] = 2.5; array[2] = 4.0; print( van1(array) ); // 2.25

関数 | sdn(...)
--- | ---
機能 | 標準偏差（ 分母： N ）を求める関数です。
宣言形式 | float sdn( ... float )
引数 | (float型、任意個数) 標準偏差を求めたい値。
戻り値 | (float型) 標準偏差の値（ 分母： N ）。
使用例 | print( sdn(1.0, 2.5, 4.0) ); // 1.2247... (≒√1.5)

関数 | sdn( array )
--- | ---
機能 | 標準偏差（ 分母： N ）を求める関数です。
宣言形式 | float sdn( float array[] )
引数 | (float型、1次元配列) 標準偏差を求めたい値を格納する配列。
戻り値 | (float型) 標準偏差の値（ 分母： N ）。
使用例 | float array[3]; array[0] = 1.0; array[1] = 2.5; array[2] = 4.0; print( sdn(array) ); // 1.2247... (≒√1.5)

Function | sdn1(...)
--- | ---
Feature | 標準偏差（ 分母： N-1 ）を求める関数です。
宣言形式 | float sdn1( ... float )
引数 | (float型、任意個数) 標準偏差を求めたい値。
戻り値 | (float型) 標準偏差の値（ 分母： n-1 ）。
使用例 | print( sdn1(1.0, 2.5, 4.0) ); // 1.5 (=√2.25)

関数 | sdn1( array )
--- | ---
機能 | 標準偏差（ 分母： N-1 ）を求める関数です。
宣言形式 | float sdn1( float array[] )
引数 | (float型、1次元配列) 標準偏差を求めたい値を格納する配列。
戻り値 | (float型) 標準偏差の値（ 分母： N-1 ）。
使用例 | float array[3]; array[0] = 1.0; array[1] = 2.5; array[2] = 4.0; print( sdn1(array) ); // 1.5 (=√2.25)