#python #c #computational-geometry #gmp
Вопрос:
Я использую pycddlib (оболочку Python для cddlib Комея Фукуды) для генерации всех вершин многогранника, заданных линейными неравенствами. Чтобы предотвратить неточные вычисления, вызванные арифметикой с плавающей запятой, я хотел бы использовать точную арифметику. В cddlib говорится, что
Когда наблюдается какое-то странное поведение, всегда разумно создать рациональное приближение входных данных (например, можно заменить 0,3333333 на 1/3) и вычислить его с помощью cddlib, скомпилированного с GMP Rational, чтобы увидеть, каким должно быть правильное поведение. Всякий раз, когда время не имеет значения, безопаснее использовать рациональную арифметику GMP.
Существует возможность выбрать дроби вместо плавающей, определив неравенства: mat = cdd.Matrix([[2,-1,-1,0],[0,1,0,0],[0,0,1,0]], number_type='fraction')
Но как я узнаю, скомпилирован ли ccdlib теперь с помощью GMP Rational?