C ++ библиотека с открытым исходным кодом для векторной математики - PullRequest
15 голосов
/ 12 декабря 2008

Мне понадобятся некоторые базовые конструкции векторной математики в приложении. Точечный продукт, перекрестный продукт. Нахождение пересечения линий, такого рода вещи.

Я могу сделать это сам (на самом деле, уже), но разве не существует «стандарта» для использования, чтобы не было ошибок и возможных оптимизаций для меня?

У Boost его нет. Насколько я мог видеть, их математическая часть посвящена статистическим функциям.

Добавление:

Boost 1.37 действительно имеет this . Они также изящно представляют ряд других решений на местах, и почему они все еще пошли и сделали свои собственные. Мне это нравится.

Ответы [ 8 ]

11 голосов
/ 12 декабря 2008

Я не тестировал его, но собственная библиотека C ++ становится все более популярной в наши дни. По их словам, они находятся на одном уровне с самыми быстрыми библиотеками, и их API выглядит довольно аккуратно.

10 голосов
/ 12 декабря 2008

Перепроверьте, что хороший друг программистов на C ++ назвал Boost . Он имеет пакет линейной алгебры , который вполне может удовлетворить ваши потребности.

5 голосов
/ 11 марта 2009

Armadillo

Armadillo использует отложенную оценку подход к объединению нескольких операций в один и уменьшить (или устранить) нужны для временных. куда применимо, порядок операций оптимизировано. Задержка оценки и оптимизация достигается за счет рекурсивные шаблоны и шаблоны мета-программирования.

В то время как связанные операции, такие как сложение, вычитание и умножение (матрица и поэтапно) являются основными целями для ускорения возможностей, другие операции, такие как манипулирование подматрицы, также могут быть оптимизированы. Забота была предпринята для поддержания эффективности для «маленьких» и «больших» матриц.

2 голосов
/ 12 декабря 2008

Я бы не стал использовать код NRC для чего-либо, кроме изучения концепций.

Я думаю, что вы ищете Blitz ++

1 голос
/ 12 декабря 2008

Чек www.netlib.org , который поддерживается Национальной лабораторией Ок-Риджа и Университетом Теннесси. Вы можете искать числовые пакеты там. Есть также Числовые рецепты в C ++ , в которых есть код, который идет вместе с ним, но версия книги на C ++ несколько дорогая, и я слышал, что код описан как «ужасный». Версии C и FORTRAN бесплатны, и соответствующий код довольно хорош.

0 голосов
/ 12 декабря 2008

Для очень легкой (одиночный .h файл) библиотеки проверьте CImg . Он предназначен для обработки изображений, но не имеет проблем с обработкой векторов.

0 голосов
/ 12 декабря 2008

Для линейной алгебры: попробуйте JAMA / TNT . Это будет охватывать точечные продукты. (+ матричный факторинг и другие вещи). Что касается векторных кросс-произведений (действительно только для 3D, иначе я думаю, что вы попадаете в тензоры), я не уверен.

0 голосов
/ 12 декабря 2008

В SDK-пророчестве есть замечательная библиотека векторов для 3d-графики:

Выезд http://www.twilight3d.com/downloads.html

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