Iterative Template Library

Iterative Template Library

The Iterative Template Library (ITL) is a generic component library that provides iterative methods for solving linear systems. ITL also provides numerous preconditioners which is for MTL. The ITL was written at the Open Systems Lab of Indiana University by Andrew Lumsdaine, Lie-Quan Lee, Jeremy Seik, and others.

ITL uses the abstract interface of matrix–vector, vector–vector, and vector–scalar operations MTL is default to serve those operations. ITL is able to use other packages such as Blitz++ and BLAS with the same abstract interface provided.

Because generic programming encourages simplifying interfaces to only what is required by the logic they support, the ITL algorithms resemble pseudocode, at least when compared with other implementations of the same algorithms. For example, ITL's conjugate gradient follows: /* required operations: mult,copy,dot_conj,add,scaled */ template < class Matrix, class VectorX, class VectorB, class Preconditioner, class Iteration > int cg(const Matrix& A, VectorX& x, const VectorB& b, const Preconditioner& M, Iteration& iter) { typedef VectorX TmpVec; typename itl_traits::value_type rho(0), rho_1(0), alpha(0), beta(0); TmpVec p(size(x)), q(size(x)), r(size(x)), z(size(x)); itl::mult(A, itl::scaled(x, -1.0), b, r); while (! iter.finished(r)) { itl::solve(M, r, z); rho = itl::dot_conj(r, z); if (iter.first()) itl::copy(z, p); else { beta = rho / rho_1; itl::add(z, itl::scaled(p, beta), p); } itl::mult(A, p, q); alpha = rho / itl::dot_conj(p, q); itl::add(x, itl::scaled(p, alpha), x); itl::add(r, itl::scaled(q, -alpha), r); rho_1 = rho; ++iter; } return iter.error_code(); }

ee also

* Template Numerical Toolkit

External links

* [http://www.osl.iu.edu/research/itl/ ITL Home Page]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Template Numerical Toolkit — У этого термина существуют и другие значения, см. TNT (значения). Template Numerical Toolkit (TNT; рус. Библиотека численных шаблонов)  библиотека шаблонов в языке программирования C++ для манипуляций одномерными, двумерными и трёхмерными… …   Википедия

  • Template Numerical Toolkit — The Template Numerical Toolkit (or TNT) is a software library for manipulating vectors and matrices in C++ created by the U.S. National Institute of Standards and Technology. TNT provides the fundamental linear algebra operations (for example,… …   Wikipedia

  • Template (word processing) — The term template, when used in the context of word processing software, refers to a sample fill in the blank document that can be completed either by hand or through an automated iterative process, such as a with a wizard. Oncethe template is… …   Wikipedia

  • IML++ — IML++, or the Iterative Methods Library, is a C++ library for solving linear systems of equations. It is said to be templated in the sense that the same source code works for dense, sparse, and distributed matrices.Some of the supported solutions …   Wikipedia

  • Chebyshev iteration — In numerical linear algebra, the Chebyshev iteration is an iterative method for determining the solutions of a system of linear equations. The method is named after Russian mathematician Pafnuty Chebyshev. Chebyshev iteration avoids the… …   Wikipedia

  • ITL — can refer to:* In the Loop, an American radio program * In the Labyrinth , a role playing system built on The Fantasy Trip * Interval Temporal Logic, a temporal logic * Iterative Template Library, a generic component library * Italian lira, the… …   Wikipedia

  • Open Containers — OpenContainers (aka OC) is an open C++ containers library, similar to the C++ Standard Template Library (aka the C++ STL or STL) or Boost library.OpenContainers addresses threading issues (see below) that the STL does not. The OC also has tools… …   Wikipedia

  • Insight Segmentation and Registration Toolkit — Infobox Software name = ITK caption = ITK Logo developer = Insight Software Consortium latest release version = 3.8.0 latest release date = July 30, 2008 operating system = Cross platform genre = Development Library license =… …   Wikipedia

  • Stapelspeicher — Vereinfachte Darstellung eines Stacks mit den Funktionen Push (drauflegen) und Pop (runternehmen) In der Informatik bezeichnet ein Stapelspeicher oder Kellerspeicher (kurz Stapel oder Keller, häufig auch mit dem englischen Wort Stack bezeichnet)… …   Deutsch Wikipedia

  • Метод конечных разностей во временной области — (англ. Finite Difference Time Domain, FDTD)  один из наиболее популярных методов численной электродинамики, основанный на дискретизации уравнений Максвелла, записанных в дифференциальной форме. Содержание 1 Описание 2 Алгоритм Йи …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”