Deprecating Diagonalize_traits: document dependency to Eigen

This commit is contained in:
Simon Giraudot 2018-04-16 15:33:36 +02:00
parent 4599787d67
commit 41d554fe58
14 changed files with 28 additions and 35 deletions

View File

@ -137,6 +137,8 @@ for display in Maplesoft's Maple.
\cgalExample{Approximate_min_ellipsoid_d/ellipsoid_for_maple.cpp} \cgalExample{Approximate_min_ellipsoid_d/ellipsoid_for_maple.cpp}
\note This class requires the \ref thirdpartyEigen library.
*/ */
template< typename Traits > template< typename Traits >
class Approximate_min_ellipsoid_d { class Approximate_min_ellipsoid_d {

View File

@ -184,10 +184,9 @@ public:
algorithm. Possible values are `Parallel_tag` (default value is %CGAL algorithm. Possible values are `Parallel_tag` (default value is %CGAL
is linked with TBB) or `Sequential_tag` (default value otherwise). is linked with TBB) or `Sequential_tag` (default value otherwise).
\tparam DiagonalizeTraits model of `DiagonalizeTraits` used for \tparam DiagonalizeTraits model of `DiagonalizeTraits` used for
matrix diagonalization. It can be omitted: if Eigen 3 (or greater) matrix diagonalization. It can be omitted if Eigen 3 (or greater)
is available and `CGAL_EIGEN3_ENABLED` is defined then an overload is available and `CGAL_EIGEN3_ENABLED` is defined. In that case,
using `Eigen_diagonalize_traits` is provided. Otherwise, the an overload using `Eigen_diagonalize_traits` is provided.
internal implementation `Diagonalize_traits` is used.
\param input point range. \param input point range.
\param point_map property map to access the input points. \param point_map property map to access the input points.

View File

@ -87,10 +87,8 @@ namespace Classification {
is linked with TBB) or `Sequential_tag` (default value otherwise). is linked with TBB) or `Sequential_tag` (default value otherwise).
\tparam DiagonalizeTraits model of `DiagonalizeTraits` used for \tparam DiagonalizeTraits model of `DiagonalizeTraits` used for
matrix diagonalization. It can be omitted: if Eigen 3 (or greater) matrix diagonalization. It can be omitted: if Eigen 3 (or greater)
is available and `CGAL_EIGEN3_ENABLED` is defined then an overload is available and `CGAL_EIGEN3_ENABLED` is defined: in that case, an
using `Eigen_diagonalize_traits` is provided. Otherwise, the overload using `Eigen_diagonalize_traits` is provided.
internal implementation `Diagonalize_traits` is used.
*/ */
template <typename GeomTraits, template <typename GeomTraits,
typename PointRange, typename PointRange,

View File

@ -30,7 +30,6 @@
#include <CGAL/Search_traits_3.h> #include <CGAL/Search_traits_3.h>
#include <CGAL/Fuzzy_sphere.h> #include <CGAL/Fuzzy_sphere.h>
#include <CGAL/Orthogonal_k_neighbor_search.h> #include <CGAL/Orthogonal_k_neighbor_search.h>
#include <CGAL/Default_diagonalize_traits.h>
#include <CGAL/centroid.h> #include <CGAL/centroid.h>
#include <CGAL/grid_simplify_point_set.h> #include <CGAL/grid_simplify_point_set.h>
#include <CGAL/squared_distance_3.h> #include <CGAL/squared_distance_3.h>

View File

@ -29,6 +29,7 @@ algebra algorithm required by the fitting method. The scalar type, `SvdTraits::
\sa `Eigen_svd` \sa `Eigen_svd`
\sa `Monge_form` \sa `Monge_form`
\note This class requires the \ref thirdpartyEigen library.
*/ */
template< typename DataKernel, typename LocalKernel, typename SvdTraits > template< typename DataKernel, typename LocalKernel, typename SvdTraits >
class Monge_via_jet_fitting { class Monge_via_jet_fitting {

View File

@ -100,6 +100,7 @@ lloyd_optimize_mesh_3(c3t3,
\sa `CGAL::perturb_mesh_3()` \sa `CGAL::perturb_mesh_3()`
\sa `CGAL::odt_optimize_mesh_3()` \sa `CGAL::odt_optimize_mesh_3()`
\note This function requires the \ref thirdpartyEigen library.
*/ */
template<typename C3T3, typename MeshDomain_3> template<typename C3T3, typename MeshDomain_3>

View File

@ -49,7 +49,7 @@ No default value.
\cgalNPBegin{diagonalize_traits} \anchor PSP_diagonalize_traits \cgalNPBegin{diagonalize_traits} \anchor PSP_diagonalize_traits
is the solver used for diagonalizing covariance matrices.\n is the solver used for diagonalizing covariance matrices.\n
\b Type: a class model of `DiagonalizeTraits`.\n \b Type: a class model of `DiagonalizeTraits`.\n
\b Default: if \ref thirdpartyEigen "Eigen" 3.2 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined, then `CGAL::Eigen_diagonalize_traits` is used. Otherwise, the fallback `CGAL::Diagonalize_traits` is used (note that it is significantly slower, so using Eigen is strongly advised).\n \b Default: `CGAL::Eigen_diagonalize_traits` if \ref thirdpartyEigen "Eigen" 3.2 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined.\n
\cgalNPEnd \cgalNPEnd
\cgalNPBegin{svd_traits} \anchor PSP_svd_traits \cgalNPBegin{svd_traits} \anchor PSP_svd_traits

View File

@ -13,7 +13,7 @@ The tag `tag` identifies the dimension to be considered from the objects. For po
The class `K` is the kernel in which the value type of the `InputIterator` is defined. It can be omitted and deduced automatically from the value type. The class `K` is the kernel in which the value type of the `InputIterator` is defined. It can be omitted and deduced automatically from the value type.
The class `DiagonalizeTraits_` is a model of `DiagonalizeTraits`. It can be omitted: if Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined then an overload using `Eigen_diagonalize_traits` is provided. Otherwise, the internal implementation `Diagonalize_traits` is used. The class `DiagonalizeTraits_` is a model of `DiagonalizeTraits`. It can be omitted if Eigen 3 (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined: in that case, an overload using `Eigen_diagonalize_traits` is provided.
\cgalHeading{Requirements} \cgalHeading{Requirements}

View File

@ -65,10 +65,9 @@ value type of `InputIterator` is defined. It can be omitted and deduced
automatically from the value type. automatically from the value type.
The class `DiagonalizeTraits_` is a model of `DiagonalizeTraits`. It The class `DiagonalizeTraits_` is a model of `DiagonalizeTraits`. It
can be omitted: if Eigen 3 (or greater) is available and can be omitted if Eigen 3 (or greater) is available and
`CGAL_EIGEN3_ENABLED` is defined then an overload using `CGAL_EIGEN3_ENABLED` is defined: in that case, an overload using
`Eigen_diagonalize_traits` is provided. Otherwise, the internal `Eigen_diagonalize_traits` is provided.
implementation `Diagonalize_traits` is used.
\note This function is significantly faster when using \note This function is significantly faster when using
`Eigen_diagonalize_traits` and it is strongly advised to use this `Eigen_diagonalize_traits` and it is strongly advised to use this

View File

@ -61,11 +61,10 @@ namespace Scale_space_reconstruction_3
* \tparam DiagonalizeTraits model of `DiagonalizeTraits` that * \tparam DiagonalizeTraits model of `DiagonalizeTraits` that
* determines how to diagonalize a weighted covariance matrix to * determines how to diagonalize a weighted covariance matrix to
* approximate a weighted point set. It can be omitted: if Eigen 3 * approximate a weighted point set. It can be omitted if Eigen 3 (or
* (or greater) is available and `CGAL_EIGEN3_ENABLED` is defined * greater) is available and `CGAL_EIGEN3_ENABLED` is defined: in
* then an overload using `Eigen_diagonalize_traits` is * that case, an overload using `Eigen_diagonalize_traits` is
* provided. Otherwise, the internal implementation * provided.
* `Diagonalize_traits` is used.
* \tparam ConcurrencyTag indicates whether to use concurrent * \tparam ConcurrencyTag indicates whether to use concurrent
* processing. It can be omitted: if TBB (or greater) is available * processing. It can be omitted: if TBB (or greater) is available
* and `CGAL_LINKED_WITH_TBB` is defined then `Parallel_tag` is * and `CGAL_LINKED_WITH_TBB` is defined then `Parallel_tag` is

View File

@ -17,8 +17,6 @@ follows:
\tparam FT Number type \tparam FT Number type
\tparam dim Dimension of the matrices and vectors \tparam dim Dimension of the matrices and vectors
\cgalHasModel `CGAL::Default_diagonalize_traits`
\cgalHasModel `CGAL::Diagonalize_traits`
\cgalHasModel `CGAL::Eigen_diagonalize_traits` \cgalHasModel `CGAL::Eigen_diagonalize_traits`
*/ */

View File

@ -26,23 +26,12 @@ Library (MKL)</a>.
The concept `DiagonalizeTraits<T,dim>` defines an interface for the The concept `DiagonalizeTraits<T,dim>` defines an interface for the
diagonalization and computation of eigenvectors and eigenvalues of a diagonalization and computation of eigenvectors and eigenvalues of a
symmetric matrix. `T` is the number type and `dim` is the dimension of symmetric matrix. `T` is the number type and `dim` is the dimension of
the matrices and vector (set to 3 by default). We provide two models the matrices and vector (set to 3 by default). We provide the model
for this concept: `Eigen_diagonalize_traits<T,dim>` that uses the \ref thirdpartyEigen library.
- `Eigen_diagonalize_traits<T,dim>` uses the \ref thirdpartyEigen library.
- `Diagonalize_traits<T,dim>` is an internal implementation that does not
depend on another library.
Although both models achieve the same computation,
`Eigen_diagonalize_traits<T,dim>` is more precise and faster: it
should thus be used if the \ref thirdpartyEigen library is
available. The eigenvalues are stored in ascending order and
eigenvectors are stored in accordance.
This is an example of an eigen decomposition of a matrix using this This is an example of an eigen decomposition of a matrix using this
class: class:
\cgalExample{Solver_interface/diagonalize_matrix.cpp} \cgalExample{Solver_interface/diagonalize_matrix.cpp}

View File

@ -26,6 +26,8 @@
#include <CGAL/Diagonalize_traits.h> #include <CGAL/Diagonalize_traits.h>
#endif #endif
/// \cond SKIP_IN_MANUAL
namespace CGAL { namespace CGAL {
/// \ingroup PkgSolver /// \ingroup PkgSolver
@ -84,4 +86,6 @@ public:
} // namespace CGAL } // namespace CGAL
/// \endcond
#endif // CGAL_DEFAULT_DIAGONALIZE_TRAITS_H #endif // CGAL_DEFAULT_DIAGONALIZE_TRAITS_H

View File

@ -30,6 +30,8 @@
CGAL_DEPRECATED_MSG("CGAL::Diagonalize_traits is a deprecated class that can \ CGAL_DEPRECATED_MSG("CGAL::Diagonalize_traits is a deprecated class that can \
lead to precision issues, please use CGAL::Eigen_diagonalize_traits") lead to precision issues, please use CGAL::Eigen_diagonalize_traits")
/// \cond SKIP_IN_MANUAL
namespace CGAL { namespace CGAL {
/// \ingroup PkgSolver /// \ingroup PkgSolver
@ -299,4 +301,6 @@ public:
} // namespace CGAL } // namespace CGAL
/// \endcond
#endif // CGAL_DIAGONALIZE_TRAITS_H #endif // CGAL_DIAGONALIZE_TRAITS_H