Math ライブラリ


概要 - Abstract

VCSSL Math ライブラリ は、数学関数を提供するための標準ライブラリです。
具体的には、指数関数、対数関数、平方根と累乗根、階乗、三角関数、逆三角関数、双曲線関数、逆双曲線関数、絶対値と最大最小値関数などが挙げられます。

このライブラリでは、64bit-float (いわゆるdouble) 精度と多倍長精度の数学関数が提供されます。前者は float 型、後者は varfloat 型として扱います。
VCSSLにおける float 型は double 型と区別されず、共に処理系によって定義される精度を持ち、現在の公式実装では IEEE754 の 64-bit float となっています。
varfloat 型については、現在の公式実装では統一規格では無く、10進 任意精度の独自仕様が採用されてます。丸めは10進における切り捨てによって処理されます。
varfloat型の詳細仕様は処理系依存であり、将来的には何らかの統一規格に変更される可能性があります。

float (double) 実装の数学関数については、処理系側の組み込みの機能が使用され、実行時に特殊な演算命令の一種に展開されて扱われます。
Math ライブラリが提供する float 実装の数学関数の多くは、そういった特殊な演算命令をラッピングした関数マクロです。
そのため、関数コールのオーバーヘッドが無く、概ね良好なパフォーマンスを発揮します。

それに対して varfloat (多倍長) 実装の数学関数については、VCSSL のコードとして実装されています。
具体的には、マクローリン展開やテイラー展開、ニュートン法、ガウス=ルジャンドル法などによって、値を求める計算アルゴリズムが、全て VCSSL で varfloat 型を用いて実装されています。
このため、処理速度は一般に低速の部類に入ります。これは、スクリプト言語による実装である事や、そもそも varfloat 型の演算速度が低速である事などに起因します。
具体的な例として、sin(1) の値を有効桁数 1000 桁で計算するコードは以下のようになります。この計算では sin 関数に 1 秒弱の処理時間を要します。

digit( 1000 ); // 有効桁数を 1000 桁に設定
varfloat value = sin( 1.0vf ); // sin 関数を計算
print( value ); // 出力

varfloat (多倍長) 実装の数学関数では、多くが収束アルゴリズムに依存しているため、末尾の、ある程度の桁数に誤差蓄積が生じる場合があります。
この事を見越して、数学関数の内部では、数割程度(関数によって異なります)大きい桁数で計算し、値を返す時点で余剰桁を切り捨てるようになっています。
ただし、これはあくまで補助的なものであり、あらゆる有効桁数と引数に対して、常に誤差蓄積の桁が排除される事を保証するものではありません。
関数にもよりますが、誤差蓄積の検証は、一般に数十桁程度の有効桁数による用途と、常用的な範囲の引数を想定して行われています。
数千から数万桁の用途や、特異点近傍の引数については、一般に誤差蓄積が大きくなるため、切り捨てる余剰桁に収まらず、関数の戻り値の末尾にも現れる場合があります。
従って、そうした用途では、呼び出し側でも誤差蓄積を考慮した大きめの有効桁数で使用し、余剰桁を切り捨てるなどの措置を行ってください。


目次 - Index

