Почему gmp_mod дает разные результаты на разных платформах? - PullRequest
1 голос
/ 10 декабря 2010

Пожалуйста, рассмотрите этот фрагмент (относится к Как 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 .Но на странице справочника 1020 * также нет ничего, намекающего на различные возможные результаты.И я не понимаю, почему он должен давать разные результаты.

Пожалуйста, запустите приведенный выше фрагмент кода и опубликуйте вывод вместе с используемой вами операционной системой и архитектурой ЦП, чтобы я мог подтвердить, что этоне только моя машина работает.

Кроме того, если вы знаете, является ли это известной проблемой или даже ожидаемым поведением, пожалуйста, укажите мне ссылку в трекере ошибок.В противном случае я открою ошибку с собранными результатами.

Спасибо!

PS Пожалуйста, дайте мне знать, если я должен запросить CW для этого.В противном случае я поставлю ссылку на багтрекер в качестве ответа (если кто-то не придет с убедительным объяснением).

1 Ответ

1 голос
/ 10 декабря 2010

Это ошибка в самом расширении. Я наткнулся на этот отчет об ошибке , когда у меня была такая же проблема несколько недель назад, и пришел к выводу, что это было на самом деле ошибкой в ​​расширении. Я попытался с последним снимком, и он отлично работает.

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
...