content: %dll
  hspmath
  %ver
  3.6
  %date
  2011/05/10
  %group
  数学関数
  %port
  Win
  Mac
  Cli
  Let
  %author
  HSPWiki
  %note
  hspmath.asをインクルードすること。
  
  
  
  %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{
  <ul><li>p1が正ならば小数点以下を切り捨てる</li><li>p1が負ならば小数点以下を切り上げる</ul>
  }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{
  <ul><li>p1が正ならば小数点以下を切り上げる</li><li>p1が負ならば小数点以下を切り捨てる</ul>
  }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{
  <ul><li>p1(0)に点AのX座標</li><li>p1(1)に点AのY座標</li><li>p2(0)に点BのX座標</li><li>p2(1)に点BのY座標</li></ul>
  }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
  