const float PI
float精度における、円周率の値です。多倍長精度の varfloat 値を得るには pi() を使用してください。
const float E
float精度における、ネイピア数(自然対数の底)の値です。多倍長精度の varfloat 値を得るには exp( 1.0vf ) で計算してください。
macro random()
0.0以上1.0未満の値を返します。なお、VCSSL3.0.20以前のドキュメントにおいて「0.0 から 1.0 までの乱数値を返します。」と記載されていましたが、この表現は曖昧であり、実際には1.0に完全に一致する値が返される事はありません。
macro rand()
randomと同様です。現在はrandomの使用が推奨されます。この関数の名称は、整数型の乱数と混同を招くため、現在の使用は推奨されません。将来的に、この関数の型の変更が検討される可能性があります。
varfloat pi()
円周率の値を計算します。内部では、元の桁数の1.1倍の桁数で、ガウス=ルジャンドル法によって計算されます。高精度な円周率の値は、周期性がある関数の計算や、周期境界をもつシミュレーション(回転系や写像系など)において、引数や座標の円周率による剰余を求めるために必要となります。実際に Math ライブラリでも、varfloat型の三角関数を求める計算などで使用されています。
macro exp( float arg )
ネイピア数を低とする指数関数を計算します。
varfloat exp( varfloat arg )
ネイピア数を低とする指数関数を計算します。内部では、元の桁数の 1.34 倍の桁数で、マクローリン展開によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro pow( float arg1, float arg2 )
指数関数を計算します。
varfloat pow( varfloat arg1, varint arg2 )
指数が整数の指数関数を計算します。内部では、「 元の桁数 + 指数 ( arg2 ) のオーダーの絶対値 」の2.1倍の桁数で、乗算の繰り返しによって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
varfloat pow( varfloat arg1, varfloat arg2 )
指数が浮動小数点数(実数)の指数関数を計算します。内部では、「 元の桁数 + 指数 ( arg2 ) のオーダーの絶対値 」の1.2倍の桁数で、 + マクローリン展開もしくは指数関数と対数関数の組み合わせによって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
varfloat pow( varint arg1, varfloat arg2 )
指数関数を計算します。内部では、arg1 を varfloat 型にキャストした上で、 pow( varfloat, varfloat ) が使用されます。
macro ln( float arg )
自然対数を計算します。log と同じです。
macro ln( varfloat arg )
自然対数を計算します。log と同じです。内部ではそのまま log(varfloat) が使用されています。
macro log( float arg )
自然対数を計算します。ln と同じです。
varfloat log( varfloat arg )
自然対数を計算します。ln と同じです。内部では、元の桁数の1.34倍の桁数で、「 1以上の引数ではニュートン法、1以下の引数ではテイラー展開 」によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro log10( float arg )
常用対数を計算します。
varfloat log10( varfloat arg )
常用対数を計算します。内部では、元の桁数の2.2倍の桁数で、「 log10(x) = ln(x) / ln(10) 」によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro sqrt( float arg )
平方根を計算します。
varfloat sqrt( varfloat arg )
平方根を計算します。内部では、元の桁数の1.34倍の桁数で、ニュートン法によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro root( float arg, int rootPower )
N乗根を計算します。
varfloat root( varfloat arg, varint p )
N乗根を計算します。内部では、元の桁数の1.34倍の桁数で、ニュートン法によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
varfloat root( varfloat arg, varfloat vfp )
N乗根を計算します。内部では、元の桁数の1.34倍の桁数で、ニュートン法によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。なお、この関数の第二引数は、常に整数であると見なされます。この関数は、電卓ソフトなどで数値リテラルが浮動小数点数と見なされるモードにおける、利便性確保のためだけにサポートされています。通常の利用シーンでは使用する利点は特に無いため、root( varfloat, varint ) を使用してください。
macro abs( float arg )
絶対値を計算します。
macro abs( int arg )
絶対値を計算します。
varfloat abs( varfloat arg )
絶対値を計算します。
varint abs( varint arg )
絶対値を計算します。
macro max( float arg1, float arg2 )
2つの引数の内、大きい方を返します。
macro max( int arg1, int arg2 )
2つの引数の内、大きい方を返します。
varfloat max( varfloat arg1, varfloat arg2 )
2つの引数の内、大きい方を返します。
varint max( varint arg1, varint arg2 )
2つの引数の内、大きい方を返します。
macro min( float arg1, float arg2 )
2つの引数の内、小さい方を返します。
macro min( int arg1, int arg2 )
2つの引数の内、小さい方を返します。
varfloat min( varfloat arg1, varfloat arg2 )
2つの引数の内、小さい方を返します。
varint min( varint arg1, varint arg2 )
2つの引数の内、小さい方を返します。
float fac( float arg )
階乗を計算します。この関数は引数・戻り値共に float ですが、内部で近い int に丸めて計算されます。変換に伴い、誤差が精度に影響する可能性があります。厳密性を要求する場合は int 引数のものを使用してください。
macro fac( int arg )
階乗を計算します。
varint fac( varint arg )
階乗を計算します。
varfloat fac( varfloat arg )
階乗を計算します。
macro sin( float arg )
サイン(正弦)関数を計算します。
varfloat sin( varfloat arg )
サイン(正弦)関数を計算します。内部では、「 元の桁数の1.34倍 + 引数のオーダーの10倍 」の桁数で、マクローリン展開によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 + 引数のオーダーの10倍 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。0 ~ π/2 の範囲以外の引数に対しては、三角関数の対称性と周期性を利用し、内部では 0 ~ π の範囲の値を使用して計算されます。
macro cos( float arg )
コサイン(余弦)関数を計算します。
varfloat cos( varfloat arg )
コサイン(余弦)関数を計算します。内部では、「 元の桁数の1.34倍 + 引数のオーダーの10倍 」の桁数で、マクローリン展開によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 + 引数のオーダーの10倍 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。0 ~ π/2 の範囲以外の引数に対しては、三角関数の対称性と周期性を利用し、内部では 0 ~ π の範囲の値を使用して計算されます。
macro tan( float arg )
タンジェント(正接)関数を計算します。
varfloat tan( varfloat arg )
タンジェント(正接)関数を計算します。内部では、元の桁数の2.1倍の桁数で、「 tan(x) = sin(x) / cos(x) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro asin( float arg )
アークサイン関数(サインの逆関数)を計算します。
varfloat asin( varfloat arg )
アークサイン関数(サインの逆関数)を計算します。内部では、元の桁数の1.34倍の桁数で、「 絶対値が0.7以下の引数についてはマクローリン展開、それより外側はニュートン法 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro acos( float arg )
アークコサイン関数(コサインの逆関数)を計算します。
varfloat acos( varfloat arg )
アークコサイン関数(コサインの逆関数)を計算します。内部では、元の桁数の1.34倍の桁数で、「 acos(x) = π/2 - asin(x) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro atan( float arg )
アークタンジェント関数(タンジェントの逆関数)を計算します。
varfloat atan( varfloat arg )
アークタンジェント関数(タンジェントの逆関数)を計算します。内部では、元の桁数の1.34倍の桁数で、「 絶対値が0.7以下の引数についてはマクローリン展開、それより外側はニュートン法 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro sinh( float arg )
ハイパボリックサイン関数を計算します。
varfloat sinh( varfloat arg )
ハイパボリックサイン関数を計算します。内部では、元の桁数の2.1倍の桁数で、「 sinh(x) = ( exp(x) - exp(-x) ) / 2 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro cosh( float arg )
ハイパボリックコサイン関数を計算します。
varfloat cosh( varfloat arg )
ハイパボリックコサイン関数を計算します。内部では、元の桁数の2.1倍の桁数で、「 sinh(x) = ( exp(x) + exp(-x) ) / 2 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro tanh( float arg )
ハイパボリックコタンジェント関数を計算します。
varfloat tanh( varfloat arg )
ハイパボリックコタンジェント関数を計算します。内部では、元の桁数の2.8倍の桁数で、「 sinh(x) = ( exp(x) - exp(-x) ) / ( exp(x) + exp(-x) ) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro asinh( float arg )
ハイパボリックサインの逆関数を計算します。
varfloat asinh( varfloat arg )
ハイパボリックサインの逆関数を計算します。内部では、元の桁数の2.1倍の桁数で、「 asinh(x) = ln( x + √( x*x + 1 ) ) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro acosh( float arg )
ハイパボリックコサインの逆関数を計算します。
varfloat acosh( varfloat arg )
ハイパボリックコサインの逆関数を計算します。内部では、元の桁数の2.1倍の桁数で、「 acosh(x) = ln( x + √( x*x - 1 ) ) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
macro atanh( float arg )
ハイパボリックタンジェントの逆関数を計算します。
varfloat atanh( varfloat arg )
ハイパボリックタンジェントの逆関数を計算します。内部では、元の桁数の2.1倍の桁数で、「 絶対値が0.9以下の引数については atanh(x) = 1/2 * log(1+x)/log(1-x) 」によって、それより外側はニュートン法によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。関数の対称性を利用し、負の引数については、正の引数における値を利用して計算されます。古いバージョンでは、-0.7 以下(負の無限大側)の引数について値を求められません。計算が終わらないか、0 が返されます。この問題は VCSSL 3.3.2 において修正されました。
macro deg( float angle )
角度の単位変換です。度数法の角度を、弧度法(ラジアン)の角度に変換します。
varfloat deg(varfloat rad)
角度の単位変換です。度数法の角度を、弧度法(ラジアン)の角度に変換します。内部では、元の桁数の1.34倍の桁数で、「 度数 = ラジアン数 * 180 / π 」によって計算されます。
macro rad( float angle )
角度の単位変換です。弧度法(ラジアン)の角度を、度数法の角度に変換します。
varfloat rad(varfloat deg)
角度の単位変換です。弧度法(ラジアン)の角度を、度数法の角度に変換します。内部では、元の桁数の1.34倍の桁数で、「 ラジアン数 = 度数 * π / 180 」によって計算されます。

