Gael Guennebaud
22bff949c8
protect calls to min and max with parentheses to make Eigen compatible with default windows.h
...
(transplanted from 49b6e9143e
)
2011-07-21 11:19:36 +02:00
Thomas Capricelli
883219041f
better fix for gcc 4.6.0 / ptrdiff_t, as suggested by Benoit
2011-05-05 18:48:18 +02:00
Jitse Niesen
a96c849c20
Document enums in Constants.h (bug #248 ).
...
To get the links to work, I also had to document the Eigen namespace.
Unfortunately, this means that the word Eigen is linked whenever it appears
in the docs.
2011-05-03 17:08:14 +01:00
Gael Guennebaud
e87f653924
fix bug #250 : compilation error with gcc 4.6 (STL header files no longer include cstddef)
2011-04-19 16:34:25 +02:00
Gael Guennebaud
67d50f539b
fix bug #242 : vectorization was wrongly enabled on MSVC 2005
2011-04-19 15:25:00 +02:00
Gael Guennebaud
816541d82c
add a stupid Product<A,B> expression produced by prod(a,b), and implement a first version of its evaluator
2011-03-23 16:12:21 +01:00
Gael Guennebaud
cfd5c2d74e
import evaluator works
2011-03-23 11:54:00 +01:00
Benoit Jacob
d8e97aee89
shut up stupid ICC warnings
2011-02-22 09:31:22 -05:00
Benoit Jacob
8fb27fad36
remove #include <iostream> at the wrong place
2011-02-17 07:47:05 -05:00
Benoit Jacob
11402edfd3
with old gcc (bug #89 ), only include iostream in debug mode
2011-02-16 12:01:47 -05:00
Benoit Jacob
59596efdf7
Fix bug #89 : on GCC <= 4.3, use a custom assert implementation to work around a compiler bug
2011-02-16 08:50:19 -05:00
Benoit Jacob
63626bb966
remove debug #error
2011-02-09 14:37:52 -05:00
Benoit Jacob
85f9fab003
back out changeset efdf2e4056
...
. It turns out that the SSE3 header is always included, even without any SSE enabled, so it was making us wrongly use SSE3 paths. Backing this out fixes msvc related crashes, at least bug #165 .
2011-02-09 14:01:26 -05:00
Benoit Jacob
ba9f6a2c3b
now random<integer types> spans over 0..RAND_MAX, or -RAND_MAX/2..RAND_MAX/2 for signed types, or the most significant bits for smaller integer types.
2011-02-07 10:55:41 -05:00
Benoit Jacob
dc22ae101f
kill stage 15, it's useless
2011-01-31 09:18:49 -05:00
Benoit Jacob
fd400ffffb
reverse order of testing for eigen2 support stages. Higher stages now have priority. So if your whole project builds with say stage 10, you can manually enable stage 20 for selected files.
2011-01-27 10:34:44 -05:00
Benoit Jacob
8df5bca979
rename build stages to multiples of 10; old stage 2 becomes stage 15, while stage 20 generates errors (instead of warnings) on conflicting API.
2011-01-23 18:22:18 -05:00
Benoit Jacob
30de1651d3
relax Map const correctness in eigen2 support stages <= 3
...
introduce new 'strict' stage 4
2011-01-21 10:42:19 -05:00
Benoit Jacob
cc2b7a5397
introduce the 3 stages of eigen2 support, writing to the mailing list about that in Eigen2 to Eigen3 Migration Path thread
2011-01-21 09:51:03 -05:00
Jitse Niesen
8db9acbc16
Move doxygen comments for EIGEN_NO_DEBUG from source to I14.
...
This reverts changeset 76fbe94279
. Benoit and I agree that my
approach there (to use doxygen comments) pollutes the code too much.
2010-12-27 15:07:11 +00:00
Hauke Heibel
efdf2e4056
Added automatic SSE3/4.1/4.2 support for MSVC.
2010-12-16 20:08:22 +01:00
Hauke Heibel
6f5c45ceff
Fixed ctor from const raw data for Matrices and added the missing implementation for Arrays.
...
Fixed a warning regarding the conversion from int to bool in MapBase.
2010-12-15 15:19:51 +01:00
Benoit Jacob
819bcbed19
fix comment
2010-12-07 02:17:15 -05:00
Eamon Nerbonne
7a7ca99a31
[mq]: Mingw32 fix
...
intrin.h is not required nor supported by mingw32. It is present (and supported) on mingw-w64 builds, even those for 32-bit systems, but here too it's not required on 32-bit systems. So if we're on mingw, and it's 64-bit, then and only then is the intrin.h inclusion necessary.
2010-12-03 23:24:06 +01:00
Benoit Jacob
a3f214ade9
holy crap, i had disabled all static asserts in 71f023de3e
2010-11-22 08:21:30 -05:00
Gael Guennebaud
2577ef90c0
generalize our internal rank K update routine to support more general A*B product while evaluating only one triangular part and make it available via, e.g.:
...
R.triangularView<Lower>() += s * A * B;
2010-11-10 18:58:55 +01:00
Gael Guennebaud
0e6c1170ab
trsv: add support for inner-stride!=1, reduce code instanciation, move implementation to a new products/XX.h file
2010-11-05 12:43:14 +01:00
Hauke Heibel
5d4ff3f99c
Fixed bug #95 by changing _M_IX64 to _M_X64 as proposed by Jan Schlicht.
2010-10-27 11:07:38 +02:00
Benoit Jacob
8c17fab8f5
renaming: ei_matrix_storage -> DenseStorage
...
DenseStorageBase -> PlainObjectBase
2010-10-20 09:34:13 -04:00
Gael Guennebaud
a76ce042e6
MSVC for windows mobile does not have the errno.h file
2010-10-07 18:09:15 +02:00
Gael Guennebaud
af22364988
an attempt to fix compilation on windows mobile
2010-10-07 17:54:46 +02:00
Benoit Jacob
71f023de3e
fix compilation on ubuntu 9.04's version of gcc 4.3 (yes, wtf)
2010-09-27 09:57:57 -04:00
Eamon Nerbonne
d17bb02ccd
Fixes mingw32 compile issues
2010-09-02 10:38:23 +02:00
Jitse Niesen
76fbe94279
Document EIGEN_NO_DEBUG macro.
...
I needed some doxygen tricks to get this to work, so it may not be worth it.
2010-08-10 11:37:23 +01:00
Gael Guennebaud
76eb9c9fd9
fix compilation by including file in correct order
2010-07-19 23:32:13 +02:00
Konstantinos Margaritis
6ad3f1ab1f
Added NEON/Complex.h, ~3.5x faster than scalar std::complex<float>
...
minor fix in AltiVec Complex.h
2010-07-10 00:09:29 +03:00
Konstantinos Margaritis
f6bd508351
forgot to add the Complex.h include for AltiVec.
2010-07-09 17:56:53 +03:00
Gael Guennebaud
e1eccfad3f
add intitial support for the vectorization of complex<float>
2010-07-05 16:18:09 +02:00
Gael Guennebaud
28e64b0da3
email change
2010-06-24 23:21:58 +02:00
Hauke Heibel
4bac6fbe1e
The intrin.h header needs to be included after cmath in order to prevent warnigns.
...
Fixed (hopefully) final Index realted warnings.
2010-06-21 18:39:24 +02:00
Hauke Heibel
80b6e5f278
Added include reuqired for __cpuid.
2010-06-21 16:43:31 +02:00
Gael Guennebaud
7fd8418b19
finish to merge Array into Core:
...
- mv Array/* into Core/
- merge Functors.h files, and move Norms.h into Dot.h
2010-06-19 23:36:38 +02:00
Gael Guennebaud
bfeba41174
Add a Transpositions class to ease the representation and
...
manipulation of permutations as a sequence of transpositions.
Make LDLT use it.
2010-06-04 23:17:57 +02:00
Thomas Capricelli
742bbdfa57
clang/llvm is now good enough. I can compile a project using those (one of
...
the binary segfaults though, and i think it's related..)
2010-05-21 02:03:43 +02:00
Benoit Jacob
0928c40f68
rename Coeffs.h -> DenseCoeffsBase.h
2010-05-08 16:02:13 -04:00
Benoit Jacob
bfdc1c4973
introduce DenseCoeffsBase: this is where the coeff / coeffRef / etc... methods go.
...
Rationale: coeffRef() methods should only exist when we have DirectAccess. So a natural thing to do would have been to use enable_if, but since there are many methods it made more sense to do the "enable_if" for the whole group by introducing a new class. And that also that the benefit of not changing method prototypes.
2010-05-08 13:45:31 -04:00
Carlos Becker
34b3cdb82c
Added EIGEN_DONT_PARALLELIZE preprocessor directive
2010-04-26 17:08:54 +02:00
Benoit Jacob
58e7297859
* remove class DenseDirectAccessBase
...
* remove member XprBase typedefs, use ei_dense_xpr_base
* remove member _HasDirectAccess typedefs, use ei_has_direct_access
2010-04-23 10:27:15 -04:00
Benoit Jacob
a4f9ca44ab
add minor to Eigen2Support
2010-04-22 20:49:01 -04:00
Benoit Jacob
2362eadcdd
remove Minor
...
adapt 3x3 and 4x4 (non-SSE) inverse paths
2010-04-22 20:40:31 -04:00
Benoit Jacob
ff6a46105d
* Refactoring of the class hierarchy: introduction of DenseDirectAccessBase, removal of extra _Base/_Options template parameters.
...
* Introduction of strides-at-compile-time so for example the optimized code really knows when it needs to evaluate to a temporary
* StorageKind / XprKind
* Quaternion::setFromTwoVectors: use JacobiSVD instead of SVD
* ComplexSchur: support the 1x1 case
2010-04-16 10:13:32 -04:00
Benoit Jacob
c4f8afdf49
#undef minor at the right place
2010-03-06 14:44:57 -05:00
Benoit Jacob
2bd31d3fbc
* include Macros.h much earlier: since it takes care of the alignment platform detection, it is needed before we do the vectorization stuff in Eigen/Core !!
...
* kill EIGEN_DONT_ALIGN_HEAP option (one should use EIGEN_DONT_ALIGN)
* rename EIGEN_DONT_ALIGN_STACK to EIGEN_DONT_ALIGN_STATICALLY. hope it's a better name.
2010-03-06 09:05:15 -05:00
Gael Guennebaud
cefd9b8888
merge with default branch
2010-03-04 18:47:52 +01:00
Konstantinos Margaritis
710bc073a7
arm_neon.h is a standard header file, fixed
2010-03-03 12:15:34 -06:00
Gael Guennebaud
7dd81aad74
factorize default performance related settings to a single file
...
included after the architecture specific files such that they
can be adapted by each platform.
2010-03-03 18:47:58 +01:00
Konstantinos Margaritis
112c550b4a
Added initial NEON support, most tests pass however we had to use some 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.
2010-03-03 11:25:41 -06:00
Hauke Heibel
ff8c2149c1
Added a generic reallocation implementation based on ei_aligned_malloc/_free.
...
Rewrote ei_handmade_aligned_realloc such that it is now using std::realloc.
Reorganized functions in Memory.h for better readability.
Add missing <cerrno> include to Core (it's now required in Memory.h).
2010-02-28 14:32:57 +01:00
Benoit Jacob
27f5250258
Only include <iosfwd> unless either EIGEN_DEBUG_ASSIGN is defined or we're in eigen2 support mode
2010-02-27 19:04:22 -05:00
Benoit Jacob
b1c6c215a4
merge
2010-02-25 21:07:30 -05:00
Benoit Jacob
77c922bf05
* move the 's': InstructionsSet ---> InstructionSets
...
* proper capitalization: SSE, AltiVec
2010-02-25 06:43:45 -05:00
Thomas Capricelli
50a5ac3c4b
oops, fix typo
2010-02-25 05:31:22 +01:00
Thomas Capricelli
00bc535b66
provide a static method to describe which SIMD instructions are used
2010-02-24 21:52:08 +01:00
Thomas Capricelli
0f3d69b65e
Provide "eigen" defines to decide which instruction set is used
...
(sse3, ssse3 and sse4), independantly from the compiler.
Only those defines should be used in other places, and the user can
rely on those to know which sets are used.
2010-02-24 21:43:30 +01:00
Gael Guennebaud
3e62fafce8
clean a bit the parallelizer
2010-02-22 11:08:37 +01:00
Hauke Heibel
f0c8dcf1e2
Renamed AnyMatrixBase to EigenBase.
2010-02-20 15:26:02 +01:00
Benoit Jacob
b73e22905d
miserable half-working state, commiting to a fork just in case, just to perfect
...
my day, my hard disk would die.
Will write a more detailed commit message once it's working.
2010-02-18 20:42:38 -05:00
Benoit Jacob
9251cfed9b
this had to be done here, not at the end.
2010-02-12 09:03:16 -05:00
Benoit Jacob
37ca4200b2
Piotr's patch was missing many occurences of size_t. So,
...
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.
2010-02-12 08:58:29 -05:00
Gael Guennebaud
5686eca7b1
* fix multiple temporary copies for coeff based products
...
* introduce a lazy product version of the coefficient based implementation
=> flagged is not used anymore
=> small outer product are now lazy by default (aliasing is really unlikely for outer products)
2010-02-09 11:05:39 +01:00
Gael Guennebaud
73eb0e633c
* resurected Flagged from Eigen2Support
...
* reimplement .diagonal() for ProductBase to make (A*B).diagonal() more efficient!
2010-02-04 18:28:09 +01:00
Gael Guennebaud
0ce5bc0d14
add support for global math function for array
2010-01-27 23:23:59 +01:00
Hauke Heibel
5d48cc1f5b
Moved the Array module to Core.
2010-01-20 20:51:01 +01:00
Gael Guennebaud
c5d7c9f0de
remove the Triangular suffix to Upper, Lower, UnitLower, etc,
...
and remove the respective bit flags
2010-01-07 21:15:32 +01:00
Gael Guennebaud
9d9e00b608
merge and add start/end to Eigen2Support
2010-01-05 13:07:32 +01:00
Thomas Capricelli
57275b2b8c
make some changes to please clang, fix some warnings too.
2010-01-04 23:21:04 +01:00
Gael Guennebaud
eaaba30cac
merge with default branch
2009-12-22 22:51:08 +01:00
Gael Guennebaud
ebb2878829
finally add a Array class with storage via the introduction of a DenseStorageBase
...
base class shared by both Matrix and Array
2009-12-17 13:37:00 +01:00
Gael Guennebaud
8e05f9cfa1
add a DenseBase class for MAtrixBase and ArrayBase and more code factorisation
2009-12-04 23:17:14 +01:00
Mark Borgerding
ff1e9542f6
added comments to help vim understand the header files are c++.
2009-12-01 18:00:29 -05:00
Benoit Jacob
684d76eba3
add SSE4 support, start with integer multiplication
2009-11-24 15:12:43 -05:00
Gael Guennebaud
4af1753b6f
* remove EnforceAlignedAccess option to Block, VectorBlock, Map and MapBase
...
because thanks to the previous commit this is not needed anymore
* add a more general ForceAlignedAccess expression which can be used for any expression.
It is already used by StableNorm.h.
2009-11-20 16:30:14 +01:00
Gael Guennebaud
eb8f450071
Hey, finally the copyCoeff stuff is not only used to implement swap anymore :)
...
Add an internal pseudo expression allowing to optimize operators like +=, *= using
the copyCoeff stuff.
This allows to easily enforce aligned load for the destination matrix everywhere.
2009-11-20 15:39:38 +01:00
Gael Guennebaud
e3d890bc5a
Another big refactoring change:
...
* add a new Eigen2Support module including Cwise, Flagged, and some other deprecated stuff
* add a few cwiseXxx functions
* adapt a few modules to use cwiseXxx instead of the .cwise() prefix
2009-11-18 18:15:19 +01:00
Gael Guennebaud
1e62e0b0d8
more ET refactoring:
...
* extend Cwise for multiple storage base class
* a lot of cleaning in the Sparse module
2009-11-17 16:04:19 +01:00
Benoit Jacob
955cd7f884
* add PermutationMatrix
...
* DiagonalMatrix:
- add MaxSizeAtCompileTime parameter
- DiagonalOnTheLeft ---> OnTheLeft
- fix bug in DiagonalMatrix::setIdentity()
2009-11-15 21:12:15 -05:00
Gael Guennebaud
7b0c4102fa
* add a Make* expression type builder to allow the
...
construction of generic expressions working
for both dense and sparse matrix. A nicer solution
would be to use CwiseBinaryOp for any kind of matrix.
To this end we either need to change the overall design
so that the base class(es) depends on the kind of matrix,
or we could add a template parameter to each expression
type (e.g., int Kind = ei_traits<MatrixType>::Kind)
allowing to specialize each expression for each kind of matrix.
* Extend AutoDiffScalar to work with sparse vector expression
for the derivatives.
2009-10-16 13:22:38 +02:00
Benoit Jacob
6b5f96cb03
undef B0
2009-09-19 19:14:28 -04:00
Gael Guennebaud
49dd5d7847
* add a HouseholderSequence class (not good enough yet for Triadiagonalization and HessenbergDecomposition)
...
* rework a bit AnyMatrixBase, and mobe it to a separate file
2009-09-16 14:35:42 +02:00
Gael Guennebaud
239ada95b7
add overloads of lazyAssign to detect common aliasing issue with
...
transpose and adjoint
2009-08-15 22:19:29 +02:00
Gael Guennebaud
50c703f0c7
As proposed on the list:
...
- rename EvalBeforeAssignBit to MayAliasBit
- make .lazy() remove the MayAliasBit only, and mark it as deprecated
- add a NoAlias pseudo expression, and MatrixBase::noalias() function
Todo:
- we have to decide whether += and -= assume no aliasing by default ?
- once we agree on the API: update the Sparse module and the unit tests respectively.
2009-08-15 18:35:51 +02:00
Gael Guennebaud
8abec72259
oops forgot to remove the #include in Core
2009-08-14 09:49:33 +02:00
Gael Guennebaud
1b257a7620
add an optimized "apply in place a rotation in the plane",
...
and make Jacobi and SelfAdjointEigenSolver use it
=> ~ x1.75 speedup for JacobiSVD and x2 for SelfAdjointEigenSolver
2009-08-13 11:42:02 +02:00
Gael Guennebaud
56d00779db
more product refactoring
2009-08-06 12:20:02 +02:00
Gael Guennebaud
7d607048a9
implement a ProductBase class and, as a proof of concept, update TriangularProduct
...
and SelfAdjointMatrixProduct to take advantage of it => fewer LOC
2009-08-04 16:54:17 +02:00
Gael Guennebaud
54804eb626
synch with main branch
2009-07-28 17:35:07 +02:00
Gael Guennebaud
6aba84719d
trmm is now working in all storage order configurations
2009-07-27 10:27:01 +02:00
Gael Guennebaud
f4112dcff3
The new trsm is working very very well (read very fast) for
...
lower triangular matrix and row or col major lhs.
TODO: handle upper triangular and row major rhs cases
2009-07-25 21:41:01 +02:00
Gael Guennebaud
a81388fae9
Implement efficient sefladjoint product (aka SYRK) : C += alpha * U U^T
...
It is currently available via SelfAdjointView::rankKupdate.
TODO: allows to write SelfAdjointView += u * u.adjoint()
2009-07-23 19:01:20 +02:00
Gael Guennebaud
d6475ea390
more refactoring in the level3 products
2009-07-22 11:54:58 +02:00
Gael Guennebaud
d6627d540e
* refactoring of the matrix product into multiple small kernels
...
* started an efficient selfadjoint matrix * general matrix product
based on the generic kernels ( => need a very little LOC)
2009-07-21 16:58:35 +02:00
Gael Guennebaud
32b08ac971
re-implement stableNorm using a homemade blocky and
...
vectorization friendly algorithm (slow if no vectorization)
2009-07-17 16:22:39 +02:00
Gael Guennebaud
587029a612
started an implementation of BandMatrix: at least the read/write access
...
to the main/sub/super diagonals seems to work well.
2009-07-14 23:27:37 +02:00
Gael Guennebaud
8120a5cecd
synch with main devel branch
2009-07-14 23:06:25 +02:00
Gael Guennebaud
279cedc1ce
some cleaning/renaming is Triangular/SelfadjointView
2009-07-14 22:38:21 +02:00
Gael Guennebaud
a2cf7ba955
add triangular * vector product
2009-07-13 13:17:55 +02:00
Gael Guennebaud
a2087cd7a3
Add an efficient rank2 update function (like the level2 blas xSYR2 routine).
...
Note that it is already used in Tridiagonalization.
2009-07-11 21:14:59 +02:00
Gael Guennebaud
ec5c608aa3
Set of fixes and workaround to make sun studio more happy.
...
Still remains the problem of alignment and vectorization.
2009-07-10 16:10:03 +02:00
Gael Guennebaud
1aea45335f
* bybye Part, welcome TriangularView and SelfAdjointView.
...
* move solveTriangular*() to TriangularView::solve*()
* move .llt() to SelfAdjointView
* add a high level wrapper to the efficient selfadjoint * vector product
* improve LLT so that we can specify which triangular part is meaningless
=> there are still many things to do (doc, cleaning, improve the matrix products, etc.)
2009-07-06 23:43:20 +02:00
Gael Guennebaud
c6f610093b
add a VectorBlock expr as a specialization of Block
2009-07-05 11:33:55 +02:00
Benoit Jacob
6809f7b1cd
new implementation of diagonal matrices and diagonal matrix expressions
2009-06-28 21:27:37 +02:00
Benoit Jacob
7667a93cbe
merge
2009-05-22 20:31:26 +02:00
Benoit Jacob
6347b1db5b
remove sentence "Eigen itself is part of the KDE project."
...
it never made very precise sense. but now does it still make any?
2009-05-22 20:25:33 +02:00
Gael Guennebaud
dd45c4805c
* add a writable generic coeff wise expression (CwiseUnaryView)
...
* add writable .real() and .imag() functions
2009-05-20 15:41:23 +02:00
Benoit Jacob
9afd1324fd
constant Diagonal ---> DiagonalBits
...
introduce ei_is_diagonal to check for it
DiagonalCoeffs ---> Diagonal and allow Index to by Dynamic
-> add MatrixBase::diagonal(int) with unittest and doc
2009-05-10 16:24:39 +00:00
Benoit Jacob
0c0d38272e
add copyright on two public headers that are not so trivial...
2009-05-06 15:48:28 +00:00
Benoit Jacob
8aa8854bbf
fix SSE2 detection on win64, reported by 'kajala'
2009-05-04 12:13:37 +00:00
Benoit Jacob
95bda5e6ab
let the user disable alignment altogether by #defining EIGEN_DONT_ALIGN.
...
Until now, the user had to edit the source code to do that.
Internally, add EIGEN_ALIGN that takes into account both EIGEN_DONT_ALIGN.and
EIGEN_ARCH_WANTS_ALIGNMENT. From now on, only EIGEN_ALIGN should be used to
test whether we want to align.
2009-05-03 13:50:56 +00:00
Gael Guennebaud
49fc1e3e84
add vectorization of sqrt for float
2009-03-27 14:41:46 +00:00
Gael Guennebaud
17860e578c
add SSE2 versions of sin, cos, log, exp using code from Julien
...
Pommier. They are for float only, and they return exactly the same
result as the standard versions in about 90% of the cases. Otherwise the max error
is below 1e-7. However, for very large values (>1e3) the accuracy of sin and cos
slighlty decrease. They are about 3 or 4 times faster than 4 calls to their respective
standard versions. So, is it ok to enable them by default in their respective functors ?
2009-03-25 12:26:13 +00:00
Gael Guennebaud
31332fca0b
remove bad #include of SelfadjointRank2Update.h
2009-03-05 10:29:20 +00:00
Gael Guennebaud
0be89a4796
big addons:
...
* add Homogeneous expression for vector and set of vectors (aka matrix)
=> the next step will be to overload operator*
* add homogeneous normalization (again for vector and set of vectors)
* add a Replicate expression (with uni-directional replication
facilities)
=> for all of them I'll add examples once we agree on the API
* fix gcc-4.4 warnings
* rename reverse.cpp array_reverse.cpp
2009-03-05 10:25:22 +00:00
Gael Guennebaud
6a26506341
add ReturnByValue pseudo expression for in-place evaluation with a
...
return-by-value API style (will soon use it for the transform products)
2009-03-04 13:00:00 +00:00
Gael Guennebaud
de014efdaf
* split CacheFriendlyProduct into multiple smaller files
...
* add an efficient selfadjoint * vector implementation (= blas symv)
perf are inbetween MKL and GOTO
=> the interface is still missing (have to be rethougth)
2009-02-21 20:20:38 +00:00
Gael Guennebaud
51c991af45
* exit Sum.h, exit Prod.h, welcome vectorization of redux() !
...
* add vectorization for minCoeff and maxCoeff
2009-02-12 15:18:59 +00:00
Gael Guennebaud
cbbc6d940b
* add ei_predux_mul internal function
...
* apply Ricard Marxer's prod() patch with fixes for the vectorized path
2009-02-10 18:06:05 +00:00
Gael Guennebaud
6fbca94803
apply Ricard patch for Reverse with minor modifications
2009-02-06 09:01:50 +00:00
Benoit Jacob
dcaa58744e
#error if min or max is defined
2009-01-19 13:23:41 +00:00
Benoit Jacob
50ad8b9010
fix potential compilation issue on MSVC + no vectorization
2009-01-10 14:10:40 +00:00
Kenneth Frank Riddile
f52a9e5315
* Added aligned_allocator for using 16-byte aligned types with STL containers. There is still a compile-time problem with STL containers that have a standard-conformant resize() method, but this should resolve the original user issue which was storing aligned objects in a std::map.
2009-01-09 00:55:53 +00:00
Benoit Jacob
8106d35408
Patch by Kenneth Riddile: disable MSVC warnings, reenable them outside
...
of Eigen, and add a MSVC-friendly path in StaticAssert.
2008-12-18 20:48:02 +00:00
Benoit Jacob
38b83b4157
* throw bad_alloc if exceptions are enabled, after patch by Kenneth Riddile
...
* disable vectorization on MSVC 2005, as it doesn't have all the required intrinsics. require 2008.
2008-12-16 15:17:29 +00:00
Benoit Jacob
0a220721d1
Finally work around enough of MSVC preprocessor dumbness so that it actually detects SSE2
2008-12-15 21:20:40 +00:00
Benoit Jacob
dd139b92b4
work around the braindead msvc preprocessor
2008-12-15 17:16:22 +00:00
Benoit Jacob
11c8a6bf63
Fix detection of SSE2 with MSVC.
2008-12-15 16:14:54 +00:00
Benoit Jacob
703951d5cd
Fix memory alignment (hence vectorization) on MSVC thanks to help from Armin Berres.
2008-12-15 15:54:33 +00:00
Gael Guennebaud
80be1ea515
remove CoreDeclaration from the documentation
2008-08-28 19:11:03 +00:00
Gael Guennebaud
3ced3f91c2
* temporarily remove doxygen customization, we'll see if that fix api.kde.org
...
but I no hope, that would be too simple !
* added Rotation2D typedefs
* remove CoreDeclarations header file
2008-08-28 15:28:23 +00:00
Gael Guennebaud
70266b4d05
doc + quick bug fix in Matrix ctor
2008-08-28 00:33:58 +00:00
Gael Guennebaud
63d3ef8204
* remove debug code commited by mistake in Assign
...
* keep going on the doc: added a short geometry tutorial
2008-08-26 23:07:33 +00:00
Gael Guennebaud
00a8d314c5
* move memory related stuff to util/Memory.h
...
* clean ugly doxygen inheritence of expressions
* keep improving the documentation... slowly !
2008-08-26 19:12:23 +00:00
Gael Guennebaud
f729fc1d70
* Add the possibility to customize the output of matrices, e.g.:
...
IoFormat OctaveFmt(4, AlignCols, ", ", ";\n", "", "", "[", "]");
cout << mat.format(OctaveFmt);
The first "4" is the precision.
Documentation missing.
* Some compilation fixes
2008-08-21 13:17:21 +00:00
Gael Guennebaud
b13148c358
renamed inverseProduct => solveTriangular
2008-08-09 20:06:25 +00:00
Gael Guennebaud
4fa40367e9
* Big change in Block and Map:
...
- added a MapBase base xpr on top of which Map and the specialization
of Block are implemented
- MapBase forces both aligned loads (and aligned stores, see below) in expressions
such as "x.block(...) += other_expr"
* Significant vectorization improvement:
- added a AlignedBit flag meaning the first coeff/packet is aligned,
this allows to not generate extra code to deal with the first unaligned part
- removed all unaligned stores when no unrolling
- removed unaligned loads in Sum when the input as the DirectAccessBit flag
* Some code simplification in CacheFriendly product
* Some minor documentation improvements
2008-08-09 18:41:24 +00:00
Benoit Jacob
49ae3fca89
fix compile errors with gcc 4.3: unresolved func call to
...
ei_cache_friendly_product, and undeclared memcpy
2008-08-03 15:44:06 +00:00
Gael Guennebaud
e77ccf2928
* Rewrite the triangular solver so that we can take advantage of our efficient matrix-vector products:
...
=> up to 6 times faster !
* Added DirectAccessBit to Part
* Added an exemple of a cwise operator
* Renamed perpendicular() => someOrthogonal() (geometry module)
* Fix a weired bug in ei_constant_functor: the default copy constructor did not copy
the imaginary part when the single member of the class is a complex...
2008-07-26 20:40:29 +00:00
Gael Guennebaud
c10f069b6b
* Merge Extract and Part to the Part expression.
...
Renamed "MatrixBase::extract() const" to "MatrixBase::part() const"
* Renamed static functions identity, zero, ones, random with an upper case
first letter: Identity, Zero, Ones and Random.
2008-07-21 00:34:46 +00:00
Gael Guennebaud
b7bd1b3446
Add a *very efficient* evaluation path for both col-major matrix * vector
...
and vector * row-major products. Currently, it is enabled only is the matrix
has DirectAccessBit flag and the product is "large enough".
Added the respective unit tests in test/product/cpp.
2008-07-12 12:12:02 +00:00
Gael Guennebaud
c9b046d5d5
* added optimized paths for matrix-vector and vector-matrix products
...
(using either a cache friendly strategy or re-using dot-product
vectorized implementation)
* add LinearAccessBit to Transpose
2008-07-09 22:30:18 +00:00
Benoit Jacob
f5791eeb70
the big Array/Cwise rework as discussed on the mailing list. The new API
...
can be seen in Eigen/src/Core/Cwise.h.
2008-07-08 00:49:10 +00:00