$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] Interested in a generic safe n-dimensional matrix/vector library?
From: ТимоÑей ÐгнаÑÑÐ¸Ñ (fhq_at_[hidden])
Date: 2011-02-21 15:19:42
c++0x features allow us to implement some nice stuff:
- Safe variadic functions with parameter count checking. For example consider a constructor of the N dimensional vector of T takes only N farameters that are convertable to T and fails othervise:
vector<T, N> v(/*...N parameters convertable to T...*/);
vector<float, 3> v(1,2,3); // good
vector<float, 4> v(1.f,2.f); //fails
vector<int, 3> v(1,2,3,4); //fails
vector<int, 4> v(1,2,3,4); //good
or an N dimensional cross product function that takes exactly N-1 vectors of dimension N:
cross(v1,v2,v3,/*...*/, vn-1);
Please note that N is arbitrary positive integer and is only restricted by compiler's template recursion depth.
- Same type comversion as for fundamental types. This means that char multiplied by int gives int result and int multiplied by float gives float result. vectors work exactly the same:
vector<float, 3> vf;
vector<int, 3> vl;
vector<short, 3> vs;
vector<double, 3> vd;
vi*vf; //returns vector<float, 3>
vf*vd; //returns vector<double, 3>
vs*vi; //returns vector<int, 3>
Among other notable features are matrix matrix and vector matrix multiplications, component vise addition/substraction/multiplication/division, dot product, matrix inversion, matrix determinant calculation, etc.
I want to know if there is any interest in such a library in boost community, and if so to make it available for public inspecion and criticism.