Gael Guennebaud
ff661a7b6f
Add temporary check for triangularView += product
2013-04-10 23:13:04 +02:00
Gael Guennebaud
899c0c2b6c
Clean source code and unit tests with respect to -Wunused-local-typedefs
2013-04-10 22:27:35 +02:00
Gael Guennebaud
f7e52d22d4
Fix missuse of unitialized values in unit tests
2013-04-10 09:46:16 +02:00
Gael Guennebaud
3cb6e21f80
Fix bug #562 : add vector-wise normalized and normalize functions
2013-04-09 11:12:35 +02:00
Gael Guennebaud
d8f1035355
Fix a couple of int versus Index issues.
2013-04-09 09:43:00 +02:00
Gael Guennebaud
d63712163c
Add SSE4 min/max for integers
2013-03-20 18:28:40 +01:00
Desire NUENTSA
da6219b19d
Bug567 : Fix iterative solvers to immediately return when the initial guess is the true solution and for trivial solution
2013-03-20 16:15:18 +01:00
Gael Guennebaud
9bfeeba1c5
Add Official/Unsupported labels to unit tests and add a ctest driver to submit subprojects to cdash
2013-03-20 08:40:13 +01:00
Gael Guennebaud
98ce4455dd
fix sparse vector assignment from a sparse matrix
2013-03-06 11:58:22 +01:00
Gael Guennebaud
858ac9ffe0
Add missing template keyword
2013-03-01 00:03:28 +01:00
Hauke Heibel
b5d8299ee7
Prevent calling .norm() on integer matrices in the unit tests.
2013-02-28 12:33:34 +01:00
Hauke Heibel
5882f1631d
Fixed compiler warning.
2013-02-28 10:15:19 +01:00
Gael Guennebaud
6dd93fc76e
The ref unit test cannot be easily written to work with EIGEN_DEFAULT_TO_ROW_MAJOR
2013-02-27 23:52:10 +01:00
Gael Guennebaud
455e6e38b6
Fix two numerical issues in unit tests.
2013-02-27 08:07:18 +01:00
Gael Guennebaud
61a2995d03
Remove ICC warning in nomalloc unit test.
2013-02-26 18:10:19 +01:00
Gael Guennebaud
fe2c8e1c36
Fix compilation with ICC that was unable to instanciate Scaling from Eigen's namespace.
2013-02-26 17:38:37 +01:00
Gael Guennebaud
bb94f0ebc6
Add a unit test for Ref.h and fix an extra copy.
2013-02-26 15:10:00 +01:00
Gael Guennebaud
b73baa1ea4
Workaround warning: assuming signed overflow does not occur when...
2013-02-26 10:29:24 +01:00
Gael Guennebaud
5108ef01fc
Fix no newline warning.
2013-02-26 10:27:55 +01:00
Gael Guennebaud
96ad13abba
conservative_resize unit test was executed only once
2013-02-25 01:50:58 +01:00
Gael Guennebaud
41aa0fcc3b
Output random generator seed in case of failure so that we have it in CDash.
2013-02-25 01:46:59 +01:00
Gael Guennebaud
19bc418f5c
Remove erroneously committed debugging stuff.
2013-02-25 01:17:44 +01:00
Gael Guennebaud
80d2a65465
Fix visitor unit test.
2013-02-25 01:12:07 +01:00
Gael Guennebaud
04367447ac
Fix bug #496 : generalize internal rank1_update implementation to accept uplo(A) += v * w and make A.triangularView() += v * w uses it.
...
Update unit tests and blas interface respectively.
2013-02-24 23:05:42 +01:00
Gael Guennebaud
1c137496c6
Extend sparseqr unit test to check linearly dependent columns
2013-02-24 20:36:54 +01:00
Gael Guennebaud
28e139ad60
Fix another issue related to summing up many signed values.
2013-02-23 23:06:45 +01:00
Gael Guennebaud
42af5870a4
Fix array unit test: isApprox(log(0),log(0)) is false, and summing up signed float value might result in very small values and thus large numerical errors
2013-02-23 22:58:14 +01:00
Gael Guennebaud
e71bc79f2a
SparseLU does not accept row-major matrices for the destination.
2013-02-22 14:45:42 +01:00
Jitse Niesen
b4f6aec195
Fix linear vectorized transversal in linspace (fixes bug #526 ).
2013-02-18 17:26:03 +00:00
Gael Guennebaud
a1091caa43
Fix some unused or not initialized related warnings.
2013-02-15 14:05:37 +01:00
Gael Guennebaud
8745da14d8
Fix SSE plog<float> to return -INF on 0
2013-02-14 23:34:05 +01:00
Gael Guennebaud
a0fb885c82
Update adjoint unit test to avoid instantiating sqrt(int)
2013-02-14 21:33:42 +01:00
Gael Guennebaud
9cc016d3f9
Update basicstuff unit test to avoid instantiating the ambiguous sqrt(int)
2013-02-14 21:15:58 +01:00
Desire NUENTSA
35647b0133
Correct bug in SPQR backend and replace matrixQR by matrixR
2013-01-29 17:48:30 +01:00
Desire NUENTSA
8bc00925e5
Change int to Index type for SparseLU
2013-01-29 16:21:24 +01:00
Desire NUENTSA
d58056bde4
Merged local branch with main trunk
2013-01-25 19:05:33 +01:00
Desire NUENTSA
81d4bfa8d9
add support for solving with sparse right hand side
2013-01-25 18:17:17 +01:00
Gael Guennebaud
b74c0a4413
Check that NeedsToAlign is properly sets before checking alignment
2013-01-24 11:42:04 +01:00
Desire NUENTSA
ad798231ec
Fix test for Metis
2013-01-21 15:43:15 +01:00
Desire NUENTSA
5b9bb00265
Test for the sparse Blue norm
2013-01-21 15:37:06 +01:00
Desire NUENTSA
5dcf6caa36
Unit test for the Metis Ordering package
2013-01-21 15:36:18 +01:00
Gael Guennebaud
392ffce3b9
Fix traits of Map<Quaternion>, and respectively extend the unit tests
2013-01-20 10:21:54 +01:00
Desire NUENTSA
91b3b3aaab
Add a sparse QR factorization and update the elimination tree in SparseLU
2013-01-11 17:16:14 +01:00
Gael Guennebaud
8a50ed86f3
Check that minCoeff(int*)/maxCoeff(int*) always pick the first entry in case of multiple extrema.
2013-01-05 23:49:47 +01:00
Gael Guennebaud
85005ffbd1
Make sure sqrt and the likes are not compiled for integer type in cwiseop unit test.
2012-12-20 18:08:26 +01:00
Gael Guennebaud
8844f632fa
Move work in progress Levenberg Marquardt module in unsupported
2012-12-08 18:22:23 +01:00
Desire NUENTSA
cc0fef9807
Add tests for dense and sparse levenberg-Marquardt
2012-12-07 15:48:21 +01:00
Desire NUENTSA
36414d1f3e
Update SPQR module for Sparse LM
2012-11-21 19:47:44 +01:00
Gael Guennebaud
4e60283289
Remove Sparse/InnerVectorSet expression in favor of a more general Block<> specialization for Sparse expression.
...
The specializations for "InnerPanels" are still preserved for efficiency reasons and because they offer additional usefull features.
2012-11-16 09:02:50 +01:00
Desire NUENTSA
9cf77ce1d8
Add support for Sparse QR factorization
2012-11-12 15:20:37 +01:00
Gael Guennebaud
a76fbbf397
Fix bug #314 :
...
- remove most of the metaprogramming kung fu in MathFunctions.h (only keep functions that differs from the std)
- remove the overloads for array expression that were in the std namespace
2012-11-06 15:25:50 +01:00
Gael Guennebaud
fec6df1f7d
fix dense=sparse*diagonal (there was an issue in the values returned by the .outer() function of the related iterators)
2012-10-03 09:06:19 +02:00
Gael Guennebaud
f30ca7ed7e
extend unit tests to check rectangular matrices for sparse*diagonal products
2012-10-02 23:03:06 +02:00
Gael Guennebaud
8b83e66906
add scalar multiple to diagonal matrices
...
(transplanted from dc5b335f9f
)
2012-09-27 09:37:05 +02:00
Gael Guennebaud
0c584dcf4d
fix compilation with m.array().min/max(scalar)
2012-09-12 17:50:07 +02:00
Desire NUENTSA
fdd0f0c5fc
merge Sparse LU branch
2012-09-07 13:18:16 +02:00
Gael Guennebaud
9da41cc527
forward resize() function from Array/Matrix-Wrapper to the nested expression such that mat.array().resize(a,b) is now allowed.
2012-08-30 16:28:53 +02:00
Gael Guennebaud
c5031edb92
Fix out-of-range memory access in GEMV (the memory was not used for the computation, only to assemble unaligned packets from aligned packet loads)
...
(transplanted from 221f54698c
)
2012-08-30 10:52:15 +02:00
Desire NUENTSA
7dc39b7037
Add unit tests
2012-08-03 13:05:45 +02:00
Jitse Niesen
696b2f999f
Eigenvalues module: Implement setMaxIterations() methods.
2012-07-28 21:30:09 +01:00
Gael Guennebaud
9e8d2dea80
Add a preliminary GeneralizedEigenSolver computing the eigenvalues of Av=lBv with A and B general real matrices.
...
Currently only the eigenvalues are reported.
2012-07-26 20:15:17 +02:00
Gael Guennebaud
e75b1eb883
Fix aliasing issue in sparse matrix assignment.
...
(m=-m; or m=m.transpose(); with m sparse work again)
2012-07-25 09:33:50 +02:00
Gael Guennebaud
c1cab7b8ed
real QZ: update license
2012-07-24 18:11:41 +02:00
Alexey Korepanov
65db91ac2b
Add a RealQZ class: a generalized Schur decomposition for real matrices
2012-07-11 16:38:03 -05:00
Jitse Niesen
ba5eecae53
Allow user to specify max number of iterations (bug #479 ).
2012-07-24 15:17:59 +01:00
Jitse Niesen
fd5749f51c
LDLT: Report sign consistent with D for indefinite matrices.
...
See http://forum.kde.org/viewtopic.php?f=74&t=106942
2012-07-22 21:39:38 +01:00
Benjamin Piwowarski
6bf49ceac2
bug #449 : add SparseMatrix::conservativeResize feature
2012-07-19 00:07:06 +02:00
Benoit Jacob
b596f6c10c
remove outdated "Eigen itself is part of the KDE project" outside of eigen2 files
2012-07-15 10:33:40 -04:00
Benoit Jacob
0733e622a3
Manual MPL2 relicensing fixes
2012-07-13 14:42:47 -04:00
Benoit Jacob
69124cfca2
Automatic relicensing to MPL2 using Keirs script. Manual fixup follows.
2012-07-13 14:42:47 -04:00
Gael Guennebaud
904ecdf9d8
Add a DynamicIndex constant for signed quantities and use it to fix the conflict
...
between Diagonal<S,-1> (the first sub diagonal) and a runtime super/sub diagonal which is now:
Diagonal<S,DynamicIndex>
2012-07-10 23:04:17 +02:00
Gael Guennebaud
3e6329a0d9
fix computation of fixed size sub/super diagonal size
2012-07-10 22:39:05 +02:00
Gael Guennebaud
54d55aeaf6
fix bug #487 : isometry * scaling was not compiling
2012-07-04 18:25:07 +02:00
Jitse Niesen
d0b873822f
Make product eval-at-once.
...
* Make product EvalAtOnce in cases OuterProduct, GemmProduct and
GemvProduct
* Ensure that product evaluators are nested inside EvalToTemp
evaluator
* As temporary kludge, evaluate expression to temporary in AllAtOnce
traversal and pass expression operator to evalTo()
2012-06-29 13:49:25 +01:00
Jitse Niesen
c1eb820e50
Implement interface for NoAlias assignments.
...
* Rename the old copy_using_evaluators to noalias_copy_using_evaluators.
* Write a new copy_using_evaluators which strips NoAlias expression, if present,
and calls noalias_copy_using_evaluators; in future, it will also take care of
aliasing in products.
* Add expression() getter to NoAlias.
2012-06-29 13:24:04 +01:00
Jitse Niesen
069fd0e4be
Move (part of) evaluation of products to evaluator objects.
...
* Copy implementation from CoeffBasedProduct.
* Copy implementation from GeneralProduct in InnerProduct case.
* For GeneralProduct in other cases, call the evalTo() member function with
expression objects in constructor of evaluator.
2012-06-29 13:07:21 +01:00
Jitse Niesen
23184527fa
Resize lhs automatically in copy_using_evaluator().
2012-06-28 15:25:25 +01:00
Gael Guennebaud
57b5804974
remove dynamic allocation for fixed size object and triangular matrix-matrix products
2012-06-26 17:45:01 +02:00
Jitse Niesen
172af9facc
Fix an evaluator test which was wrong and failed in debug builds.
2012-06-24 17:31:19 +01:00
Gael Guennebaud
5fae6c7848
resurrect expression evaluators
2012-06-22 09:39:35 +02:00
Gael Guennebaud
882912b85f
comment two tests in nomalloc (there is no regression here, it's just I've been too optimistic when adding them recently)
2012-06-20 08:58:26 +02:00
Gael Guennebaud
c858fb353f
fix a few warnings
2012-06-15 09:06:32 +02:00
Gael Guennebaud
88e051019b
extend nomalloc unit test to test the solve calls
2012-06-12 13:12:47 +02:00
Gael Guennebaud
512e0b151b
clean the support for testing existing sparse problems
2012-06-07 18:31:09 +02:00
Gael Guennebaud
05af70a958
make sure we do not solve with a null right hand side
2012-06-06 17:11:50 +02:00
Gael Guennebaud
9d2b6dd71a
test block objects for sparse solving
2012-06-06 09:40:01 +02:00
Gael Guennebaud
945179b26c
CholmodDecomposition now has explicit variants. These variants will allow to provide access to the underlying factors.
2012-06-04 13:24:41 +02:00
Gael Guennebaud
1b20e16546
extend umfpack support
2012-06-04 10:39:57 +02:00
Jitse Niesen
57b5767fe2
Fix infinite recursion in ProductBase::coeff() (bug #447 )
...
Triggered by product of dynamic-size 1 x n and n x 1 matrices.
Also, add regression test.
2012-04-18 15:23:28 +01:00
Gael Guennebaud
b0cf95619e
fix compilation of "somedensematrix.llt().matrixL().transpose()" (missing constness on the return types)
2012-04-10 15:40:36 +02:00
Gael Guennebaud
daaeddd581
rm unused gsl_helper file
2012-03-31 17:37:46 +02:00
Gael Guennebaud
48f0bbb586
fix bug #362 and add missing specialization for affine-compact * projective
2012-03-30 23:22:29 +02:00
Desire NUENTSA
2d35f88bcf
Cholmod does not compute a determinant
2012-03-29 19:07:13 +02:00
Desire NUENTSA
f776c061a1
Correct a small bug in sparse_solver
2012-03-29 14:53:42 +02:00
Desire NUENTSA
f804a319c8
modify the unit tests of sparse linear solvers to enable tests on real matrices, from MatrixMarket for instance
2012-03-29 14:32:54 +02:00
Gael Guennebaud
c172abdcc7
add sparse * permutation products with assiciated unit tests
2012-03-29 11:29:43 +02:00
Gael Guennebaud
fd2f399c18
fix bug #439 : add Quaternion::FromTwoVectors() static constructor
2012-03-26 18:30:04 +02:00
Hauke Heibel
dd9365e089
Fixed division by zero corner case in array unit test.
2012-03-09 14:04:13 +01:00
Gael Guennebaud
9b1ad5e5bd
rm cC++11 features
2012-03-09 12:08:06 +01:00
Desire NUENTSA
0d8466d317
Adding an interface to PaStiX, the multithreaded and distributed linear solver
2012-03-08 18:59:08 +01:00
Hauke Heibel
c08521ea6b
Improved the unit tests for setLinSpaced.
...
Provide a default constructed step size as opposed to an int when the size is 1.
2012-03-07 16:18:35 +01:00
Hauke Heibel
ef022da28e
Fixed setLinSpaced for size==1.
2012-03-07 15:34:39 +01:00
Hauke Heibel
81c1336ab8
Added support for component-wise pow (equivalent to Matlab's operator .^).
2012-03-07 08:58:42 +01:00
Hauke Heibel
8cb3e36e14
Added support for scalar / array division.
2012-03-02 16:27:27 +01:00
Gael Guennebaud
309b27b545
update unit test for Simplicial-Cholesky
2012-02-28 14:21:54 +01:00
Gael Guennebaud
122f28626c
fix and clean Pardiso solver and s/PARDISOSupport/PardisoSupport
2012-02-27 13:23:21 +01:00
Gael Guennebaud
b240a3fad9
add unit tests for analyzePatter/factorize API
2012-02-27 13:22:38 +01:00
Gael Guennebaud
bc8188f6a1
fix symmetric permuatation for mixed storage orders
2012-02-27 13:21:41 +01:00
Desire NUENTSA
16da7299dd
Add test in BiCGSTAB for ILUT
2012-02-10 18:57:38 +01:00
Gael Guennebaud
4ed87c59c7
Update the PARDISO interface to match other sparse solvers.
...
- Add support for Upper or Lower inputs.
- Add supports for sparse RHS
- Remove transposed cases, remove ordering method interface
- Add full access to PARDISO parameters
2012-02-04 14:20:56 +01:00
Gael Guennebaud
ad4aa7873f
remove unused variables
2012-02-03 13:30:48 +01:00
Gael Guennebaud
13abb37721
shutup floating point underflow warning for this specific unit test
2012-01-31 23:18:17 +01:00
Gael Guennebaud
18e3ac0f0d
fix some compilation errors with ICC and -strict-ansi
2012-01-31 09:14:01 +01:00
Gael Guennebaud
87138075da
add the possibility to assemble a SparseMatrix object from a random list of triplets that may contain duplicated elements. It works in linear time, with O(1) re-allocations.
2012-01-28 11:13:59 +01:00
Gael Guennebaud
a108216af1
fix bug #410 : fix a possible out of range access in EigenSolver
2012-01-25 19:02:31 +01:00
Gael Guennebaud
87f2af5930
workaround ICC compilation error with -strict-ansi
2012-01-25 15:45:01 +01:00
Gael Guennebaud
ee9f3e34b0
LLT: improve rankUpdate to support downdates,
...
LDLT: add the missing info() function,
improve unit testing of rankUpdate()
2012-01-23 17:28:23 +01:00
Abraham Bachrach
039408cd66
added functions to allow for cwise min/max operations with scalar argument (bug #400 ).
...
added function for array.min(), array.max(), matrix.cwiseMin(), matrix.cwiseMax().
The matrix.cwiseMin/Max functions required the definition of the ConstantReturnType typedef.
However, it wasn't defined until after MatrixCwiseBinaryOps was included in Eigen/src/SparseCore/SparseMatrixBase.h,
so I moved those includes after the definition of the typedefs.
tests for both the regular and scalar min/max functions were added as well
2012-01-11 11:00:30 -05:00
Gael Guennebaud
15ea999f84
pushed too fast the previous one
2011-12-23 23:22:31 +01:00
Gael Guennebaud
901bcdd2a8
the previous test works for Dynamic sizes only
2011-12-23 23:16:43 +01:00
Gael Guennebaud
96a18ef230
add a reconstruction test
2011-12-23 23:15:08 +01:00
Gael Guennebaud
8171adb7ff
fix bug #398 , the quaternion returned by slerp was not always normalized,
...
add a proper unit test for slerp
2011-12-23 22:39:32 +01:00
Gael Guennebaud
67ae94f3a2
fix compilation of sparse_basic unit test for complexes
2011-12-23 09:41:14 +01:00
Gael Guennebaud
2c03e6fccc
evaluate 1D sparse expressions into SparseVector and make the sparse operator<< and dot honor nested types
2011-12-22 14:01:06 +01:00
Gael Guennebaud
6f92b75874
add aliasing test for sparse*sparse product
2011-12-20 18:10:22 +01:00
Gael Guennebaud
50d756b9ea
fix bug #394 : innerVector::nonZeros() was broken for uncompressed mode
2011-12-20 18:10:02 +01:00
Jitse Niesen
3db6455896
Remove evaluators for 2.1 release.
...
We plan to re-instate them when we branch 2.2 (see bug #388 ).
2011-12-14 21:23:43 +00:00
Gael Guennebaud
9d7d634897
add cholmod_support unit tests
2011-12-10 19:32:17 +01:00
Gael Guennebaud
2600ba1731
feature 297: s/intersectionPoint/pointAt, fix documentation, add a unit test
2011-12-10 12:17:42 +01:00
Tim Holy
2d7c3eea53
feature 319: Add update and downdate functionality to LDLT
2011-12-09 21:04:44 +01:00
karturov
015c331252
Intel(R) MKL support added.
...
* * *
License disclaimer changed to BSD license for MKL_support.h
* * *
Pardiso support fixed, test added.
blas/lapack tests fixed: Scalar parameter was added in Cholesky, product_matrix_vector_triangular remaned to triangular_matrix_vector_product.
* * *
PARDISO test was added physically.
2011-12-05 14:52:21 +07:00
Gael Guennebaud
e270a5656a
fix min/max clash with clang's header by including fstream beforehand
2011-12-08 23:27:10 +01:00
Gael Guennebaud
82f9aa194d
fix bug #294 : add a diagonal() method to SparseMatrix (const)
2011-12-04 21:49:21 +01:00
Gael Guennebaud
9bd902ed9c
fix bug #341 : trisove on MappedSparseMatrix
2011-12-04 14:57:43 +01:00
Gael Guennebaud
9353bbac4a
fix bug #356 : fix TriangularView::InnerIterator for unit diagonals
2011-12-04 14:39:24 +01:00
Gael Guennebaud
91e392a042
add ReverseInnerIterators to loop over the elements in reverse order,
...
and partly fix bug #356 (issue in trisolve for upper-column major))
2011-12-03 23:49:37 +01:00
Gael Guennebaud
4ca89f32ed
Sparse matrix insertion:
...
- automatically turn a SparseMatrix to uncompressed mode when calling insert(i,j).
- now coeffRef insert a new element when it does not already exist
2011-12-02 19:00:16 +01:00
Gael Guennebaud
b85bcd91bf
remove GSL dependency in the unit tests
2011-12-01 18:17:19 +01:00
Gael Guennebaud
d1b54ecfa3
add more support for uncompressed mode
2011-11-30 19:24:43 +01:00
Marc Glisse
a2810aa32f
bug #383 - another c++11-user-defined-literal fix
2011-11-27 15:27:25 -05:00
Benoit Jacob
bc6d78982f
Bugs 157 and 377 - General tightening/testing of vectorwise ops:
...
* add lots of static assertions making it very explicit when all these ops
are supposed to work:
** all ops require the rhs vector to go in the right direction
** all ops already require that the lhs and rhs are of the same kind
(matrix vs vector) otherwise we'd have to do complex work
** multiplicative ops (introduced Kibeom's patch) are restricted to arrays, if only because for matrices they could be ambiguous.
* add a new test, vectorwiseop.cpp.
* these compound-assign operators used to be implemented with for loops:
for(Index j=0; j<subVectors(); ++j)
subVector(j).array() += other.derived().array();
This didn't seem to be needed; replaced by using expressions like operator+ and operator- did.
2011-11-18 11:10:27 -05:00
Dennis Schridde
db36e4204f
[Geometry/AlignedBox] New typedefs, like for Core/Matrix
...
Includes 1-4 and dynamic sized boxes for int, float and double type.
Also changes the tests to use these typedefs.
2011-11-09 22:12:28 +01:00
Gael Guennebaud
53fa851724
move sparse solvers from unsupported/ to main Eigen/ and remove the "not stable yet" warning
2011-11-12 14:11:27 +01:00
Benoit Jacob
aa3e420df5
Add test for Matrix(x, y) ctor static assert added in previous changeset
2011-11-06 00:44:04 -04:00
Gael Guennebaud
478de03bd8
fix a couple of warnings in the unit tests
2011-11-05 23:30:49 +01:00
Benoit Jacob
0cf2a05f3e
bug #365 - Add test for non-usage of B0
2011-10-31 10:44:06 -04:00
Benoit Jacob
9df2f5c923
bug #369 - Quaternion alignment is broken
...
The problem was two-fold:
* missing aligned operator new
* Flags were mis-computed, the Aligned constant was misused
2011-10-31 09:23:41 -04:00
Benoit Jacob
0609dbeec6
fix more variable-set-but-not-used warnings on gcc 4.6
2011-10-31 00:51:36 -04:00
Benoit Jacob
6a1caf0351
Fix some unused-variable warnings with GCC 4.6
2011-10-30 23:55:20 -04:00
Gael Guennebaud
1ddf88060b
update sparse*sparse product: the default is now a conservative algorithm preserving symbolic non zeros. The previous with auto pruning of the small value is avaible doing: (A*B).pruned() or (A*B).pruned(ref) or (A*B).pruned(ref,eps)
2011-10-24 11:44:53 +02:00