%dll hspmath %date 2011/05/10 %note hspmath.as %group 数学関数 %port Win Mac Cli Let %author HSPWiki %type ユーザー定義マクロ %index M_LOG2E 2を底とするネイピア数の対数 %inst 2を底とするネイピア数の対数を表す定数です。 2を底とするネイピア数の対数とは、log2(m_e)のことを指します。 %group 数学定数 %sample #include "hspmath.as" a = 10.0 mes "2を底とするaの対数は" + log2(a) + "です。" mes "これはlogf(a) * m_log2eとしても求められます:" + (logf(a) * m_log2e) + "\n" mes "このようにm_log2eを「eを底とする対数」にかけることで、" mes "「2を底とする対数」を得ることができます。" stop %href M_LOG10E M_E log2 %type ユーザー定義マクロ %index M_LOG10E 10を底とするネイピア数の対数 %inst 10を底とするネイピア数の対数を表す定数です。 10を底とするネイピア数の対数とは、log10(m_e)のことを指します。 %group 数学定数 %sample #include "hspmath.as" a = m_e mes "10を底とするaの対数は" + log10(a) + "です。" mes "これはlogf(a) * m_log10eとしても求められます:" + (logf(a) * m_log10e) + "\n" mes "このようにm_log10eを「eを底とする対数」にかけることで、" mes "「10を底とする対数」を得ることができます。" stop %href M_LOG2E log10 M_E %type ユーザー定義マクロ %index M_LN2 ネイピア数を底とした2の対数 %inst ネイピア数を底とした2の対数を表す定数です。 ネイピア数を底とした2の対数とは、logf(2)のことを指します。 %group 数学定数 %href M_LN10 %type ユーザー定義マクロ %index M_LN10 ネイピア数を底とした10の対数 %inst ネイピア数を底とした10の対数を表す定数です。 ネイピア数を底とした10の対数とは、logf(10)のことを指します。 %group 数学定数 %href M_LN2 %type ユーザー定義マクロ %index M_E ネイピア数 %inst ネイピア数(自然対数の底)eを表す定数です。 %href M_PI M_LOG2E M_LOG10E %group 数学定数 %url http://ja.wikipedia.org/wiki/%E3%83%8D%E3%82%A4%E3%83%94%E3%82%A2%E6%95%B0 %type ユーザー定義マクロ %index M_SQRTPI 円周率の平方根 %inst 円周率の平方根を表す定数です。 %href sqrt M_PI M_SQRT2 M_SQRT3 %group 数学定数 %type ユーザー定義マクロ %index M_SQRT2 2の平方根 %inst 2の平方根を表す定数です。 %href sqrt M_SQRTPI M_SQRT3 %group 数学定数 %type ユーザー定義マクロ %index M_SQRT3 3の累乗根 %inst 3の累乗根を表す定数です。 %href sqrt M_SQRTPI M_SQRT2 %group 数学定数 %type ユーザー定義マクロ %index DBL_DIG 10進数で有効な桁数 %inst 10進数で有効な桁数を表す定数です。 %group doubleの限度 %type ユーザー定義マクロ %index DBL_EPSILON 1.0とその次に大きい値との差 %inst 1.0とその次に大きい値との差を表す定数です。 %group doubleの限度 %type ユーザー定義マクロ %index DBL_MANT_DIG 仮数部のbit数 %inst 実数型の数値を表す際に用いる仮数部のbit数を表す定数です。 %group doubleの限度 %type ユーザー定義マクロ %index DBL_MAX 実数の最大値 %inst 実数で表現できる最大値を表す定数です。 %group doubleの限度 %href INT_MAX %type ユーザー定義マクロ %index DBL_MAX_10_EXP 10進数での指数部の最大値 %inst 指数部の最大値を表す定数です。 %href DBL_MIN_10_EXP DBL_MAX_EXP %group doubleの限度 %type ユーザー定義マクロ %index DBL_MAX_EXP 2進数での指数部の最大値 %inst 指数部の最大値を表す定数です。 %group doubleの限度 %href DBL_MAX_10_EXP INT_MAX %type ユーザー定義マクロ %index DBL_MIN 0を超える最小の値 %inst 0を超える最小の値を表す定数です。 %group doubleの限度 %type ユーザー定義マクロ %index DBL_MIN_10_EXP 10進数での指数部の最小値 %inst 指数部の最小値を表す定数です。 %href DBL_MAX_10_EXP DBL_MIN_EXP %group doubleの限度 %type ユーザー定義マクロ %index DBL_MIN_EXP 2進数での指数部の最小値 %inst 指数部の最小値を表す定数です。 %href DBL_MIN_10_EXP %group doubleの限度 %type ユーザー定義マクロ %index INT_DIGIT 2進数で有効な桁数 %inst 2進数で有効な桁数を表す定数です。 %href INT_DIGIT10 %group intの限度 %type ユーザー定義マクロ %index INT_DIGIT10 10進数で有効な桁数 %inst 10進数で有効な桁数を表す定数です。 %href INT_DIGIT %group intの限度 %type ユーザー定義マクロ %index INT_MAX 最大値 %inst 整数で表現できる最大値を表す定数です。 %href DBL_MAX INT_MIN %group intの限度 %type ユーザー定義マクロ %index INT_MIN 最小値 %inst 整数で表現できる最小の値を表す定数です。 %href INT_MAX %group intの限度 %index pow 累乗(べき乗)を求める %prm (p1, p2) p1 : 底(0以上) p2 : 指数 %inst p1をp2乗した値を求めます。結果は実数で与えられます。 p1は必ず正でなければなりません。負の場合はエラーにはなりませんが、非数(-1.#IND00)が返ります。 p2は正負どちらでも構いません。また、実数を指定することも可能です。 %sample #include "hspmath.as" repeat 5, -2 mes "10の" + cnt + "乗は" + pow(10, cnt) + "です。" loop stop %href powf logf %index log10 10を底とした対数(常用対数) %prm (p1) p1 : 真数 %inst 10を底とするp1の対数を求めます。結果は実数で与えられます。 %href M_LOG10E logf log2 %index log2 2を底とした対数 %prm (p1) p1 : 真数 %inst 2を底とするp1の対数を求めます。結果は実数で与えられます。 %href M_LOG2E logf log10 %index asin サインの逆関数(アークサイン) %prm (p1) p1 : 角度値(ラジアン) %inst p1のアークサイン(逆正弦)値を返します。 結果は実数型かつラジアン、-M_PI/2〜M_PI/2(度数法で-90°〜90°)の範囲で与えられます。 %href acos atan %url http://ja.wikipedia.org/wiki/%E9%80%86%E4%B8%89%E8%A7%92%E9%96%A2%E6%95%B0 %index acos コサインの逆関数(アークコサイン) %prm (p1) p1 : 角度値(ラジアン) %inst p1のアークコサイン(逆余弦)値を返します。 結果は実数型かつラジアン、0〜M_PI(度数法で0°〜180°)の範囲で与えられます。 %href asin atan %url http://ja.wikipedia.org/wiki/%E9%80%86%E4%B8%89%E8%A7%92%E9%96%A2%E6%95%B0 %index sinh 双曲線正弦関数(ハイパボリックサイン) %prm (p1) p1 : 角度値(ラジアン) %inst p1のハイパボリックサイン(双曲線正弦)値を返します。 結果は実数で与えられます。 %href cosh tanh asinh %url http://ja.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2%E7%B7%9A%E9%96%A2%E6%95%B0 %index cosh 双曲線余弦関数(ハイパボリックコサイン) %prm (p1) p1 : 角度値(ラジアン) %inst p1のハイパボリックコサイン(双曲線余弦)値を返します。 結果は実数で与えられます。 %href sinh tanh acosh %url http://ja.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2%E7%B7%9A%E9%96%A2%E6%95%B0 %index tanh 双曲線正接関数(ハイパボリックタンジェント) %prm (p1) p1 : 角度値(ラジアン) %inst p1のハイパボリックタンジェント(双曲線正接)値を返します。 結果は実数で与えられます。 %href sinh cosh atanh %url http://ja.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2%E7%B7%9A%E9%96%A2%E6%95%B0 %index asinh 双曲線正弦関数の逆関数(アークハイパボリックサイン) %prm (p1) p1 : 角度値(ラジアン) %inst p1のアークハイパボリックサイン(逆双曲線正弦)値を返します。 結果は実数で与えられます。 %href acosh atanh sinh %url http://ja.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2%E7%B7%9A%E9%96%A2%E6%95%B0 %index acosh 双曲線余弦関数の逆関数(アークハイパボリックコサイン) %prm (p1) p1 : 角度値(ラジアン) %inst p1のアークハイパボリックコサイン(逆双曲線余弦)値を返します。 結果は実数で与えられます。 %href asinh atanh cosh %url http://ja.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2%E7%B7%9A%E9%96%A2%E6%95%B0 %index atanh 双曲線正接関数の逆関数(アークハイパボリックタンジェント) %prm (p1) p1 : 角度値(ラジアン) %inst p1のアークハイパボリックタンジェント(逆双曲線正接)値を返します。 結果は実数で与えられます。 %href asinh acosh tanh %url http://ja.wikipedia.org/wiki/%E5%8F%8C%E6%9B%B2%E7%B7%9A%E9%96%A2%E6%95%B0 %index isfinite 有限/無限・非数の判定 %prm (p1) p1 : 判定する値 %inst p1が有限の値ならば1を、p1が無限または非数の時は0を返します。 非数とは数値以外の型(文字列やラベル、モジュール型など)を指すものではありません。変数の型を調べる時はvartype関数を使用してください。 %sample #include "hspmath.as" mes isfinite(10) // 有限の値 mes isfinite(sqrt(-1)) // 非数 mes isfinite(expf(100)) // 有限の値 mes isfinite(expf(1000)) // 無限大 stop %href isnan vartype %index isnan 非数の判定 %prm (p1) p1 : 判定する値 %inst p1が非数の時は1を、それ以外の時は0を返します。 非数とは数値以外の型(文字列やラベル、モジュール型など)を指すものではありません。変数の型を調べる時はvartype関数を使用してください。 %sample #include "hspmath.as" mes isnan(10) // 有限の値 mes isnan(sqrt(-1)) // 非数 mes isnan(expf(100)) // 有限の値 mes isnan(expf(1000)) // 無限大 stop %href isfinite vartype %url http://ja.wikipedia.org/wiki/%E9%9D%9E%E6%95%B0 %index round 四捨五入 %prm (p1) p1 : 四捨五入する値(実数) %inst p1の小数点以下を四捨五入し、その結果を実数で返します。 %sample #include "hspmath.as" repeat 10 tmp = 1.0 + 0.1 * cnt mes strf("%0.1fを四捨五入すると", tmp) + strf("%0.1fになります。", round(tmp)) loop stop %href intf floor ceil %url http://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86 %index sgn 符号 %prm (p1) p1 : 符号を判定する値(数値) %inst 数値の符号を判定し、正ならば1を・負ならば-1を・ゼロならば0を返します。 %sample #include "hspmath.as" tmp = 10 sign = sgn(tmp) if sign == 1 { mes str(tmp) + "は正です。" } else : if sign == -1 { mes str(tmp) + "は負です。" } else { mes str(tmp) + "はゼロです。" } stop %index intf 0の方向へ丸め %prm (p1) p1 : 丸める数値 %inst p1を0の方向に丸めた数値を返します。結果は実数で返されます。 ここで「p1を0の方向に丸める」とは、「p1の小数点以下を切り捨てる」ことを意味します。 %sample #include "hspmath.as" tmp = -2.5 while(tmp <= 2.5) mes strf("%4.1f", tmp) + "を0の方向へ丸めると、" + strf("%4.1f", intf(tmp)) + "になります。" tmp += 0.5 wend stop %href round floor ceil %url http://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86 %index floor 負の方向へ丸め %prm (p1) p1 : 丸める数値 %inst p1を負の方向に丸めた数値を返します。結果は実数で返されます。 ここで「p1を負の方向に丸める」とは、 html{ }html ことを意味します。 %sample #include "hspmath.as" tmp = -2.5 while(tmp <= 2.5) mes strf("%4.1f", tmp) + "を負の方向へ丸めると、" + strf("%4.1f", floor(tmp)) + "になります。" tmp += 0.5 wend stop %href round intf ceil %url http://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86 %index ceil 正の方向へ丸め %prm (p1) p1 : 丸める数値 %inst p1を正の方向に丸めた数値を返します。結果は実数で返されます。 ここで「p1を正の方向に丸める」とは、 html{ }html ことを意味します。 %sample #include "hspmath.as" tmp = -2.5 while(tmp <= 2.5) mes strf("%4.1f", tmp) + "を正の方向へ丸めると、" + strf("%4.1f", ceil(tmp)) + "になります。" tmp += 0.5 wend stop %href round intf floor %url http://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86 %index fmod モジュロ %prm (p1, p2) p1 : 割られる数 p2 : 割る数 %inst p1をp2で割ったときの余りを実数で返します。 \記号による演算とは異なり、実数に対しても有効です。 %sample #include "hspmath.as" mes 5 \ 2 mes fmod(5, 2) // 戻り値は実数となる mes fmod(3.5, 1.2) // 実数を実数で割ったときの余りも求められる stop %url http://ja.wikipedia.org/wiki/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%AD %index distance2 2点の距離を求める %prm (p1, p2) p1, p2 : 点の座標を代入した数値型配列変数 %inst 2点A,B間の距離を求めます。 p1とp2には点の座標を直交座標系で代入しておきます。 html{ }html を代入した状態で呼び出してください。 結果は実数で返されます。 %sample #include "hspmath.as" point_a = 100, 50 // 点A point_b = 500, 400 // 点B mes "2点間の距離は" + distance2(point_a, point_b) + "です。" line point_a(0), point_a(1), point_b(0), point_b(1) color 255 : pset point_a(0), point_a(1) // 点A color ,255 : pset point_b(0), point_b(1) // 点B stop