構造体 - Structs

- なし - None -


変数 - Variables

定義
- Signature
const float PI
詳細
- Details
float精度における、円周率の値です。多倍長精度の varfloat 値を得るには pi() を使用してください。
定義
- Signature
const float E
詳細
- Details
float精度における、ネイピア数(自然対数の底)の値です。多倍長精度の varfloat 値を得るには exp( 1.0vf ) で計算してください。

関数 - Functions

定義
- Signature
macro random()
詳細
- Details
0.0以上1.0未満の値を返します。なお、VCSSL3.0.20以前のドキュメントにおいて「0.0 から 1.0 までの乱数値を返します。」と記載されていましたが、この表現は曖昧であり、実際には1.0に完全に一致する値が返される事はありません。
戻り値
- Return
(float) 乱数値
定義
- Signature
macro rand()
詳細
- Details
randomと同様です。現在はrandomの使用が推奨されます。この関数の名称は、整数型の乱数と混同を招くため、現在の使用は推奨されません。将来的に、この関数の型の変更が検討される可能性があります。
戻り値
- Return
(float) 乱数値
定義
- Signature
varfloat pi()
詳細
- Details
円周率の値を計算します。
内部では、元の桁数の1.1倍の桁数で、ガウス=ルジャンドル法によって計算されます。
高精度な円周率の値は、周期性がある関数の計算や、周期境界をもつシミュレーション(回転系や写像系など)において、引数や座標の円周率による剰余を求めるために必要となります。実際に Math ライブラリでも、varfloat型の三角関数を求める計算などで使用されています。
戻り値
- Return
円周率の値。
定義
- Signature
macro exp( float arg )
詳細
- Details
ネイピア数を低とする指数関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat exp( varfloat arg )
詳細
- Details
ネイピア数を低とする指数関数を計算します。
内部では、元の桁数の 1.34 倍の桁数で、マクローリン展開によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro pow( float arg1, float arg2 )
詳細
- Details
指数関数を計算します。
引数
- Arguments
arg1 : 低。
arg2 : 指数。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat pow( varfloat arg1, varint arg2 )
詳細
- Details
指数が整数の指数関数を計算します。
内部では、「 元の桁数 + 指数 ( arg2 ) のオーダーの絶対値 」の2.1倍の桁数で、乗算の繰り返しによって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg1 : 低。
arg2 : 指数。
戻り値
- Return
計算結果の値。
定義
- Signature
varfloat pow( varfloat arg1, varfloat arg2 )
詳細
- Details
指数が浮動小数点数(実数)の指数関数を計算します。
内部では、「 元の桁数 + 指数 ( arg2 ) のオーダーの絶対値 」の1.2倍の桁数で、 + マクローリン展開もしくは指数関数と対数関数の組み合わせによって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg1 : 低。
arg2 : 指数。
戻り値
- Return
計算結果の値。
定義
- Signature
varfloat pow( varint arg1, varfloat arg2 )
詳細
- Details
指数関数を計算します。
内部では、arg1 を varfloat 型にキャストした上で、 pow( varfloat, varfloat ) が使用されます。
引数
- Arguments
arg1 : 低。
arg2 : 指数。
戻り値
- Return
計算結果の値。
定義
- Signature
macro ln( float arg )
詳細
- Details
自然対数を計算します。log と同じです。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
macro ln( varfloat arg )
詳細
- Details
自然対数を計算します。log と同じです。
内部ではそのまま log(varfloat) が使用されています。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro log( float arg )
詳細
- Details
自然対数を計算します。ln と同じです。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat log( varfloat arg )
詳細
- Details
自然対数を計算します。ln と同じです。
内部では、元の桁数の1.34倍の桁数で、「 1以上の引数ではニュートン法、1以下の引数ではテイラー展開 」によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro log10( float arg )
詳細
- Details
常用対数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat log10( varfloat arg )
詳細
- Details
常用対数を計算します。
内部では、元の桁数の2.2倍の桁数で、「 log10(x) = ln(x) / ln(10) 」によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro sqrt( float arg )
詳細
- Details
平方根を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat sqrt( varfloat arg )
詳細
- Details
平方根を計算します。
内部では、元の桁数の1.34倍の桁数で、ニュートン法によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro root( float arg, int rootPower )
詳細
- Details
N乗根を計算します。
引数
- Arguments
arg : 計算対象の値。
rootPower : N乗根のN。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat root( varfloat arg, varint p )
詳細
- Details
N乗根を計算します。
内部では、元の桁数の1.34倍の桁数で、ニュートン法によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
p : N乗根のN。
戻り値
- Return
計算結果の値。
定義
- Signature
varfloat root( varfloat arg, varfloat vfp )
詳細
- Details
N乗根を計算します。
内部では、元の桁数の1.34倍の桁数で、ニュートン法によって計算されます。ただし 10 桁以下では、元の桁数 + 4桁 で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。なお、この関数の第二引数は、常に整数であると見なされます。この関数は、電卓ソフトなどで数値リテラルが浮動小数点数と見なされるモードにおける、利便性確保のためだけにサポートされています。通常の利用シーンでは使用する利点は特に無いため、root( varfloat, varint ) を使用してください。
引数
- Arguments
arg : 計算対象の値。
vfp : N乗根のN。
戻り値
- Return
計算結果の値。
定義
- Signature
macro abs( float arg )
詳細
- Details
絶対値を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
macro abs( int arg )
詳細
- Details
絶対値を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(int) 計算結果の値。
定義
- Signature
varfloat abs( varfloat arg )
詳細
- Details
絶対値を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
varint abs( varint arg )
詳細
- Details
絶対値を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro max( float arg1, float arg2 )
詳細
- Details
2つの引数の内、大きい方を返します。
引数
- Arguments
arg1 : 計算対象の値。
arg2 : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
macro max( int arg1, int arg2 )
詳細
- Details
2つの引数の内、大きい方を返します。
引数
- Arguments
arg1 : 計算対象の値。
arg2 : 計算対象の値。
戻り値
- Return
(int) 計算結果の値。
定義
- Signature
varfloat max( varfloat arg1, varfloat arg2 )
詳細
- Details
2つの引数の内、大きい方を返します。
引数
- Arguments
arg1 : 計算対象の値。
arg2 : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
varint max( varint arg1, varint arg2 )
詳細
- Details
2つの引数の内、大きい方を返します。
引数
- Arguments
arg1 : 計算対象の値。
arg2 : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro min( float arg1, float arg2 )
詳細
- Details
2つの引数の内、小さい方を返します。
引数
- Arguments
arg1 : 計算対象の値。
arg2 : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
macro min( int arg1, int arg2 )
詳細
- Details
2つの引数の内、小さい方を返します。
引数
- Arguments
arg1 : 計算対象の値。
arg2 : 計算対象の値。
戻り値
- Return
(int) 計算結果の値。
定義
- Signature
varfloat min( varfloat arg1, varfloat arg2 )
詳細
- Details
2つの引数の内、小さい方を返します。
引数
- Arguments
arg1 : 計算対象の値。
arg2 : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
varint min( varint arg1, varint arg2 )
詳細
- Details
2つの引数の内、小さい方を返します。
引数
- Arguments
arg1 : 計算対象の値。
arg2 : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
float fac( float arg )
詳細
- Details
階乗を計算します。この関数は引数・戻り値共に float ですが、内部で近い int に丸めて計算されます。変換に伴い、誤差が精度に影響する可能性があります。厳密性を要求する場合は int 引数のものを使用してください。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
macro fac( int arg )
詳細
- Details
階乗を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(int) 計算結果の値。
定義
- Signature
varint fac( varint arg )
詳細
- Details
階乗を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
varfloat fac( varfloat arg )
詳細
- Details
階乗を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro sin( float arg )
詳細
- Details
サイン(正弦)関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat sin( varfloat arg )
詳細
- Details
サイン(正弦)関数を計算します。
内部では、「 元の桁数の1.34倍 + 引数のオーダーの10倍 」の桁数で、マクローリン展開によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 + 引数のオーダーの10倍 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
0 ~ π/2 の範囲以外の引数に対しては、三角関数の対称性と周期性を利用し、内部では 0 ~ π の範囲の値を使用して計算されます。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro cos( float arg )
詳細
- Details
コサイン(余弦)関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat cos( varfloat arg )
詳細
- Details
コサイン(余弦)関数を計算します。
内部では、「 元の桁数の1.34倍 + 引数のオーダーの10倍 」の桁数で、マクローリン展開によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 + 引数のオーダーの10倍 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
0 ~ π/2 の範囲以外の引数に対しては、三角関数の対称性と周期性を利用し、内部では 0 ~ π の範囲の値を使用して計算されます。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro tan( float arg )
詳細
- Details
タンジェント(正接)関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat tan( varfloat arg )
詳細
- Details
タンジェント(正接)関数を計算します。
内部では、元の桁数の2.1倍の桁数で、「 tan(x) = sin(x) / cos(x) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro asin( float arg )
詳細
- Details
アークサイン関数(サインの逆関数)を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat asin( varfloat arg )
詳細
- Details
アークサイン関数(サインの逆関数)を計算します。
内部では、元の桁数の1.34倍の桁数で、「 絶対値が0.7以下の引数についてはマクローリン展開、それより外側はニュートン法 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro acos( float arg )
詳細
- Details
アークコサイン関数(コサインの逆関数)を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat acos( varfloat arg )
詳細
- Details
アークコサイン関数(コサインの逆関数)を計算します。
内部では、元の桁数の1.34倍の桁数で、「 acos(x) = π/2 - asin(x) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro atan( float arg )
詳細
- Details
アークタンジェント関数(タンジェントの逆関数)を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat atan( varfloat arg )
詳細
- Details
アークタンジェント関数(タンジェントの逆関数)を計算します。
内部では、元の桁数の1.34倍の桁数で、「 絶対値が0.7以下の引数についてはマクローリン展開、それより外側はニュートン法 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro sinh( float arg )
詳細
- Details
ハイパボリックサイン関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat sinh( varfloat arg )
詳細
- Details
ハイパボリックサイン関数を計算します。
内部では、元の桁数の2.1倍の桁数で、「 sinh(x) = ( exp(x) - exp(-x) ) / 2 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro cosh( float arg )
詳細
- Details
ハイパボリックコサイン関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat cosh( varfloat arg )
詳細
- Details
ハイパボリックコサイン関数を計算します。
内部では、元の桁数の2.1倍の桁数で、「 sinh(x) = ( exp(x) + exp(-x) ) / 2 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro tanh( float arg )
詳細
- Details
ハイパボリックコタンジェント関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat tanh( varfloat arg )
詳細
- Details
ハイパボリックコタンジェント関数を計算します。
内部では、元の桁数の2.8倍の桁数で、「 sinh(x) = ( exp(x) - exp(-x) ) / ( exp(x) + exp(-x) ) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro asinh( float arg )
詳細
- Details
ハイパボリックサインの逆関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat asinh( varfloat arg )
詳細
- Details
ハイパボリックサインの逆関数を計算します。
内部では、元の桁数の2.1倍の桁数で、「 asinh(x) = ln( x + √( x*x + 1 ) ) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro acosh( float arg )
詳細
- Details
ハイパボリックコサインの逆関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat acosh( varfloat arg )
詳細
- Details
ハイパボリックコサインの逆関数を計算します。
内部では、元の桁数の2.1倍の桁数で、「 acosh(x) = ln( x + √( x*x - 1 ) ) 」によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro atanh( float arg )
詳細
- Details
ハイパボリックタンジェントの逆関数を計算します。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
(float) 計算結果の値。
定義
- Signature
varfloat atanh( varfloat arg )
詳細
- Details
ハイパボリックタンジェントの逆関数を計算します。
内部では、元の桁数の2.1倍の桁数で、「 絶対値が0.9以下の引数については atanh(x) = 1/2 * log(1+x)/log(1-x) 」によって、それより外側はニュートン法によって計算されます。ただし 10 桁以下では、「 元の桁数 + 4桁 」の桁数で計算されます。この余剰桁数は、将来的に( 恐らくより高精度な方向に )変更される可能性があります。関数の対称性を利用し、負の引数については、正の引数における値を利用して計算されます。
古いバージョンでは、-0.7 以下(負の無限大側)の引数について値を求められません。計算が終わらないか、0 が返されます。この問題は VCSSL 3.3.2 において修正されました。
引数
- Arguments
arg : 計算対象の値。
戻り値
- Return
計算結果の値。
定義
- Signature
macro deg( float angle )
詳細
- Details
角度の単位変換です。度数法の角度を、弧度法(ラジアン)の角度に変換します。
引数
- Arguments
angle : 度数法の角度。
戻り値
- Return
(float) 弧度法(ラジアン)の角度。
定義
- Signature
varfloat deg(varfloat rad)
詳細
- Details
角度の単位変換です。度数法の角度を、弧度法(ラジアン)の角度に変換します。
内部では、元の桁数の1.34倍の桁数で、「 度数 = ラジアン数 * 180 / π 」によって計算されます。
引数
- Arguments
angle : 度数法の角度。
戻り値
- Return
弧度法(ラジアン)の角度。
定義
- Signature
macro rad( float angle )
詳細
- Details
角度の単位変換です。弧度法(ラジアン)の角度を、度数法の角度に変換します。
引数
- Arguments
angle : 弧度法(ラジアン)の角度。
戻り値
- Return
(float) 度数法の角度。
定義
- Signature
varfloat rad(varfloat deg)
詳細
- Details
角度の単位変換です。弧度法(ラジアン)の角度を、度数法の角度に変換します。
内部では、元の桁数の1.34倍の桁数で、「 ラジアン数 = 度数 * π / 180 」によって計算されます。
引数
- Arguments
angle : 弧度法(ラジアン)の角度。
戻り値
- Return
度数法の角度。

