- 33 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 19:36:54.16 ID:RiWaIeZZ.net]
- >>30
貴方が配慮を欠いている そのx^nつまりxのn乗を求めるにしても 例えば2^100を求めたいならば128bitがないと溢れるのでu128::pow(2, 100)となるが 2^5を求めたいだけで結果も8bitで十分ならばu8::pow(2, 5)となる このようにメモリサイズも異なってくるので別々の関数が必要 もちろんu128::pow(x, n)があればu8::(x, n)をカバーできるが明らかに無駄である そこで符号なし整数だけでも u8::pow(x, n) u16::pow(x, n) u32::pow(x, n) u64::pow(x, n) u128::pow(x, n) と5つの関数が必要となる 一方でxの型が確定しているのであればpowで再び型指定は不要なので x.pow(n)と表記することも可能 以上は整数の場合だがxとpowの結果が小数の場合は2種類の関数が必要となる f32::powi(x, n) 【nが整数の場合】 f32::powf(x, n) 【nも小数の場合】 もちろんnが小数のpowfだけあればpowiもカバーできるが明らかに無駄なので2種類必要となる さらに32bit小数だけでなく64bit小数も扱う必要があるため以下も必要 f64::powi(x, n) 【nが整数の場合】 f64::powf(x, n) 【nも小数の場合】 これらもxの型が確定していれば以下のように略して書くことも可能 x.powi(n) 【nが整数の場合】 x.powf(n) 【nも小数の場合】 ちなみに「x^n」を表記するのに不自然な「pow(x, n)」よりも「x.pow(n)」の方がたまたま自然に見えるが誤差だろう どちらでも好きな表記法を選べばよいだけにすぎない
|

|