Commit Graph

113 Commits

Author SHA1 Message Date
Benoit Jacob
9a0900e33e last round of changes, mainly to return derived types instead of base types, and fix various compilation issues 2009-11-09 07:51:31 -05:00
Benoit Jacob
e4e58e8337 simplifications in the ei_solve_impl system, factor out some boilerplate code 2009-11-08 16:51:41 -05:00
Benoit Jacob
ba7bfe110c port the qr module to ei_solve_xxx. 2009-11-08 10:21:26 -05:00
Benoit Jacob
a77872dd6c move partial-pivoting lu to ei_solve_impl 2009-11-03 03:06:34 -05:00
Benoit Jacob
da363d997f introduce ei_xxx_return_value and ei_xxx_impl for xxx in solve,kernel,impl
put them in a new internal 'misc' directory
2009-11-03 02:18:10 -05:00
Benoit Jacob
f975b9bd3e SVD::solve() : port to new API and improvements 2009-10-30 08:51:33 -04:00
Benoit Jacob
6b48e932e9 *port the Cholesky module to the new solve() API
*improve documentation
2009-10-29 21:11:05 -04:00
Benoit Jacob
2840ac7e94 big huge changes, so i dont remember everything.
* renaming, e.g. LU ---> FullPivLU
* split tests framework: more robust, e.g. dont generate empty tests if a number is skipped
* make all remaining tests use that splitting, as needed.
* Fix 4x4 inversion (see stable branch)
* Transform::inverse() and geo_transform test : adapt to new inverse() API, it was also trying to instantiate inverse() for 3x4 matrices.
* CMakeLists: more robust regexp to parse the version number
* misc fixes in unit tests
2009-10-28 18:19:29 -04:00
Benoit Jacob
1f1c04cac1 sync the documentation examples 2009-10-26 14:37:43 -04:00
Benoit Jacob
44cdbaba4d * make inverse() do a ReturnByValue
* add computeInverseWithCheck
* doc improvements
* update test
2009-10-26 14:16:50 -04:00
Benoit Jacob
07d1bcffda remove 1 useless layer of functions 2009-10-26 12:30:29 -04:00
Benoit Jacob
ec02388a5d big rewrite in Inverse.h
in particular, the API is essentially finalized and the 4x4 case is fixed to be numerically stable.
2009-10-26 11:18:23 -04:00
Benoit Jacob
68d48511b2 move PartialLU to the new API 2009-10-21 17:06:42 -04:00
Benoit Jacob
13f31b8daf * make PartialLU avoid to generate inf/nan when given a singular matrix
(result undefined, but at least it won't take forever on intel 387)
* add lots of comments, especially to LU.h
* fix stuff I had broken in Inverse.h
* split inverse test
2009-10-20 00:36:07 -04:00
Benoit Jacob
9a700c2974 * LU unit test: finally test fixed sizes
* ReturnByValue: after all don't eval to temporary for generic MatrixBase impl
2009-10-19 10:56:37 -04:00
Benoit Jacob
47eeb40380 remove the m_originalMatrix member. Instead, image() now takes the original matrix as parameter. It was the only method to use it anyway. Introduce m_isInitialized. 2009-10-18 15:21:19 -04:00
Benoit Jacob
d71c7f42d3 * useThreshold -> setThreshold
* remove defaultThreshold()
2009-10-18 14:20:14 -04:00
Benoit Jacob
8332c232db big huge changes in LU!
* continue the decomposition until a pivot is exactly zero;
  don't try to compute the rank in the decomposition itself.
* Instead, methods such as rank() use a new internal parameter
  called 'threshold' to determine which pivots are to be
  considered nonzero.
* The threshold is by default determined by defaultThreshold()
  but the user can override that by calling useThreshold(value).
* In solve/kernel/image, don't assume that the diagonal of U
  is sorted in decreasing order, because that's only approximately
  true. Additional work was needed to extract the right pivots.
2009-10-18 00:47:40 -04:00
Benoit Jacob
3c4a025a54 merge 2009-10-15 16:09:43 -04:00
Benoit Jacob
41e942d3fb don't try to finish early 2009-10-15 16:09:17 -04:00
Benoit Jacob
80ede36b24 allow arbitrary resulttype, fixes Xuewen's issue, and this stuff is going to get deeply refactored soon anyway. 2009-10-06 09:26:28 -04:00
Benoit Jacob
e82ab8a5dd move also inverse() to ReturnByValue, by doing a solve on NestByValue<Identity>.
also: adding resize() to MatrixBase was really needed ;)
2009-09-26 11:40:29 -04:00
Benoit Jacob
4f9e270343 * make LU::kernel() and LU::image() also use ReturnByValue
* make them return zero vector in the degenerate case, instead of asserting
  (let's stick to the principle that we only assert on memory errors)
2009-09-22 00:16:51 -04:00
Benoit Jacob
0ad3494bd3 fix docs 2009-09-22 21:51:23 -04:00
Benoit Jacob
ab5cc8284a convert LU::solve() to the new API 2009-09-22 20:58:29 -04:00
Gael Guennebaud
fcae32cc3f compilation fixes 2009-09-17 15:11:13 +02:00
Benoit Jacob
a4fd0aa25b * fix bug in col-pivoting qr, forgot to swap the colNorms when swapping cols
* add Gael a copyright line
2009-09-16 14:19:59 -04:00
Benoit Jacob
3288e5157a finally, the correct way of dealing with zero matrices in solve() 2009-08-24 10:51:07 -04:00
Benoit Jacob
b37ab9b324 clarifications in LU::solve() and in LU documentation 2009-08-24 00:02:49 -04:00
Gael Guennebaud
fc9480cbb3 bugfix in compute_matrix_flags, optimization in LU,
improve doc, and workaround aliasing detection in MatrixBase_eval snippet
(not very nice but I don't know how to do it in a better way)
2009-08-16 10:55:10 +02:00
Benoit Jacob
ee982709d3 in all decs, make the compute() methods return *this
(implements feature request #18)
2009-08-15 23:12:39 -04:00
Benoit Jacob
22ae236d4e machine_epsilon -> epsilon as wrapper around numeric_traits 2009-08-14 15:12:32 -04:00
Gael Guennebaud
fe813911f2 make LU::solve() not to crash when rank=0 2009-08-09 00:06:53 +02:00
Gael Guennebaud
f5e1c896c7 replace custom rank one update in LU by an expression 2009-08-08 00:01:43 +02:00
Gael Guennebaud
2707a6b87c fix determinant in PartialLU 2009-08-06 17:28:31 +02:00
Gael Guennebaud
9822493aaf fixes in determinant and homogeneous 2009-08-06 16:54:55 +02:00
Gael Guennebaud
3ac01b1400 compilation fix in EigenSolver,
bugfix in PartialLU
2009-08-06 16:41:54 +02:00
Benoit Jacob
014c581a5b fix assertions, improve docs.
we never assert on conditions that depend on the result of a computation!!
also the assertion that rank>0 amounts to matrix!=0 which we have to leave under the responsibility of the user.
2009-08-05 10:15:28 +02:00
Gael Guennebaud
4bec101470 implement two levels of blocking in PartialLU => high speedup 2009-08-04 11:28:02 +02:00
Gael Guennebaud
ce1dc1ab16 implements a blocked version of PartialLU 2009-08-03 12:11:18 +02:00
Gael Guennebaud
5f3606bce9 bug fix in inverse for 1x1 matrix,
some compilation fixes in sparse_solvers
2009-07-27 18:09:56 +02:00
Gael Guennebaud
94cc30180e compilation fixes 2009-07-27 13:50:23 +02:00
Benoit Jacob
7b750182f2 * polish computeInverseWithCheck to share more code, fix documentation, fix coding style
* add snippet for computeInverseWithCheck documentation
* expand unit-tests to cover computeInverseWithCheck
2009-06-29 22:07:37 +02:00
Manuel Yguel
126a031a39 computeInverseWithCheck method added to matrix base (specialization for 1D to 4D) 2009-06-29 20:47: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
Hauke Heibel
2c247fc8a8 LU and PartialLU decomposition interface unification.
Added default ctor and public compute method as well
as safe-guards against uninitialized usage.
Added unit tests for the safe-guards.
2009-05-22 14:27:58 +02:00
Benoit Jacob
c7baddb132 add internal comment (mostly a pretext to test the eigen-commits list) 2009-05-20 16:54:40 +02:00
Benoit Jacob
a697cb4094 fix comments (old comments that were copied from LU) 2009-05-19 21:54:29 +02:00
Benoit Jacob
7c14e1eac4 add partial-pivoting LU decomposition
the name 'PartialLU' is not meant to be definitive!
make inverse() and determinant() use it, so it's *almost* considered
well tested.
2009-05-13 02:02:22 +00:00