10#ifndef EIGEN_POLYNOMIAL_SOLVER_H
11#define EIGEN_POLYNOMIAL_SOLVER_H
28template<
typename _Scalar,
int _Deg >
42 template<
typename OtherPolynomial >
47 template<
typename OtherPolynomial >
68 template<
typename Stl_back_insertion_sequence>
69 inline void realRoots( Stl_back_insertion_sequence& bi_seq,
82 template<
typename squaredNormBinaryPredicate>
90 if( pred( currNorm2, norm2 ) ){
91 res=
i; norm2=currNorm2; }
102 std::greater<RealScalar> greater;
111 std::less<RealScalar> less;
116 template<
typename squaredRealPartBinaryPredicate>
118 squaredRealPartBinaryPredicate& pred,
123 hasArealRoot =
false;
140 if( pred( currAbs2, abs2 ) )
147 else if(!hasArealRoot)
157 template<
typename RealPartBinaryPredicate>
159 RealPartBinaryPredicate& pred,
164 hasArealRoot =
false;
181 if( pred( curr, val ) )
216 std::greater<RealScalar> greater;
239 std::less<RealScalar> less;
262 std::greater<RealScalar> greater;
285 std::less<RealScalar> less;
293#define EIGEN_POLYNOMIAL_SOLVER_BASE_INHERITED_TYPES( BASE ) \
294 typedef typename BASE::Scalar Scalar; \
295 typedef typename BASE::RealScalar RealScalar; \
296 typedef typename BASE::RootType RootType; \
297 typedef typename BASE::RootsType RootsType;
330template<
typename _Scalar,
int _Deg>
347 template< typename OtherPolynomial >
378 else if(poly.size () == 2)
386 template<
typename OtherPolynomial >
398template<
typename _Scalar >
407 template<
typename OtherPolynomial >
416 template<
typename OtherPolynomial >
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define eigen_assert(x)
Definition Macros.h:1037
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE(Scalar, Size)
Definition Memory.h:842
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition PartialRedux_count.cpp:3
#define EIGEN_POLYNOMIAL_SOLVER_BASE_INHERITED_TYPES(BASE)
Definition PolynomialSolver.h:293
Computes eigenvalues and eigenvectors of general complex matrices.
Definition ComplexEigenSolver.h:46
Computes eigenvalues and eigenvectors of general matrices.
Definition EigenSolver.h:65
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
Definition PlainObjectBase.h:271
Defined to be inherited by polynomial solvers: it provides convenient methods such as.
Definition PolynomialSolver.h:30
const RealScalar & greatestRealRoot(bool &hasArealRoot, const RealScalar &absImaginaryThreshold=NumTraits< Scalar >::dummy_precision()) const
Definition PolynomialSolver.h:258
const RealScalar & absSmallestRealRoot(bool &hasArealRoot, const RealScalar &absImaginaryThreshold=NumTraits< Scalar >::dummy_precision()) const
Definition PolynomialSolver.h:235
const RealScalar & selectRealRoot_withRespectToAbsRealPart(squaredRealPartBinaryPredicate &pred, bool &hasArealRoot, const RealScalar &absImaginaryThreshold=NumTraits< Scalar >::dummy_precision()) const
Definition PolynomialSolver.h:117
PolynomialSolverBase(const OtherPolynomial &poly)
Definition PolynomialSolver.h:48
void setPolynomial(const OtherPolynomial &poly)
Definition PolynomialSolver.h:43
const RootType & smallestRoot() const
Definition PolynomialSolver.h:109
const RootsType & roots() const
Definition PolynomialSolver.h:55
std::complex< RealScalar > RootType
Definition PolynomialSolver.h:36
_Scalar Scalar
Definition PolynomialSolver.h:34
void realRoots(Stl_back_insertion_sequence &bi_seq, const RealScalar &absImaginaryThreshold=NumTraits< Scalar >::dummy_precision()) const
Definition PolynomialSolver.h:69
DenseIndex Index
Definition PolynomialSolver.h:39
const RootType & selectComplexRoot_withRespectToNorm(squaredNormBinaryPredicate &pred) const
Definition PolynomialSolver.h:83
Matrix< RootType, _Deg, 1 > RootsType
Definition PolynomialSolver.h:37
const RealScalar & absGreatestRealRoot(bool &hasArealRoot, const RealScalar &absImaginaryThreshold=NumTraits< Scalar >::dummy_precision()) const
Definition PolynomialSolver.h:212
const RealScalar & selectRealRoot_withRespectToRealPart(RealPartBinaryPredicate &pred, bool &hasArealRoot, const RealScalar &absImaginaryThreshold=NumTraits< Scalar >::dummy_precision()) const
Definition PolynomialSolver.h:158
NumTraits< Scalar >::Real RealScalar
Definition PolynomialSolver.h:35
PolynomialSolverBase()
Definition PolynomialSolver.h:51
const RootType & greatestRoot() const
Definition PolynomialSolver.h:100
const RealScalar & smallestRealRoot(bool &hasArealRoot, const RealScalar &absImaginaryThreshold=NumTraits< Scalar >::dummy_precision()) const
Definition PolynomialSolver.h:281
RootsType m_roots
Definition PolynomialSolver.h:290
PolynomialSolver(const OtherPolynomial &poly)
Definition PolynomialSolver.h:417
PolynomialSolver()
Definition PolynomialSolver.h:420
PolynomialSolverBase< _Scalar, 1 > PS_Base
Definition PolynomialSolver.h:402
void compute(const OtherPolynomial &poly)
Definition PolynomialSolver.h:408
A polynomial solver.
Definition PolynomialSolver.h:332
PolynomialSolver(const OtherPolynomial &poly)
Definition PolynomialSolver.h:387
PolynomialSolver()
Definition PolynomialSolver.h:390
internal::conditional< NumTraits< Scalar >::IsComplex, Scalar, std::complex< Scalar > >::type ComplexScalar
Definition PolynomialSolver.h:343
EigenSolverType m_eigenSolver
Definition PolynomialSolver.h:394
RootsType m_roots
Definition PolynomialSolver.h:290
void compute(const OtherPolynomial &poly)
Definition PolynomialSolver.h:348
Definition TensorRef.h:81
@ IsComplex
Definition common.h:98
#define abs(x)
Definition datatypes.h:17
EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, const typename NumTraits< Scalar >::Real &precision=NumTraits< Scalar >::dummy_precision())
Definition MathFunctions.h:1940
EIGEN_DEVICE_FUNC internal::add_const_on_value_type< EIGEN_MATHFUNC_RETVAL(real_ref, Scalar)>::type real_ref(const Scalar &x)
Definition MathFunctions.h:1237
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE internal::enable_if< NumTraits< T >::IsSigned||NumTraits< T >::IsComplex, typenameNumTraits< T >::Real >::type abs(const T &x)
Definition MathFunctions.h:1509
EIGEN_DEVICE_FUNC bool abs2(bool x)
Definition MathFunctions.h:1292
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEFAULT_DENSE_INDEX_TYPE DenseIndex
Definition Meta.h:66
const int Dynamic
Definition Constants.h:22
T poly_eval(const Polynomials &poly, const T &x)
Definition PolynomialUtils.h:46
Definition BandTriangularSolver.h:13
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition ForwardDeclarations.h:17
Definition datatypes.h:12