| Commit message (Collapse) | Author | Age |
| |
|
| |
|
|
|
|
| |
As discussed on the list (too long to explain here).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specialization
of ei_matrix_array for size 0
* adapt many xprs to have the right storage order, now that it matters
* add static assert on expressions to check that vector xprs
have the righ storage order
* adapt ei_plain_matrix_type_(column|row)_major
* implement assignment of selfadjointview to matrix
(was before failing to compile) and add nestedExpression() methods
* expand product_symm test
* in ei_gemv_selector, use the PlainObject type instead of a custom Matrix<...> type
* fix VectorBlock and Block mistakes
|
|
|
|
|
|
| |
EIGEN_DONT_ALIGN_HEAP (disables aligned malloc)...
you can still use EIGEN_DONT_ALIGN to do both at once.
|
|
|
|
|
|
|
|
| |
hackish workarounds
as gcc on ARM (both CodeSourcery 4.4.1 used and experimental 4.5) fail to
ensure proper alignment with __attribute__((aligned(16))). This has to be
fixed upstream to remove the workarounds.
|
| |
|
|
|
|
|
| |
using std::size_t;
This is the only way that we can ensure QCC support in the long term without having to think about it everytime.
|
| |
|
|
|
|
| |
Moved EIGEN_DEBUG_MATRIX_CTOR to ei_matrix_storage to capture resize related allocations.
|
| |
|
| |
|
|
|
|
| |
keep most of the changes though as they make the code more extensible
|
|
|
|
|
|
|
|
| |
multiple of 16 bytes;
now we also align to 8byte boundary fixed-size objects that are multiple of 8 bytes.
That's only useful for now for double, not e.g. for Vector2f, but that didn't seem to hurt. Am I missing something? Do you prefer that we don't align Vector2f at all?
Also, improvements in test_unalignedassert.
|
|
|
|
|
|
|
| |
changes compared to changeset f292d2352e0ac9be8a9c5b0d931dc9a2c6da1aa0
.
The reason of the previous commit was incorrect. The smart pointers issues were actually a result of issue 9.
|
|
|
|
|
| |
This allows users to store Matrices in smart pointers without the
need for a specialized allocator/de-allocator.
|
|
|
|
| |
it never made very precise sense. but now does it still make any?
|
|
|
|
|
|
|
| |
* set AutoAlign=0, DontAlign!=0
* set Dynamic=33331
* add check on fixed sizes
* bump version to 2.0.52
|
|
|
|
|
|
| |
MatrixStorage returning a null pointer). For instance this is very
useful to make Tridiagonalization compile for 1x1 matrices
* fix LLT and eigensolver for 1x1 matrix
|
|
|
|
|
|
| |
some containers)
* new workaround for std::vector which is supposed to work for any
classes having EIGEN_MAKE_ALIGNED_OPERATOR_NEW as discussed on ML
|
|
|
|
|
| |
* improve Experimental.dox
* update urls from /api/ to /dox/
|
|
|
|
|
| |
std::vector<VectorXd>
update unit test
|
|
|
|
|
|
|
|
|
|
|
| |
*Add Eigen/StdVector header.
Including it #includes<vector> and "Core" and generates a partial
specialization of std::vector<T> for T=Eigen::Matrix<...>
that will work even with vectorizable fixed-size Eigen types
(working around a design issue in the c++ STL)
*Add unit-test
CCMAIL: alex.stapleton@gmail.com
|
| |
|
|
|
|
| |
ei_aligned_free
|
| |
|
|
|
|
|
|
|
| |
ei_aligned_malloc now really behaves like a malloc
(untyped, doesn't call ctor)
ei_aligned_new is the typed variant calling ctor
EIGEN_MAKE_ALIGNED_OPERATOR_NEW now takes the class name as parameter
|
| |
|
|
|
|
| |
* if svnversion returns prose such as "exported" then discard that
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
order, one bit for enabling/disabling auto-alignment. If you want to
disable, do:
Matrix<float,4,1,Matrix_DontAlign>
The Matrix_ prefix is the only way I can see to avoid
ambiguity/pollution. The old RowMajor, ColMajor constants are
deprecated, remain for now.
* this prompted several improvements in matrix_storage. ei_aligned_array
renamed to ei_matrix_array and moved there. The %16==0 tests are now
much more centralized in 1 place there.
* unalignedassert test: updated
* update FindEigen2.cmake from KDElibs
* determinant test: use VERIFY_IS_APPROX to fix false positives; add
testing of 1 big matrix
|
|
|
|
| |
* make ei_aligned_malloc and ei_aligned_free honor custom operator new and delete
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* remove the automatic resizing feature of operator =
* add function Matrix::set() to be used when the previous
behavior is wanted
* the default constructor of dynamic-size matrices now
creates a "null" matrix (data=0, rows = cols = 0)
instead of a 1x1 matrix
* fix UnixX typos ;)
|
|
|
|
|
| |
* clean ugly doxygen inheritence of expressions
* keep improving the documentation... slowly !
|
|
|
|
|
|
|
| |
* Improve the efficiency of matrix*vector in unaligned cases
* Trivial fixes in the destructors of MatrixStorage
* Removed the matrixNorm in test/product.cpp (twice faster and
that assumed the matrix product was ok while checking that !!)
|
|
|
|
|
|
|
|
| |
colmajor).
It basically performs 4 dot products at once reducing loads of the vector and improving
instructions scheduling. With 3 cache friendly algorithms, we now handle all product
configurations with outstanding perf for large matrices.
|
|
|
|
|
| |
* added some tests for product and swap
* overload .swap() for dynamic-sized matrix of same size
|
| |
|
|
|
|
| |
-finline-limit=1000 to gcc to get good performance. By the way some cleanup.
|
|
|
|
|
| |
and make Product ok when only one side is vectorizable (and the product
is still vectorized)
|
|
|
|
|
|
|
|
| |
- support dynamic sizes
- support arbitrary matrix size when the matrix can be seen as a 1D array
(except for fixed size matrices where the size in Bytes must be a factor of 16,
this is to allow compact storage of a vector of matrices)
Note that the explict vectorization is still experimental and far to be completely tested.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently only the following platform/operations are supported:
- SSE2 compatible architecture
- compiler compatible with intel's SSE2 intrinsics
- float, double and int data types
- fixed size matrices with a storage major dimension multiple of 4 (or 2 for double)
- scalar-matrix product, component wise: +,-,*,min,max
- matrix-matrix product only if the left matrix is vectorizable and column major
or the right matrix is vectorizable and row major, e.g.:
a.transpose() * b is not vectorized with the default column major storage.
To use it you must define EIGEN_VECTORIZE and EIGEN_INTEL_PLATFORM.
|
|
|
|
|
| |
- reimplement trace() as just diagonal().sum()
- apidoc fixes
|
|
|
|
|
|
|
|
| |
internal classes: AaBb -> ei_aa_bb
IntAtRunTimeIfDynamic -> ei_int_if_dynamic
unify UNROLLING_LIMIT (there was no reason to have operator= use
a higher limit)
etc...
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* functor templates are not template template parameter anymore
(this allows to make templated functors !)
* Main page: extented compiler discussion
* A small hack to support gcc 3.4 and 4.0 (see the main page)
* Fix a cast type issue in Cast
* Various doxygen updates (mainly Cwise stuff and added doxygen groups
in MatrixBase to split the huge memeber list, still not perfect though)
* Updated Gael's email address
|
|
|
|
|
|
|
|
|
|
| |
and long double.
-define scalar-multiple operators only for the current Scalar type;
thanks to Gael for expaining how to make the compiler understand
when automatic casting is needed.
-take ScalarMultiple take only 1 template param, again.
We lose some flexibility especially when dealing with complex numbers,
but we gain a lot of extensibility to new scalar types.
|
|
|
|
|
|
|
| |
Rework the matrix storage to ensure optimal sizeof in all cases, while
keeping the decoupling of matrix sizes versus storage sizes.
Also fixing (recently introduced) bugs caused by unwanted
reallocations of the buffers.
|
|
|
|
|
|
|
| |
dimension. The advantage is that evaluating a dynamic-sized block in a fixed-size
matrix no longer causes a dynamic memory allocation. Other new thing:
IntAtRunTimeIfDynamic allows storing an integer at zero cost if it is known at
compile time.
|
|
|
|
|
| |
constructor for dynamic-size matrices. Now why do I feel like a beheaded
chicken running around?
|