Frank Dellaert
3247751b5d
Major check-in: there are now two interchangeable implementations of VectorConfig.
...
VectorMap uses a straightforward stl::map of Vectors. It has O(log n)
insert and access, and is fairly fast at both. However, it has high overhead
for arithmetic operations such as +, scale, axpy etc...
VectorBTree uses a functional BTree as a way to access SubVectors
in an ordinary Vector. Inserting is O(n) and much slower, but accessing,
is O(log n) and might be a bit slower than VectorMap. Arithmetic operations
are blindingly fast, however. The cost is it is not as KISS as VectorMap.
Access to vectors is now exclusively via operator[]
Vector access in VectorMap is via a Vector reference
Vector access in VectorBtree is via the SubVector type (see Vector.h)
Feb 16 2010: FD: I made VectorMap the default, because I decided to try
and speed up conjugate gradients by using Sparse FactorGraphs all the way.
2010-02-17 03:29:12 +00:00
Frank Dellaert
5d33eb185c
added SubVector type and some related routines
2010-02-15 23:53:16 +00:00
Manohar Paluri
693e13ef88
added default bool option to svd to sort the singular values and V. the default is true so pass false to avoid sorting
2010-02-14 04:54:39 +00:00
Alex Cunningham
ea3b8083b0
Fixed more tests for NonlinearConstraints, inequality constraints now work.
2010-02-07 01:18:17 +00:00
Frank Dellaert
5554f6fc7e
Faster non-GSL versions of BLAS 2-style calls
2010-01-31 22:56:06 +00:00
Alex Cunningham
efe51c8419
Fixed typo in function name
2010-01-31 21:09:03 +00:00
Alex Cunningham
c266012dcd
Added GSL/ATLAS version of multiplyAdd() and transposeMultiplyAdd()
2010-01-31 18:25:03 +00:00
justinca
74dd7128ac
Fixup cholesky decomposition - rename to LLt and RtR to make convention clear
2010-01-31 18:07:29 +00:00
Alex Cunningham
48d2dabe43
Added in-place insertion functions to Matrix, as well as a #define flag to enable or disable GSL code without a reconfigure.
2010-01-31 17:21:07 +00:00
Frank Dellaert
5e4b23df59
Matrix::multiplyAdd and transposeMultiplyAdd are "level 2" BLAS and speed up the numeric part of the code substantially. Alex might be able to speed them up even more by making them use real BLAS code within Matrix.cpp.
2010-01-31 16:04:24 +00:00
Frank Dellaert
4f998e5ecd
Matrix::transposeMultiplyAdd
2010-01-31 02:53:03 +00:00
justinca
16c55975c1
Fix inverse_square_root, add cholesky decomposition options
2010-01-22 22:28:03 +00:00
Kai Ni
4b778a4e82
fixed a bug in matrix solve function
2010-01-22 06:45:01 +00:00
Alex Cunningham
ac746ccead
Improved performance of updateAb in NoiseModel with GSL/ATLAS. Various other small optimizations were made.
2010-01-21 18:51:59 +00:00
Alex Cunningham
063aa14118
Reimplemented matrix::householder_update using GSL and BLAS, you'll need to edit Makefile.am to enable the new version -- see email
2010-01-21 00:59:33 +00:00
Alex Cunningham
5f588031bc
Merged NoiseQR back into trunk
2010-01-20 18:32:48 +00:00
Alex Cunningham
9c9007920a
Changed the interface on Matrix::column() so that it uses the one in our library (now called column_() ) rather than the boost default. Currently, our implementation just uses the boost default, but this may change due to timing results.
2010-01-20 16:08:14 +00:00
Alex Cunningham
98b143cd22
Switched all loop indices in Matrix/Vector to size_t, with improved results in timeGaussianFactorGraph
2010-01-20 14:42:05 +00:00
Alex Cunningham
6bc0462669
Checked Matrix::collect() with different timing metric, and memcpy has approx 25% speedup over original version. Matrix_range is slower or the same speed as the original version.
2010-01-20 13:45:22 +00:00
Alex Cunningham
55e414cbdd
Tried noalias() for collect(), but no real improvement
2010-01-20 03:25:55 +00:00
Alex Cunningham
03ec3e3e62
Implemented a version of collect() using matrix_range, but it had worse performance than memcpy. New version of vector_scale[column] with new pointer arithmetic implementation for approx 20% improvement.
2010-01-20 02:28:25 +00:00
Alex Cunningham
820ae5682d
Optimized row version of vector_scale with approx 20% improvement
2010-01-20 02:04:25 +00:00
Alex Cunningham
b860f06614
Switched Matrix::collect() over to a memcpy, but the results weren't actually an improvement
2010-01-20 01:42:36 +00:00
Alex Cunningham
f577b27f52
Small optimizations on Matrix::collect(), additional timing capabilities, and now collect() can have dimensions specified to avoid need for lookup.
2010-01-19 21:49:22 +00:00
Frank Dellaert
ea14959835
NoiseModel inhertance structure reversed, all constructors protected, new static "factories"
2010-01-17 17:47:23 +00:00
Richard Roberts
f0ae2c064e
Merging in NoiseModel, not yet used though
2010-01-16 18:39:39 +00:00
Frank Dellaert
a4d61d2f23
Little performance twiddles that make little difference
2010-01-16 07:22:34 +00:00
Frank Dellaert
91a0fb23df
Weighted pseudo-inverse now takes weights (1/sigma^2). Does not make a lot of performance difference.
2010-01-16 06:25:11 +00:00
Frank Dellaert
fb3e38b161
25% performance increase by improving weighted_eliminate
2010-01-16 04:57:58 +00:00
Richard Roberts
8d28763339
Vector and Matrix initialization optimization
2010-01-12 16:12:31 +00:00
Frank Dellaert
f1f21a8589
inverted sign of square root to make inv sqrt positive for simple covariance matrices
2010-01-10 13:53:31 +00:00
Frank Dellaert
15bb00683a
transpose backsubstitute on upper-triangular matrix
2009-12-30 13:20:16 +00:00
Frank Dellaert
c43cd425ab
new back-substitution functions that can do unit triangular solves
2009-12-29 13:59:34 +00:00
Chris Beall
a7a5e5e816
small performance improvement by using a pointer to address r
2009-12-14 16:56:50 +00:00
Chris Beall
be10fc2a90
18% performance boost by using pointer to address destination matrix A
2009-12-11 23:59:37 +00:00
Alex Cunningham
d7c67532bf
Changed format of Matrix::vector_scale() to switch arguments
2009-12-08 21:10:38 +00:00
Frank Dellaert
16da0895a8
square_root_inverse
2009-12-08 20:48:13 +00:00
Frank Dellaert
152fa0069a
fixed expected, actual nomenclature in assert_equal: always use (expected, equal) order
2009-12-08 13:53:33 +00:00
Eohan George
ae9789c9ee
Cleaner printing with tabs after each element
2009-12-02 23:01:49 +00:00
Frank Dellaert
f5fc14c0f4
Fixed bug in revealing rank, even simpler than before.
2009-11-13 06:16:56 +00:00
Alex Cunningham
77a1754b69
Renamed LinearFactor -> GaussianFactor, LinearFactorGraph -> GaussianFactorGraph
2009-11-12 16:16:32 +00:00
Alex Cunningham
f51614813e
Improved weighted eliminate to handle arbitrary linear equality constraints
2009-11-11 14:42:09 +00:00
Alex Cunningham
ddc0173671
Basic handling of constraints now works in factor graphs, assuming there is only one constraint on any given variable.
2009-11-10 04:36:07 +00:00
Alex Cunningham
2c37c94b5d
Replaced the householder transform with the weighted system
...
Removed constrained components from makefile, they will disappear shortly
2009-11-09 21:34:20 +00:00
Alex Cunningham
03985d16f6
Fixed equality checking with NaNs in Matrix
...
removed extraneous print statement in Vector
2009-11-09 16:57:30 +00:00
Alex Cunningham
7ef9ed950b
Improved performance of matrix scaling in LinearFactor::matrix_augmented
...
Added matrix scaling functions to scale either the rows or columns by values from a vector
2009-11-06 13:43:39 +00:00
Richard Roberts
e2414561be
Merged r895:900 from branch weightedQR - LinearFactorGraph now has sigmas and ConditionalGaussian now has precisions
2009-11-04 20:59:16 +00:00
Alex Cunningham
4c48bb08e1
Vector and Matrix updated with improved weighted householder operations and more tests.
2009-10-29 12:52:27 +00:00
Alex Cunningham
37bc303492
Added weighted Householder transforms that use precisions perform QDR factorization. Functions create a weighted vector pseudoinverse, and then use the pseudoinverse to substitute a solution into system.
2009-10-27 14:21:22 +00:00
Manohar Paluri
0b1b5eca67
Added const verifiers for member functions of the class which are compatible
2009-08-26 15:25:47 +00:00