Matrix Template Library (Matrix Template Library)
Matrix Template Library | |
---|---|
Тип | Математическое ПО |
Написана на | C++ |
Операционные системы | Linux, Unix, Mac OS X, Windows |
Языки интерфейса | C++ |
Лицензия | Boost Software License |
Сайт | mtl4.org |
Матричная библиотека шаблонов (MTL) — это библиотека линейной алгебры для C++ программ.
MTL использует шаблоны C++, которые значительно сокращают код программы. Все матрицы и векторы допустимы во всех классических числовых форматах: float, double, complex <float>
или complex <double>
.
Более того, обобщённое программирование допускает использование произвольных типов до тех пор пока они производят необходимые операции. Например, можно использовать произвольные числовые форматы (например, unsigned short
), типы для интервальной арифметики (например, boost::interval из Boost библиотеки, кватернионы (например, boost::quaternion), типы высокой точности (например, GNU Multi-Precision Library) и соответствующие определённые пользователем типы.
MTL поддерживает различные реализации плотной матрицы и разрежённой матрицы. MTL2 была разработана Jeremy Siek и Andrew Lumsdaine.[1]
Последняя версия, MTL4, была разработана Peter Gottschling и Andrew Lumsdaine. Она содержит большинство функций MTL2, а также дополнена новыми техниками оптимизации, такими как метанастройка, например, раскрутка цикла динамически размеренных контейнеров может быть определена в вызове функции. Независимая от платформы масштабируемость производительности достигнута рекурсивной структурой данных и рекурсивными алгоритмами.[2]
Универсальные приложения могут быть написаны в натуральной нотации (кодировке), например, v += A*q - w
; тогда как библиотека самостоятельно обращается к соответствующим алгоритмам: матрично-векторное умножение или умножение матриц или векторно-скалярное умножение и т. д. Целью является скрыть реализационные вопросы внутри библиотеки и предоставить пользователю наглядный интерфейс. MTL4 используется в различных пакетах, таких как метод конечных элементов и Метод конечных объёмов, например, FEniCS Project.[3]
Примечания
[править | править код]- ↑ J.G. Siek and A. Lumsdaine: The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra. ISCOPE 1998. Архивировано 12 мая 2008 года.
- ↑ P. Gottschling, D.S. Wise, and M.D. Adams: Representation-transparent matrix algorithms with scalable performance. ICS '07: Proc. 21st intern. conf. on Supercomputing, pp. 116—125, ACM Press, New York, 2007. Архивировано 20 июля 2008 года.
- ↑ Dolfin web page within the FEniCS project. (недоступная ссылка)
См. также
[править | править код]- Boost uBLAS, альтернативная библиотека линейной алгебры для C++
- Eigen