-
Notifications
You must be signed in to change notification settings - Fork 207
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
np.round
を用いているところをnp.ceil
に置き換えたい
#552
Comments
調べてみるとなかなか面白い議論だなと思いました! まず規格ですが、どうやらIEEEでは四捨五入ではなく偶数丸めが規格化されている(?)ようでした。 それはさておいてroundをceilに変えるかどうかですが、例えばsumを取る前の処理とかでceilを使うと、sumの結果が大きく変わる可能性に気づきました。
みたいな処理があったとき、roundをceilにすると Pythonで四捨五入にする方法はまあありそう↓なのですが、numpyで効率的にやる方法は全然出てこないですね・・・・・・・・・。 |
np.round
を用いているところをnp.cell
に置き換えたいnp.round
を用いているところをnp.ceil
に置き換えたい
Python以外で偶数丸めを表現することは普通にできそうです。CPythonの実装でどうやって偶数丸めにしているのか調べたところ、単にこうやっているだけだったようなので、これをそのままやれば模倣できると思います。 実際試してみたところ、x86_64のWindows, macOS, Linux上にてRustで計算した値が あとrust-lang/libmというライブラリの |
なるほど。 なので、ここはもうこの挙動のあり方を受け入れて、 どうでしょうか....! |
こちらの方針で着手します。 |
内容
Pythonの
round
関数は、単に四捨五入をするわけではなく、偶数丸めをしています。これは、他の言語と異なる挙動であり、他の言語でエンジンを実装する際などに、影響を及ぼすことがあります。この挙動は、もちろんnp.round
にも引き継がれています。なので、大体どの言語でも仕様が同じである
np.ceil
(無条件に切り上げ)もしくはnp.floor
(無条件切り捨て)に変える方がよいのではないかと思いました。もしくは、可能であるなら、他の言語と同じ挙動をする
round
関数を独自に作るのもいいかもと思いました。Pros 良くなる点
Python独自の仕様に悩まされることがなくなるかも?
Cons 悪くなる点
今までと生成される音の長さが変わる
実現方法
書き換える
The text was updated successfully, but these errors were encountered: