GMP mpf_mul возвращает неверный результат - PullRequest
0 голосов
/ 26 мая 2020

Я тестирую GMP в. NET с помощью Math.Gmp.Native. NET NuGet package , но получаю некоторые неожиданные результаты, когда выполняю простую операцию умножения. Может кто-нибудь объяснить, почему у меня здесь неправильный результат? Я думал, что GMP должен был выполнять операции с произвольной точностью.

using Math.Gmp.Native;

...

var strPi = "3.14159";
var gmpPi = new mpf_t();
gmp_lib.mpf_init_set_str(gmpPi, new char_ptr(strPi), 10);
mpf_t gmpPiSquared = new mpf_t();
gmp_lib.mpf_init(gmpPiSquared);
gmp_lib.mpf_mul(gmpPiSquared, gmpPi, gmpPi);
Console.WriteLine(gmpPi.ToString()); //0.314159e1
Console.WriteLine(gmpPiSquared.ToString()); //output: 0.986958772809999999989e1, expected: 0.98695877281e1
decimal decPi = decimal.Parse(strPi);
decimal decPiSquared = decPi * decPi;
Console.WriteLine(decPiSquared.ToString()); //output for comparison with mpf_mul: 9.8695877281
Console.ReadLine();
...