Ответ 1
Повторно проверьте, что ol'good друг программистов на С++ называется Boost. Он имеет пакет линейной алгебры, который вполне может удовлетворить ваши потребности.
Мне понадобились бы базовые векторные математические конструкции в приложении. Точечный продукт, кросс-продукт. Поиск пересечения линий, такого рода вещи.
Я могу сделать это сам (на самом деле, уже), но не существует ли "стандарт" для использования таких ошибок, и возможные оптимизации не будут на мне?
У Boost его нет. Их математическая часть касается статистических функций, насколько я мог видеть.
Добавление:
Boost 1.37 действительно кажется this. Они также изящно представляют ряд других решений на поле, и почему они все еще пошли и сделали свои собственные. Мне это нравится.
Повторно проверьте, что ol'good друг программистов на С++ называется Boost. Он имеет пакет линейной алгебры, который вполне может удовлетворить ваши потребности.
Я не тестировал его, но в наши дни становится все более популярной С++ собственная библиотека. По их словам, они находятся на одном уровне с самыми быстрыми библиотеками, и их API выглядит довольно аккуратно для меня.
Армадилло использует задержанную оценку подход к объединению нескольких операций в один и уменьшить (или устранить) потребность во временных. где применимо, порядок операций оптимизировано. Отсроченная оценка и оптимизация достигается посредством рекурсивные шаблоны и шаблоны мета-программирование.
В то время как операции с цепочкой, такие как сложение, вычитание и умножение (матрица и элементарно) являются основными целями для ускорения, другие операций, таких как манипулирование подматрицы также могут быть оптимизированы. Была предпринята забота об обеспечении эффективности для "малых" и "больших" матриц.
Я бы держался подальше от использования кода NRC для чего-то другого, кроме изучения понятий.
Я думаю, что вы ищете Blitz ++
Отметьте www.netlib.org, который поддерживается Национальной лабораторией Ок-Ридж и Университетом Теннесси. Вы можете найти там числовые пакеты. Там также Numericical Recipes in С++, в котором есть код, который идет с ним, но версия С++ книги несколько дорогая, и я слышал код, описанный как "ужасный". Варианты C и FORTRAN являются бесплатными, а соответствующий код довольно хорош.
В пророческой версии SDK есть красивая векторная библиотека для 3D-графики:
Для линейной алгебры: попробуйте JAMA/TNT. Это будет охватывать точечные продукты. (+ матричный факторинг и другие вещи) Что касается векторных кросс-продуктов (действительно действителен только для 3D, в противном случае я думаю, что вы попадаете в тензоры), я не уверен.
Для библиотеки с очень легким (одиночным файлом .h) проверьте CImg. Он ориентирован на обработку изображений, но не имеет проблем с обработкой векторов.