C # - Есть ли 32-битная математическая библиотека с плавающей точкой? - PullRequest
5 голосов
/ 13 октября 2008

Я планирую сделать следующий проект на c #, а не на c ++ (используя SlimDX).

Весь DirectX использует числа с плавающей запятой, однако System.Math использует значения типа double. Это означает постоянное преобразование между числами с плавающей точкой и двойными.

Так что в идеале я хотел бы написать весь код с использованием чисел с плавающей запятой, так как я не получаю никакой дополнительной точности при преобразовании чисел с плавающей запятой в любом случае все время ...

Однако я не смог найти набор математических функций для .net, который использует числа с плавающей запятой. Конечно, я мог бы написать свою собственную библиотеку на c #, но вместо этого я использовал бы существующую библиотеку, которая была оптимизирована и т. Д ...

Ответы [ 2 ]

2 голосов
/ 13 октября 2008

XNA предоставляет несколько математических констант (включая 3D-специалистов, таких как PI / 2 и т. Д.) И некоторые расширенные математические функции с плавающей точностью (но не тригонометрические функции). Хотя это, скорее всего, не вариант для вас, поскольку XNA не такой тонкий, как SlimDX, это, безусловно, означает, что System.Math либо чего-то не хватает, либо снижение производительности не так уж велико. По моему опыту, вы на самом деле не так много рассчитываете для себя, потому что большая часть этого обрабатывается либо классами геометрии (Matrix, Quaternion, Vector) или самим GPU.

С этой точки зрения я бы посмотрел на SlimDX, что они предоставляют. Похоже, типичные вещи, такие как матрицы, векторы, кватернионы (и даже 16-битные числа с плавающей запятой) уже есть. Если вам не хватает некоторых констант с плавающей точностью, просто создайте их самостоятельно (не нужно выполнять приведение каждый раз, только при запуске).

1 голос
/ 27 октября 2009

Да, вы добьетесь очень значительного прироста производительности, работая сквозным образом в плавающих числах, если это все, что требуется.

Проверьте библиотеки NMath из программного обеспечения CenterSpace. Повсеместно в библиотеке поддерживаются типы с плавающей запятой, двойные и сложные типы.

Пол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...