- Member cml::et::detail::MatrixAssignmentUnroller::operator() (matrix_type &dest, const SrcT &src, cml::dynamic_size_tag)
- This needs to be specialized for efficient row-major or col-major layout access.
- Member cml::et::QuaternionInverseOp::imaginary () const
- This could be returned as a VectorXpr also.
- Member cml::quaternion::normalize ()
- Make this return a QuaternionXpr.
- File cml.h
- load vectors, matrices, and quaternions from a stream.
- File cml.h
- Move common vector and matrix class ops to a base class (requires SCOOP-like programming, see below).
- File cml.h
- Implement matrix<>::orthogonalize().
- File cml.h
- Add is_square<>, is_rectangular<>, etc. to make it easier to detect specific matrix types.
- File cml.h
- Implement dedicated square matrix classes to get rid of duplicated code in the specialized matrix classes.
- File cml.h
- Implement automatic temporary generation, along with expression node return types for mat-vec and mat-mat operators.
- File cml.h
- switch to ssize_t instead of size_t to avoid having to explicitly deal with wrap-arounds to 2^32-1 when a size_t is subtracted from.
- File cml.h
- Finish tests for mat-vec multiply.
- File cml.h
- Differentiate between references used for function arguments, and those used for variable types. In particular, GCC 3.4 requires const T & function arguments to ensure complete unrolling/inlining of expressions.
- File cml.h
- Specialize matrix multiplication based upon the size type (fixed or dynamic). This makes a difference for at least GCC 3.4.
- File cml.h
- need a build system for the tests/ and examples/ directories.
- File cml.h
- clean up the testing infrastructure, and make it easier to add new tests
- File cml.h
- figure out if scalars should be passed by value or reference, or if it should be determined by traits
- File cml.h
- change use of typename and class to be like Alexandrescu book
- File cml.h
- figure out if it makes sense to unroll assignment if either the source expression or the target vector/matrix has a fixed size (right now, unrolling happens only if the target has a fixed size)
- File cml.h
- Allow addition of new types, a la glommable ETs (but simpler). Can use ideas from "SCOOP" method: Nicolas Burrus, Alexandre Duret-Lutz, Thierry Géraud, David Lesage and Raphaël Poss. A Static C++ Object-Oriented Programming (SCOOP) Paradigm Mixing Benefits of Traditional OOP and Generic Programming. In the Proceedings of the Workshop on Multiple Paradigm with OO Languages (MPOOL'03) Anaheim, CA, USA Oct. 2003
- File external_1D.h
- Need a better way to designate non-resizable, run-time sized arrays (e.g. by a resizeable tag).
- File external_2D.h
- Would casting get better performance in the external_2D<> element access methods?
- File array_promotions.h
- Can/should an expression with a fixed-size argument promote to a fixed array instead of a dynamic array?
- Member cml::random_unit (vector< E, A > &v)
- : This is just placeholder code for what will be a more thorough 'random unit' implementation:
- Member cml::random_unit (vector< E, A > &v)
- : Once N-d random vectors are supported, add a 'random unit quaternion' function that wraps a call to random_unit() with a 4D vector as the argument.
- File determinant.h
- This should be specialized on the matrix size for small matrices.
- File lu.h
- The LU implementation does not check for a zero diagonal entry (implying that the input has no LU factorization).
- File lu.h
- Should also have a pivoting implementation.
- File lu.h
- need to throw a numeric error if the determinant of the matrix given to lu(), lu_solve(), or inverse() is 0.
- File matrix_comparison.h
- The matrix and matrix order operators could probably be combined into a single templated implementation, since the only thing that is different is the access method.
- File matrix_expr.h
- Dynamic resizing needs to be integrated more naturally into mul() and matrix transpose():
- Member cml::identity (const matrix< E, AT, BO, L > &m)
- This should return a MatrixXpr to allow loop unrolling, as should the class method.
- File matrix_mul.h
- Does it make sense to put mat-mat multiplication as a node into the expression tree?
- File matrix_transpose.h
- Currently, the transpose() and T() functions copy the transposed result into a temporary, and return it to avoid aliasing problems, e.g. C = transpose(C). By checking for C on the right-hand side, this can be avoided, but experimentation is needed to determine the impact on performance. Another option is to use a function to explicitly specify when a temporary is needed; e.g. C = transpose(temp(C)).
- File matrix_unroller.h
- Need to implement unrolling for efficient col-major array access.
- File matrix_unroller.h
- Does it make sense to unroll an assignment if either side of the assignment has a fixed size, or just when the target matrix is fixed size?
- File matvec_mul.h
- Implement smarter temporary generation.
- File matvec_mul.h
- Does it make sense to put mat-vec multiplication as a node into the expression tree?
- File quaternion.h
- Return a VectorXpr adaptor from the imaginary() method of quaternion and the expression node types.
- File quaternion.h
- swap multiplication order based upon template param
- File quaternion.h
- change element order based upon template param
- File quaternion_functions.h
- The functions that return quaternions and vectors should be changed to return quaternion expression nodes, as should the corresponding class methods.
- File vecop_macros.h
- Should ScalarT in expressions be passed by reference or by value?
- File vector_products.h
- Figure out if the source or destination size type should trigger unrolling. May need a per-compiler compile-time option for this.
- File vector_unroller.h
- Add unrolling for dynamic vectors, and for vectors longer than CML_VECTOR_UNROLL_LIMIT.
- File vector_unroller.h
- Does it make sense to unroll an assignment if either side of the assignment has a fixed size, or just when the target vector is fixed size?
Generated on Sat Jul 18 19:35:36 2009 for CML 1.0 by
1.5.9