std.math

数の計算と乱数。三角関数の角度は弧度法(ラジアン)。 int と float は混ぜて渡せないので、float(n) で揃えてから呼ぶ。

import std.math;
print(math.sqrt(9.0));   // 3.0
math.PI math.E math.INF math.abs math.min math.max math.clamp math.sqrt math.pow math.exp math.log math.log10 math.sin math.cos math.tan math.asin math.acos math.atan math.atan2 math.floor math.ceil math.round math.trunc math.is_nan math.is_inf math.random math.random_int math.seed
math.PI: float

円周率。

print(math.PI > 3.14);   // true
math.E: float

自然対数の底。

print(math.E > 2.71);   // true
math.INF: float

無限大。

print(math.is_inf(math.INF));   // true
math.abs(x: int) → int

絶対値。

オーバーロード: math.abs(x: float) -> float

print(math.abs(-3));      // 3
print(math.abs(-1.5));    // 1.5
math.min(a: int, b: int) → int

小さい方を返す。

オーバーロード: math.min(a: float, b: float) -> float

print(math.min(3, 7));        // 3
print(math.min(1.5, 0.5));    // 0.5
math.max(a: int, b: int) → int

大きい方を返す。

オーバーロード: math.max(a: float, b: float) -> float

print(math.max(3, 7));        // 7
print(math.max(1.5, 0.5));    // 1.5
math.clamp(x: int, lo: int, hi: int) → int

lo と hi の間に収める。

オーバーロード: math.clamp(x: float, lo: float, hi: float) -> float

xint収めたい値
loint下限。これより小さければ lo になる
hiint上限。これより大きければ hi になる
print(math.clamp(120, 0, 100));      // 100
print(math.clamp(-0.5, 0.0, 1.0));   // 0.0
math.sqrt(x: float) → float

平方根。負の数なら nan。

print(math.sqrt(9.0));   // 3.0
math.pow(x: float, y: float) → float

べき乗(x の y 乗)。

print(math.pow(2.0, 10.0));   // 1024.0
math.exp(x: float) → float

e の x 乗。

print(math.exp(0.0));   // 1.0
math.log(x: float) → float

自然対数。

print(math.log(1.0));   // 0.0
math.log10(x: float) → float

常用対数(底が 10)。

print(math.log10(1000.0));   // 3.0
math.sin(x: float) → float

正弦。角度は弧度法。

print(math.sin(0.0));   // 0.0
math.cos(x: float) → float

余弦。角度は弧度法。

print(math.cos(0.0));   // 1.0
math.tan(x: float) → float

正接。角度は弧度法。

print(math.tan(0.0));   // 0.0
math.asin(x: float) → float

逆正弦。

print(math.asin(0.0));   // 0.0
math.acos(x: float) → float

逆余弦。

print(math.acos(1.0));   // 0.0
math.atan(x: float) → float

逆正接。

print(math.atan(0.0));   // 0.0
math.atan2(y: float, x: float) → float

座標から角度を出す。戻りは -π 〜 π。

var deg = math.atan2(1.0, 1.0) * 180.0 / math.PI;
print(deg);   // 45.0
math.floor(x: float) → int

小さい方の整数に丸める。

print(math.floor(-1.5));   // -2
math.ceil(x: float) → int

大きい方の整数に丸める。

print(math.ceil(1.2));   // 2
math.round(x: float) → int

四捨五入する。

print(math.round(2.5));   // 3
math.trunc(x: float) → int

0 の方へ落とす。

print(math.trunc(-1.5));   // -1
math.is_nan(x: float) → bool

数でない値(nan)かどうか。

print(math.is_nan(math.sqrt(-1.0)));   // true
math.is_inf(x: float) → bool

無限大かどうか。

print(math.is_inf(1.0 / 0.0));   // true
math.random() → float

0 以上 1 未満の乱数。

math.seed(42);
print(math.random() < 1.0);   // true
math.random_int(lo: int, hi: int) → int

lo 以上 hi 以下の整数の乱数。

lointいちばん小さい値
hiintいちばん大きい値。lo より小さいと実行時エラー
math.seed(42);
print(math.random_int(1, 6));   // 1(種が同じなら、どこでも同じ並びになる)
math.seed(n: int) → void

乱数の種を決める。同じ種なら、どの環境でも同じ並びになる。

math.seed(42);
write(math.random_int(1, 100)); write(" ");   // 37
math.seed(42);
print(math.random_int(1, 100));               // 37(同じ種なら同じ)