1

このスニペットを検討してください( 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_modPHP Bugtracker でのバグを見つけることができませんでした。しかし、マニュアルページにも、考えられるさまざまな結果を示唆するものは何もありません。そして、なぜそれが異なる結果を生み出すべきなのかわかりません。

上記のコード スニペットを実行し、使用しているオペレーティング システムと CPU アーキテクチャと共に出力を投稿してください。私のマシンだけが動作していないことを確認できます。

また、これが既知の問題なのか、予想される動作なのかがわかっている場合は、バグトラッカーのリンクを教えてください。それ以外の場合は、収集した結果でバグを開きます。

ありがとう!

PS このために CW を要求する必要があるかどうか教えてください。それ以外の場合は、バグトラッカーへのリンクを回答として掲載します (誰かが説得力のある説明を思いつかない限り)。

4

1 に答える 1

1

拡張機能自体のバグです。数週間前に同じ問題が発生したときにこのバグ レポートを見つけ、実際には拡張機能のバグであると結論付けました。最新のスナップショットで試してみましたが、問題なく動作します。

PHP Version: 5.3.5-dev
gmp_strval(gmp_mod('-13', '64')) = 51
gmp_strval(gmp_mod(-13, 64)) = 51
gmp_mod(-13, 64) = 51
于 2010-12-10T15:42:58.227 に答える