この階層の目次
お知らせ

Vnanoの公式サイトがオープン、チュートリアルやAPI仕様書等も掲載
2019年08月07日 - オープンソースのアプリケーション組み込み用スクリプトエンジン「 Vnano 」の公式サイトを開設しました。チュートリアルや、スクリプトエンジンのAPI仕様書などが参照できます。その概要をお知らせします。

リニアングラフ3D/2Dが連番ファイルのアニメーションに標準で対応
2019年07月17日 - リニアングラフ3D/2Dでは、7月17日公開の最新版より、連番ファイルを連続的に読み込みながらアニメーション描画するプログラムを同梱し、メニューから標準で使用可能になりました。その概要をお知らせします。

Vnanoのスクリプトエンジンアーキテクチャ解説2: コンパイラ
2019年07月03日 - オープンソースで開発中のスクリプトエンジン「 Vnano 」のアーキテクチャを解説する連載の第2回です。今回は、スクリプトを中間コードへと変換する、コンパイラ部分の内部をクローズアップして解説します。

新着
[公式ガイドサンプル] ユーザーのGUI操作に対して処理を行う

「VCSSL GUI開発ガイド」内のサンプルコードです。ユーザーがGUIを操作した際に行う処理を実装します。
2019年07月28日
[公式ガイドサンプル] 各種GUIコンポーネントを画面上に配置する

「VCSSL GUI開発ガイド」内のサンプルコードです。色々な種類のGUI部品を画面上に配置します。
2019年07月28日
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。グラフを連番の画像ファイルに保存する事もできます。
2019年05月24日
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
開発元Twitterアカウント