Efficient Interval Matrix Computation with IntBLAS in C++
This paper introduces IntBLAS, a powerful library for performing interval matrix computations in C++. It highlights the motivations for using interval arithmetic and the benefits of IntBLAS, including ease of installation and cross-platform compatibility. The library offers a comprehensive set of subroutines for basic interval arithmetic and linear algebra, encapsulated in a user-friendly package. Additionally, core and auxiliary classes manage interval objects efficiently. The document concludes with future work directions, including support for banded matrices and arbitrary precision arithmetic.
Efficient Interval Matrix Computation with IntBLAS in C++
E N D
Presentation Transcript
A Computational Environment for Interval Matrices in C++ Michael Nooner and Chenyi Hu Computer Science Department, University of Central Arkansas
Introduction • Motivations • What is IntBLAS • Why use IntBLAS • The package
Motivations • Profil, IntLAB, IntLib • Easy to use • Cross platform
What Is IntBLAS • Interval BLAS Standard • Basic Interval Arithmetic Subroutines (IntLib) • Interval Basic Linear Algebra Subroutines • Level 1, 2, 3 • C++ Implementation • Three core objects • Three auxiliary objects
Why use IntBLAS • Easy to install • GCC • Visual Studio • More on the way … • Cross Platform • Open Source (LGPL) • Well Documented • Easy to use
The Package • One header • IntBLAS.h • Two Static Libraries • intblas.lib (optimized) • intblas_d.lib (debug) • One Namespace • intblas • One Initialization Function • INIT_INTERVAL()
The Package #include<IntBLAS.h> using namespace intblas; int main() { INIT_INTERVAL(); Interval a( .1 ); IntervalMatrix m( 2, 2 ), result; m[0][0] = 2.3; m[0][1] = 3.3; m[1][0] = 5.5; m[1][1] = a; result = m + a;
Core Classes • Three Main Classes • Interval • IntervalVector • IntervalMatrix
Interval Class • IntLib • Double precision • Rounding • Round Up: add one ε • Round Down: subtract one ε • 16th – 18th significant digit
Interval Class • Arithmetic operators • Standard Functions • ipow, isin, isqrt, ilog, iatan … • Additional interval set routines • isEmpty(), midpoint(), width(), …
IntervalVector and IntervalMatrix • BLAS Standard • Method/Function pairs double norm( NORMTYPE n ); friend double norm( IntervalMatrix& a, NORMTYPE n ); • Arithmetic operators • Assignment operator • Intermediate values
Error Handling • INTERVAL_EXCEPTION int code char msg[200] • Global Error Object • 32 predefined codes setError( int code, const char* msg = NULL ) getLastError()
IntervalVectorT & IntervalMatrixT • Enables strong dimension checking • Typdef common matrices and vectorstypedef IntervalMatrixT<2,2> IMatrix2x2;. . .IMatrix2x2 m, n, o;
Problem • Solve the following set of linear equations:
Problem • By paper the solution is
Conclusion • Interval Basic Linear Algebra Subprograms • Easy to install • Cross Platform • Open Source • Well Documented • Easy to use • Download it from http://www.geocities.com/mike_nooner
Future Work • Banded and Sparse Matrices • Arbitrary precision arithmetic • Fuzzy Logic Module • Interval Based LU Decomposition • Other cool stuff!