aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Dot.h
Commit message (Collapse)AuthorAge
...
* | Another big refactoring change:Gravatar Gael Guennebaud2009-11-18
| | | | | | | | | | | | * 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
| * Assign.h: add LinearTraversal (non-vectorized index-based traversal)Gravatar Benoit Jacob2009-11-18
|/ | | | Rename some constants to make names match more closely what they mean.
* make the dot product linear in the second variable, not the first variableGravatar Benoit Jacob2009-08-03
|
* re-implement stableNorm using a homemade blocky andGravatar Gael Guennebaud2009-07-17
| | | | vectorization friendly algorithm (slow if no vectorization)
* bugfix in blueNormGravatar Gael Guennebaud2009-07-16
|
* fix typo in blue normGravatar Gael Guennebaud2009-07-14
|
* add a blueNorm() function implementing the Blues's stable normGravatar Gael Guennebaud2009-07-13
| | | | | algorithm. it is currently provided for experimentation purpose only.
* remove sentence "Eigen itself is part of the KDE project."Gravatar Benoit Jacob2009-05-22
| | | | it never made very precise sense. but now does it still make any?
* add MatrixBase::stableNorm() avoiding over/under-flowGravatar Gael Guennebaud2009-01-28
| | | | | using it in QR reduced the error of Keir test from 1e-12 to 1e-24 but that's much more expensive !
* make dot() honor EvalBeforeNestingBitGravatar Gael Guennebaud2009-01-28
|
* fix doc for norm() and squaredNorm(): these are not only for vectorsGravatar Benoit Jacob2009-01-27
|
* * clarify the situation with experimental partsGravatar Benoit Jacob2009-01-19
| | | | * remove all what was marked deprecated
* Big rewrite in the Sparse module: SparseMatrixBase no longer inherits ↵Gravatar Gael Guennebaud2009-01-14
| | | | | | | | | | | | | | MatrixBase. That means a lot of features which were available for sparse matrices via the dense (and super slow) implemention are no longer available. All features which make sense for sparse matrices (aka can be implemented efficiently) will be implemented soon, but don't expect to see an API as rich as for the dense path. Other changes: * no block(), row(), col() anymore. * instead use .innerVector() to get a col or row vector of a matrix. * .segment(), start(), end() will be back soon, not sure for block() * faster cwise product
* fine tuning in dot() and sum(), and prepare for the sparse versions...Gravatar Gael Guennebaud2009-01-07
|
* release beta5, fix a doc typoGravatar Benoit Jacob2009-01-05
|
* * add unit-tests to check allowed and forbiddent mixing of different scalar ↵Gravatar Benoit Jacob2008-12-22
| | | | | | | types * fix issues in Product revealed by this test * in Dot.h forbid mixing of different types (at least for now, might allow real.dot(complex) in the future).
* * fix in IO.h, a useless copy was made because of assignment fromGravatar Benoit Jacob2008-12-18
| | | | | | | | | | | | | | | Derived to MatrixBase. * the optimization of eval() for Matrix now consists in a partial specialization of ei_eval, which returns a reference type for Matrix. No overriding of eval() in Matrix anymore. Consequence: careful, ei_eval is no longer guaranteed to give a plain matrix type! For that, use ei_plain_matrix_type, or the PlainMatrixType typedef. * so lots of changes to adapt to that everywhere. Hope this doesn't break (too much) MSVC compilation. * add code examples for the new image() stuff. * lower a bit the precision for floats in the unit tests as we were already doing some workarounds in inverse.cpp and we got some failed tests.
* * replace postfix ++ by prefix ++ wherever that makes sense in Eigen/Gravatar Benoit Jacob2008-12-17
| | | | | * fix some "unused variable" warnings in the tests; there remains a libstdc++ "deprecated" warning which I haven't looked much into
* * Much better, consistent error msgs when mixing different scalar types:Gravatar Benoit Jacob2008-12-03
| | | | | | | | | | | | | - in matrix-matrix product, static assert on the two scalar types to be the same. - Similarly in CwiseBinaryOp. POTENTIALLY CONTROVERSIAL: we don't allow anymore binary ops to take two different scalar types. The functors that we defined take two args of the same type anyway; also we still allow the return type to be different. Again the reason is that different scalar types are incompatible with vectorization. Better have the user realize explicitly what mixing different numeric types costs him in terms of performance. See comment in CwiseBinaryOp constructor. - This allowed to fix a little mistake in test/regression.cpp, mixing float and double - Remove redundant semicolon (;) after static asserts
* add internal documentationGravatar Benoit Jacob2008-11-30
|
* Update e-mail addressGravatar Benoit Jacob2008-11-24
|
* norm2() renamed to squaredNorm(), kept as deprecated for now.Gravatar Benoit Jacob2008-11-03
|
* As discussed on ML:Gravatar Gael Guennebaud2008-10-24
| | | | | | | | | | * 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 ;)
* note that norm2() is *not* an l2 norm as it is in other APIsGravatar Scott Wheeler2008-10-11
|
* * Add Hyperplane::transform(Matrix/Transform)Gravatar Gael Guennebaud2008-08-31
| | | | | * Fix compilations with gcc 3.4, ICC and doxygen * Fix krazy directives (hopefully)
* * bug fixes in: Dot, generalized eigen problem, singular matrix detetection ↵Gravatar Gael Guennebaud2008-08-23
| | | | | | | in Cholesky * fix all numerical instabilies in the unit tests, now all tests can be run 2000 times with almost zero failures.
* * bugfix in SolveTriangular found by Timothy Hunter (did not compiled for ↵Gravatar Gael Guennebaud2008-08-22
| | | | | | | | very small fixed size matrices) * bugfix in Dot unroller * added special random generator for the unit tests and reduced the tolerance threshold by an order of magnitude this fixes issues with sum.cpp but other tests still failed sometimes, this have to be carefully checked...
* * add Regression module, from eigen1, improved, with doc and unit-test.Gravatar Benoit Jacob2008-08-11
| | | | | | | | | * fix .normalized() so that Random().normalized() works; since the return type became complicated to write down i just let it return an actual vector, perhaps not optimal. * add Sparse/CMakeLists.txt. I suppose that it was intentional that it didn't have CMakeLists, but in <=2.0 releases I'll just manually remove Sparse.
* * Big change in Block and Map:Gravatar Gael Guennebaud2008-08-09
| | | | | | | | | | | | | | - 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
* * do the ActualPacketAccesBit change as discussed on listGravatar Benoit Jacob2008-07-04
| | | | | * add comment in Product.h about CanVectorizeInner * fix typo in test/product.cpp
* * add bench/benchVecAdd.cpp by Gael, fix crash (ei_pload on non-aligned)Gravatar Benoit Jacob2008-06-26
| | | | | | | | | | | | * introduce packet(int), make use of it in linear vectorized paths --> completely fixes the slowdown noticed in benchVecAdd. * generalize coeff(int) to linear-access xprs * clarify the access flag bits * rework api dox in Coeffs.h and util/Constants.h * improve certain expressions's flags, allowing more vectorization * fix bug in Block: start(int) and end(int) returned dyn*dyn size * fix bug in Block: just because the Eval type has packet access doesn't imply the block xpr should have it too.
* make use of ei_pmadd in dot-product: will further improve performanceGravatar Benoit Jacob2008-06-24
| | | | on architectures having a packed-mul-add assembly instruction.
* * vectorize dot product, copying code from sum.Gravatar Benoit Jacob2008-06-24
| | | | | | | | | | | | | | | * make the conj functor vectorizable: it is just identity in real case, and complex doesn't use the vectorized path anyway. * fix bug in Block: a 3x1 block in a 4x4 matrix (all fixed-size) should not be vectorizable, since in fixed-size we are assuming the size to be a multiple of packet size. (Or would you prefer Vector3d to be flagged "packetaccess" even though no packet access is possible on vectors of that type?) * rename: isOrtho for vectors ---> isOrthogonal isOrtho for matrices ---> isUnitary * add normalize() * reimplement normalized with quotient1 functor
* * move some compile time "if" to their respective unroller (assign and dot)Gravatar Gael Guennebaud2008-06-07
| | | | | * fix a couple of compilation issues when unrolling is disabled * reduce default unrolling limit to a more reasonable value
* added a static assertion mechanismGravatar Gael Guennebaud2008-06-04
| | | | (see notes in Core/util/StaticAssert.h for details)
* Fix compilation issues with MSVC and NVCC.Gravatar Gael Guennebaud2008-05-15
| | | | Added a few typedef of complex return types in MatrixBase (Needed by MSVC)
* * Added several cast to int of the enums (needed for some compilers)Gravatar Gael Guennebaud2008-05-12
| | | | | | * Fix a mistake in CwiseNullary. * Added a CoreDeclarions header that declares only the forward declarations and related basic stuffs.
* put inline keywords everywhere appropriate. So we don't need anymore to passGravatar Benoit Jacob2008-05-12
| | | | -finline-limit=1000 to gcc to get good performance. By the way some cleanup.
* Various fixes in:Gravatar Gael Guennebaud2008-04-25
| | | | | | | | - vector to vector assign - PartialRedux - Vectorization criteria of Product - returned type of normalized - SSE integer mul
* * rename XprCopy -> NestedGravatar Benoit Jacob2008-04-10
| | | | | * rename OperatorEquals -> Assign * move Util.h and FwDecl.h to a util/ subdir
* finish making use of CoeffReadCost and the new XprCopy everywhereGravatar Benoit Jacob2008-04-08
| | | | seems appropriate to me.
* fixes as discussed with Gael on IRC. Mainly, in Fuzzy.h, and Dot.h, useGravatar Benoit Jacob2008-04-05
| | | | | | ei_xpr_copy to evaluate args when needed. Had to introduce an ugly trick with ei_unref as when the XprCopy type is a reference one can't directly access member typedefs such as Scalar.
* * #define EIGEN_NDEBUG now also disables asserts. UsefulGravatar Benoit Jacob2008-03-26
| | | | | | | | | | | | to disable eigen's asserts without disabling one's own program's asserts. Notice that Eigen code should now use ei_assert() instead of assert(). * Remove findBiggestCoeff() as it's now almost redundant. * Improve echelon.cpp: inner for loop replaced by xprs. * remove useless "(*this)." here and there. I think they were first introduced by automatic search&replace. * fix compilation in Visitor.h (issue triggered by echelon.cpp) * improve comment on swap().
* - introduce sum() returning the sum of the coeffs of a vectorGravatar Benoit Jacob2008-03-15
| | | | | - reimplement trace() as just diagonal().sum() - apidoc fixes
* a lot of renamingGravatar Benoit Jacob2008-03-13
| | | | | | | | 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...
* generalized ei_traits<>.Gravatar Benoit Jacob2008-03-12
| | | | | | Finally the importing macro is named EIGEN_BASIC_PUBLIC_INTERFACE because it does not only import the ei_traits, it also makes the base class a friend, etc.
* big change: MatrixBase only takes one template parameter "Derived", theGravatar Benoit Jacob2008-03-10
| | | | | | template parameter "Scalar" is removed. This is achieved by introducting a template <typename Derived> struct Scalar to achieve a forward-declaration of the Scalar typedefs.
* * coefficient wise operators are more generic, with controllable result type.Gravatar Gael Guennebaud2008-03-06
| | | | | | - compatible with current STL's functors as well as with the extention proposal (TR1) * thanks to the above, Cast and ScalarMultiple have been removed * benchmark_suite is more flexible (compiler and matrix size)
* * Fix a compilation issue with large fixed-size matrices: the unrollers ↵Gravatar Gael Guennebaud2008-03-05
| | | | | | were always instanciated. * the unrolling limits are configurable at compile time.
* Patch by Gael Guennebaud: coeff-wise binary operators.Gravatar Benoit Jacob2008-02-29
| | | | | This unifies + and - and moreover this patch introduces coeff-wise * and / based on this. Also, corresponding test.