Пожалуйста, обратите внимание этот фрагмент (относящийся к How is 13 % 64= -13)Почему gmp_mod производит разные результаты на разных платформах?
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.
I could not find a bug for gmp_mod
on the PHP Bugtracker. Но на manual page нет ничего намека на разные возможные результаты. И я не понимаю, почему он должен давать разные результаты.
Пожалуйста, запустите приведенный выше фрагмент кода и опубликуйте вывод вместе с той операционной системой и архитектурой процессора, которую вы используете, поэтому я могу подтвердить, что не только моя машина работает.
Кроме того, если вы знаете, является ли это известной проблемой или даже ожидаемым поведением, укажите мне ссылку в bugtracker. В противном случае я открою ошибку с собранными результатами.
Спасибо!
P.S. пожалуйста, дайте мне знать, если я попрошу CW для этого. В противном случае я поставлю ссылку на bugtracker в качестве ответа (если кто-то не придумает убедительного объяснения).
+1 Странно, что я тоже. не CW – mario 2010-12-10 14:56:39