Subject: [boost] [qvm] few q's for emil
From: Jeffrey Lee Hellrung, Jr. (jeffrey.hellrung_at_[hidden])
Date: 2011-07-18 00:16:21
Emil, I have a few quick and random questions concerning (proposed)
Boost.QVM, which I notice is still in the review queue without a review
manager (I may be able to help in that regard if things go well with
Lorenzo's (proposed) Boost.Local review). I might be able to utilize this
in some of my future work, so I'm interested.
First, a very general question. Can you explain where QVM fit within the
large collection of linear algebra libraries? What additional value is QVM
providing that you feel other solutions are lacking?
Now, I've barely scratched the documentation and I already have some
First, it doesn't look like you support read-only or write-only structures,
or structures for which writing is effected through a proxy reference.
E.g., v_traits<V>::r<I>(v) and v_traits<V>::w<I>(v) must always be
supported, and v_traits<V>::w<I>(v) must return a reference-to-non-const.
It seems like, in particular, read-only structures could be useful (e.g., a
stateless standard basis vector or identity matrix), as could proxy
structures (c*v could be a proxy vector where w<0>(c*v) = 1 is equivalent to
w<0>(v) = 1/c). Comment?
Why do you require the dimension of vectors (and, likely, matrices; I
haven't checked) to be strictly greater than 0? Sometimes a 0-dimensional
vector is convenient to have when writing dimension-independent code.
I noticed that among the vector operations is a cross product for 3-vectors,
but no cross product for vectors of other dimensions. Such a construct is
useful for computing normals to hyperplanes in D-dimensional space. I can
help you add it if you think it fits.
What algorithm do you use for computing determinants?
I think a signed volume function would fit in well with the matrix
operations. I can help you add this, too.
Hmmm...how do you compute the magnitude of a vector given the scalar
requirements defined at
? Seems like you would need a square root function, and possibly even a
conjugation function if you want to support complex scalar types...
Okay that's it for now,
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk