| Commit message (Collapse) | Author | Age |
|
|
|
| |
is not a compile-time constant, must use enum.
|
| |
|
| |
|
|
|
|
| |
remove EIGEN_ENUM_MIN/MAX, implement new macros instead
|
|
|
|
| |
As discussed on the list (too long to explain here).
|
|
|
|
| |
in eigen2 support mode
|
|\ |
|
| |
| |
| |
| | |
when necessary.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
arithmetic is involved.
* rename 'submatrices' test to 'block'
* add block-inside-of-block tests
* remove old cruft
* split diagonal() tests into separate file
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
* use them (big simplification in Assign.h)
* axe (Inner|Outer)StrideAtCompileTime that were just introduced
* ei_int_if_dynamic now asserts that the size is the expected one: adapt to that in Block.h
* add rowStride() / colStride() in DenseBase
* implement innerStride() / outerStride() everywhere needed
|
|/
|
|
|
| |
my day, my hard disk would die.
Will write a more detailed commit message once it's working.
|
| |
|
|
|
|
|
| |
*forward port expanded map.cpp unit test
*fix unused variable warnings
|
|
|
|
|
|
|
|
|
| |
Added setLinSpaced/LinSpaced functionality to DenseBase.
Improved vectorized assignment - overcomes MSVC optimization issues.
CwiseNullaryOp is now requiring functors to offer 1D and 2D operators.
Adapted existing functors to the new CwiseNullaryOp requirements.
Added ei_plset to create packages as [a, a+1, ..., a+size].
Added more nullaray unit tests.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
sizeof(Scalar), and that assumption breaks with double on linux x86-32.
* Rename ei_alignmentOffset to ei_first_aligned
* Rewrite its documentation and part of its body
* The variant taking a MatrixBase doesn't need a separate size argument.
|
| | |
|
| |
| |
| |
| | |
MaxInnerSize
|
|\| |
|
| |
| |
| |
| |
| |
| | |
significantly simplify the code of these checks while extending them
to catch much more expressions!
* move the enabling/disabling of vectorized sin/cos to the architecture traits
|
| | |
|
| |
| |
| |
| |
| | |
* old bug: in CwiseBinaryOp: only set the LinearAccessBit if both sides have the same storage order.
* new bug: in Assign.h, only consider linear traversal if both sides have the same storage order.
|
| |
| |
| |
| |
| |
| | |
Actually I don't think it's buggy. But it probably triggers existing bugs, I suspect that
some xprs have LinearAccessBit and shouldn't have it.
Also this fixes the "bugs" with JacobiSVD ---> now it works again
|
|/
|
|
| |
Rename some constants to make names match more closely what they mean.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
- 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.
|
| |
|
| |
|
|
|
|
| |
we have to do runtime checks and we don't unroll, so it's only good for large enough sizes
|
|
|
|
| |
ei_assign_traits are printed
|
| |
|
| |
|
|
|
|
| |
it never made very precise sense. but now does it still make any?
|
| |
|
|
|
|
|
|
| |
ensures they can't be bypassed (e.g.
until now it was possible to bypass the static assert on sizes)
|
|
|
|
|
|
|
| |
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).
|
|
|
|
|
|
| |
* use _mm_malloc/_mm_free on other platforms than linux of MSVC (eg., cygwin, OSX)
* replace a lot of inline keywords by EIGEN_STRONG_INLINE to compensate for
poor MSVC inlining
|
|
|
|
|
| |
* fix some "unused variable" warnings in the tests; there remains a libstdc++ "deprecated"
warning which I haven't looked much into
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
| |
Anyway: LinearVectorization+CompleteUnrolling actually uses the InnerVectorization
unrollers, so these two cases could be merged to a single one...
|
|
|
|
| |
* keep going on the doc: added a short geometry tutorial
|
| |
|
|
|
|
|
| |
* Bug fixes in euler angle snippet, Assign and MapBase
* Started a "quick start guide" (draft state)
|
|
|
|
|
|
| |
IRC).
extended the documentation of the triangular solver.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|