Библиотека С++ с открытым исходным кодом для векторной математики

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

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

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

Добавление:

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

Ответы

Ответ 1

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

Ответ 2

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

Ответ 3

Armadillo

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

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

Отъезд http://www.twilight3d.com/downloads.html

Ответ 7

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

Ответ 8

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