このスニペットを検討してください( How is 13 % 64= -13に関連)
if(extension_loaded('GMP')) {
printf("
PHP Version: %s
gmp_strval(gmp_mod('-13', '64')) = %s
gmp_strval(gmp_mod(-13, 64)) = %s
gmp_mod(-13, 64) = %s
",
phpversion(),
gmp_strval(gmp_mod('-13', '64')),
gmp_strval(gmp_mod(-13, 64)),
gmp_mod(-13, 64)
);
}
私のWin7、x64では、これにより生成されます
PHP Version: 5.3.3
gmp_strval(gmp_mod('-13', '64')) = 51
gmp_strval(gmp_mod(-13, 64)) = -51
gmp_mod(-13, 64) = -51
http://codepad.viper-7.com/gqN5aaでは 51 しか生成されないため、これは奇妙です。
gmp_mod
PHP Bugtracker でのバグを見つけることができませんでした。しかし、マニュアルページにも、考えられるさまざまな結果を示唆するものは何もありません。そして、なぜそれが異なる結果を生み出すべきなのかわかりません。
上記のコード スニペットを実行し、使用しているオペレーティング システムと CPU アーキテクチャと共に出力を投稿してください。私のマシンだけが動作していないことを確認できます。
また、これが既知の問題なのか、予想される動作なのかがわかっている場合は、バグトラッカーのリンクを教えてください。それ以外の場合は、収集した結果でバグを開きます。
ありがとう!
PS このために CW を要求する必要があるかどうか教えてください。それ以外の場合は、バグトラッカーへのリンクを回答として掲載します (誰かが説得力のある説明を思いつかない限り)。