![]() ![]() ![]()
|
SophiaFramework 2.2 |
#include <SFUDouble.hpp>
class SFUDouble;
typedef SFUDouble& SFUDoubleRef; typedef SFUDouble* SFUDoublePtr; typedef SFUDouble** SFUDoubleHandle; typedef const SFUDouble ConstSFUDouble; typedef const SFUDouble& ConstSFUDoubleRef; typedef const SFUDouble* ConstSFUDoublePtr; typedef const SFUDouble** ConstSFUDoubleHandle;
SFUDouble クラスは C++ 言語の double 型をカプセル化しています。 BREW では C++ 言語の double 型に対して演算子を使用した計算を行っては いけないことになっており、FADD や FMUL などの浮動小数点演算用の関数を 使わなければなりません。 SFUDouble はこのような関数呼び出しをカプセル化し、 演算子による自然な記法を実現します。
BREW 2.1 では、浮動小数点演算を行うヘルパー関数がいくつか追加されており、 それらの関数は BREW 2.0 では使用することができませんが、 SFUDouble クラスでは、可能な限り BREW 2.0 と BREW 2.1 の両方で使える関数を提供しています。 たとえば、BREW 2.1 で追加された FCEIL, FFLOOR などの関数は BREW 2.0 では使用できませんが、 それと同じ演算を行う SFUDouble クラスの Ceil や Floor は BREW 2.0 でも使用可能です。
BREW API で用意されている関数以外にも、 三角関数や指数対数関数などが用意されています。
| コンストラクタ/デストラクタ | ||
|---|---|---|
| public |
SFUDouble | SFUDouble クラスのコンストラクタです。 |
| パブリック関数 | ||
|---|---|---|
| public |
Abs | 絶対値を返します。 |
| public static |
Atan | x のアークタンジェント関数の値を返します。 |
| public static |
Atan2 | y / x のアークタンジェント関数の値を返します。 |
| public |
Ceil | x 以上の最小の整数値を返します。 |
| public static |
Cos | x のコサイン関数の値を返します。 |
| public static |
DegreeToRadian | 度をラジアンに変換します。 |
| public |
Exp | x の指数関数の値を返します。 |
| public |
Floor | x 以下の最大の整数値を返します。 |
| public |
IsFinite | 有限な値であるか判定します。 |
| public |
IsNaN | 非数であるか判定します。 |
| public |
Log | x の対数関数の値を返します。 |
| public |
Log10 | x の 10 を底とする対数関数の値を返します。 |
| public static |
MaxValue | double 型で表現可能な正の最大値を返します。 |
| public static |
MinValue | double 型で表現可能な正の最小値を返します。 |
| public |
Mod | 剰余を計算します。 |
| public static |
Pi | 円周率を返します。 |
| public |
Pow | x の y 乗を計算します。 |
| public static |
RadianToDegree | ラジアンを度に変換します。 |
| public |
Round | 最も近い整数に丸めた値を返します。 |
| public static |
Sin | x のサイン関数の値を返します。 |
| public |
Sqrt | x の平方根を計算します。 |
| public static |
Tan | x のタンジェント関数の値を返します。 |
| public |
ToSInt | 整数部を符号つき整数として返します。 |
| public |
ToString | 文字列に変換して返します。 |
| public |
ToUInt | 整数部を符号なし整数として返します。 |
| public |
Value | double 型の値を返します。 |
| public |
operator * | 乗算を行います。 |
| public |
operator+ | 加算を行います。 |
| public |
operator- | 減算を行います。 |
| public |
operator/ | 除算を行います。 |
| public |
operator< | 小さい値であるか判定します。 |
| public |
operator== | 等しい値であるか判定します。 |
| public |
operator> | 大きい値であるか判定します。 |
[ public ] SFUDouble(Void);
[ public ]
SFUDouble(
double d // 初期値
);
[ public ]
SFUDouble(
SIntN n // 初期値
);
[ public ]
SFUDouble(
SInt32 n // 初期値
);
[ public ]
SFUDouble(
SInt16 n // 初期値
);
[ public ]
SFUDouble(
UInt16 n // 初期値
);
[ public ]
SFUDouble(
SInt08 n // 初期値
);
[ public ]
SFUDouble(
UInt08 n // 初期値
);
[ public, explicit ]
SFUDouble(
ConstACharPtr str // 浮動小数点数に解釈する文字列
);
[ public ]
SFUDouble(
ConstACharPtr str // 浮動小数点数に解釈する文字列
ACharPtr * end // 解釈できない文字のアドレスを返す
);
デフォルト コンストラクタは、何も初期化を行いません。 したがって、構築後の値は未定義です。
double を引数にとるコンストラクタは、 指定された double 値で初期化を行います。
整数を引数にとるコンストラクタは、 整数を浮動小数点数に変換します。
ConstACharPtr を引数にとるコンストラクタは、 指定された文字列を浮動小数点数を表す文字列として解釈して、 その値で初期化を行います。 文字列が解釈できない場合の結果は未定義です。
str と end を引数にとるコンストラクタは、 BREW API の STRTOD 関数を呼び出して文字列を浮動小数点数に変換し、 その値で初期化を行います。 文字列が解釈できない場合の結果は未定義です。 この関数は BREW 2.1 でのみ使用可能です。
[ public, const ] SFUDouble Abs(Void);
[ public, static ] SFUDouble Abs( ConstSFUDoubleRef x );
[ public, static ] SFUDouble Atan( ConstSFUDoubleRef x );
[ public, static ] SFUDouble Atan2( ConstSFUDoubleRef y ConstSFUDoubleRef x );
[ public, const ] SFUDouble Ceil(Void);
[ public, static ] SFUDouble Ceil( ConstSFUDoubleRef x );
SFUDouble x, y; x = 5.0; y = x.Ceil(); // y = 5.0 となります。 x = 5.2; y = x.Ceil(); // y = 6.0 となります。 x = -5.9; y = x.Ceil(); // y = -5.0 となります。 x = -6.0; y = x.Ceil(); // y = -6.0 となります。
[ public, static ] SFUDouble Cos( ConstSFUDoubleRef radian ConstSFUDoubleRef precision = MinValue() );
この関数は、マクローリン級数展開によりコサイン関数の近似値を求めます。 級数和の直前の値との差分が指定された漸近精度以下になれば、 計算はそこで打ち切られます。
コサイン関数の計算は時間がかかる処理ですが、 漸近精度を緩めることで高速な計算が可能になります。
SFUDouble x, e; SFUDouble pi = SFUDouble::Pi(); // 漸近精度 1.0e-4 の場合は、 // sin(pi/6) の値は 0.8660254451 となります。 e = 1.0e-4; x = SFUDouble::Cos(pi / 6.0, e); // 漸近精度 1.0e-10 の場合は、 // sin(pi/6) の値は 0.8660254038 となり、より正しい値に近づきます。 e = 1.0e-10; x = SFUDouble::Cos(pi / 6.0, e);
[ public, static ] SFUDouble DegreeToRadian( ConstSFUDoubleRef degree );
SFUDouble degree = 360.0; SFUDouble radian = SFUDouble::DegreeToRadian(degree); // radian = 2 * PI となります。
[ public, const ] SFUDouble Exp(Void);
[ public, static ] SFUDouble Exp( ConstSFUDoubleRef x );
オーバーフローした場合の戻り値は未定義です。
[ public, const ] SFUDouble Floor(Void);
[ public, static ] SFUDouble Floor( ConstSFUDoubleRef x );
SFUDouble x, y; x = 5.0; y = x.Floor(); // y = 5.0 となります。 x = 5.2; y = x.Floor(); // y = 5.0 となります。 x = -5.9; y = x.Floor(); // y = -6.0 となります。 x = -6.0; y = x.Floor(); // y = -6.0 となります。
[ public, const ] Bool IsFinite(Void);
[ public, static ] Bool IsFinite( ConstSFUDoubleRef x );
有限な値であれば真を返します。 そうでなければ偽を返します。
[ public, const ] Bool IsNaN(Void);
[ public, static ] Bool IsNaN( ConstSFUDoubleRef x );
非数 (NaN: Not a Number) であれば真を返します。 そうでなければ偽を返します。
[ public, const ] SFUDouble Log(Void);
[ public, static ] SFUDouble Log( ConstSFUDoubleRef x );
x が 0 以下の値である場合や、 計算結果がオーバーフローする場合の戻り値は未定義です。
[ public, const ] SFUDouble Log10(Void);
[ public, static ] SFUDouble Log10( ConstSFUDoubleRef );
x が 0 以下の値である場合や、 計算結果がオーバーフローする場合の戻り値は未定義です。
[ public, static ] SFUDouble MaxValue(Void);
[ public, static ] SFUDouble MinValue(Void);
[ public, const ] SFUDouble Mod( ConstSFUDoubleRef y );
[ public, static ] SFUDouble Mod( ConstSFUDoubleRef x ConstSFUDoubleRef y );
x を y で割った剰余を返します。 x = n * y + f を満たす剰余 fを計算します。 ここで n は整数で、 f は x と同じ符号であり、 その絶対値は y の絶対値より小さい値です。 y が 0 の場合の戻り値は未定義です。
SFUDouble x, y, z; x = 4.1; y = 0.6; z = SFUDouble::Mod(x, y); // z = 0.5 となります。 x = 3.4; y = -1.5; z = SFUDouble::Mod(x, y); // z = 0.4 となります。 x = -2.9; y = 2.7; z = SFUDouble::Mod(x, y); // z = -0.2 となります。 x = -2.2; y = -1.5; z = SFUDouble::Mod(x, y); // z = -0.7 となります。
[ public, static ] SFUDouble Pi(Void);
[ public, const ] SFUDouble Pow( ConstSFUDoubleRef y );
[ public, static ] SFUDouble Pow( ConstSFUDoubleRef x ConstSFUDoubleRef y );
計算結果が実数にならない場合や、 オーバフローする場合の戻り値は未定義です。
[ public, static ] SFUDouble RadianToDegree( ConstSFUDoubleRef radian );
SFUDouble radian = SFUDouble::Pi() / 2.0; SFUDouble degree = SFUDouble::RadianToDegree(radian); // degree = 90.0 となります。
[ public, const ] SFUDouble Round(Void);
[ public, static ] SFUDouble Round( ConstSFUDoubleRef x );
SFUDouble d1 = 5.5; SFUDouble d2 = d1.Round(); // d2 = 6.0 となります。 SFUDouble d3 = -5.4; SFUDouble d4 = d3.Round(); // d4 = -5.0 となります。
[ public, static ] SFUDouble Sin( ConstSFUDoubleRef radian // ラジアン ConstSFUDoubleRef precision = MinValue() // 漸近精度 );
この関数は、マクローリン級数展開によりサイン関数の近似値を求めます。 級数和の直前の値との差分が指定された漸近精度以下になれば、 計算はそこで打ち切られます。
サイン関数の計算は時間がかかる処理ですが、 漸近精度を緩めることで高速な計算が可能になります。
SFUDouble x, e; SFUDouble pi = SFUDouble::Pi(); // 漸近精度 1.0e-4 の場合は、 // sin(pi/4) の値は 0.7071064696 となります。 e = 1.0e-4; x = SFUDouble::Sin(pi / 4.0, e); // 漸近精度 1.0e-10 の場合は、 // sin(pi/4) の値は 0.7071067812 となり、より正しい値に近づきます。 e = 1.0e-10; x = SFUDouble::Sin(pi / 4.0, e);
[ public, const ] SFUDouble Sqrt(Void);
[ public, static ] SFUDouble Sqrt( ConstSFUDoubleRef x );
x に負の数を指定した場合の戻り値は未定義です。
[ public, static ] SFUDouble Tan( ConstSFUDoubleRef radian // ラジアン ConstSFUDoubleRef precision = MinValue() // 漸近精度 );
この関数は、 SFUDouble::Sin(radian, precision) / SFUDouble::Cos(radian, precision) を返します。 コサイン値が 0 になる場合や、オーバフローする場合の戻り値は未定義です。
SFUDouble x, e; SFUDouble pi = SFUDouble::Pi(); // 漸近精度 1.0e-4 の場合は、 // sin(pi/6) の値は 0.5773507421 となります。 e = 1.0e-4; x = SFUDouble::Tan(pi / 6.0, e); // 漸近精度 1.0e-10 の場合は、 // sin(pi/6) の値は 0.5773502692 となり、より正しい値に近づきます。 e = 1.0e-10; x = SFUDouble::Tan(pi / 6.0, e);
[ public, const ] SInt32 ToSInt(Void);
[ public, static ] SInt32 ToSInt( ConstSFUDoubleRef x );
浮動小数点数の整数部を符号つき整数として返します。 符号は戻り値に反映されます。 浮動小数点数が SInt32 で表現可能な値の範囲外である場合、戻り値は未定義です。
SFUDouble d = -12.3; SInt32 n = d.ToSInt(); // n は -12 になります。
[ public, const ] SFUWideString ToString(Void);
浮動小数点数を文字列に変換して返します。 変換に失敗した場合は空文字列を返します。
[ public, const ] UInt32 ToUInt(Void);
[ public, static ] UInt32 ToUInt( ConstSFUDoubleRef x );
浮動小数点数の整数部を符号なし整数として返します。 符号は無視されます。 浮動小数点数が UInt32 で表現可能な値の範囲外である場合、戻り値は未定義です。
SFUDouble d = -24.5; UInt32 n = d.ToUInt(); // n は 24 になります。
[ public, const ] double Value(Void);
SFUDouble が内部に保持している double 型の値を返します。
[ public, friend ] SFUDouble operator/( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public ] ConstSFUDoubleRef operator/=( ConstSFUDoubleRef y // );
[ public, friend ] Bool operator==( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public, friend ] Bool operator!=( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public, friend ] Bool operator>( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public, friend ] Bool operator>=( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public, friend ] Bool operator<( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public, friend ] Bool operator<=( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public, friend ] SFUDouble operator-( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public ] ConstSFUDoubleRef operator-=( ConstSFUDoubleRef y );
[ public, friend ] SFUDouble operator *( ConstSFUDoubleRef x ConstSFUDoubleRef y );
[ public ] ConstSFUDoubleRef operator *=( ConstSFUDoubleRef y );
[ public, friend ] SFUDouble operator+( ConstSFUDoubleRef x // ConstSFUDoubleRef y // );
[ public ] ConstSFUDoubleRef operator+=( ConstSFUDoubleRef y // );
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|