diff --git a/Documentation/doc/Documentation/Installation.txt b/Documentation/doc/Documentation/Installation.txt
index 9864272873d..5f1f1cee0d1 100644
--- a/Documentation/doc/Documentation/Installation.txt
+++ b/Documentation/doc/Documentation/Installation.txt
@@ -508,6 +508,15 @@ and the \ref PkgRidges_3 packages.
The \sc{Eigen} web site is `http://eigen.tuxfamily.org`.
+\subsection thirdpartyLapack Lapack
+
+\sc{Lapack} is a `Fortran` library for linear algebra.
+
+In \cgal, \sc{Lapack} is an alternative to \sc{Eigen} for singular value decomposition for the \ref
+kgJet_fitting_3 and the \ref PkgRidges_3 packages.
+
+The \sc{Lapack} web site is `http://www.netlib.org/lapack/`.
+
\subsection thirdpartylibQGLViewer libQGLViewer
libQGLViewer is a 3D widget based on \sc{Qt} 4's `QGLWidget`. In case of \sc{Qt}5 used, libQGLViewer needs to be recompiled with the proper \sc{Qt}5 version.
diff --git a/Solver_interface/doc/Solver_interface/Solver_interface.txt b/Solver_interface/doc/Solver_interface/Solver_interface.txt
index 2ba533d96a0..4a64a994551 100644
--- a/Solver_interface/doc/Solver_interface/Solver_interface.txt
+++ b/Solver_interface/doc/Solver_interface/Solver_interface.txt
@@ -42,15 +42,15 @@ class:
The concept `SvdTraits` defines an interface for solving in the least
square sense a linear system with a singular value decomposition. The
-field type is `double`.
+field type is `double`. We provide two models for this concept:
-The class `Eigen_svd` provides an implementation of `SvdTraits` using
-the \ref thirdpartyEigen library.
+- `Eigen_svd` uses the \ref thirdpartyEigen library.
+- `Lapack_svd` uses the \ref thirdpartyLapack library.
Here is a simple example that shows how to handle matrices, vectors
and this solver:
-\cgalExample{Solver_interface/eigen_singular_value_decomposition.cpp}
+\cgalExample{Solver_interface/singular_value_decomposition.cpp}
diff --git a/Solver_interface/doc/Solver_interface/examples.txt b/Solver_interface/doc/Solver_interface/examples.txt
index fb6339dba64..773c9ebbcd9 100644
--- a/Solver_interface/doc/Solver_interface/examples.txt
+++ b/Solver_interface/doc/Solver_interface/examples.txt
@@ -1,5 +1,5 @@
/*!
\example Solver_interface/diagonalize_matrix.cpp
-\example Solver_interface/eigen_singular_value_decomposition.cpp
+\example Solver_interface/singular_value_decomposition.cpp
\example Solver_interface/eigen_sparse_solvers.cpp
*/
diff --git a/Solver_interface/examples/Solver_interface/CMakeLists.txt b/Solver_interface/examples/Solver_interface/CMakeLists.txt
index f76d7de6140..90334b642c9 100644
--- a/Solver_interface/examples/Solver_interface/CMakeLists.txt
+++ b/Solver_interface/examples/Solver_interface/CMakeLists.txt
@@ -24,7 +24,7 @@ if ( CGAL_FOUND )
include_directories (BEFORE "../include")
- create_single_source_cgal_program( "eigen_singular_value_decomposition.cpp" )
+ create_single_source_cgal_program( "singular_value_decomposition.cpp" )
create_single_source_cgal_program( "diagonalize_matrix.cpp" )
create_single_source_cgal_program( "eigen_sparse_solvers.cpp" )
diff --git a/Solver_interface/examples/Solver_interface/eigen_singular_value_decomposition.cpp b/Solver_interface/examples/Solver_interface/singular_value_decomposition.cpp
similarity index 67%
rename from Solver_interface/examples/Solver_interface/eigen_singular_value_decomposition.cpp
rename to Solver_interface/examples/Solver_interface/singular_value_decomposition.cpp
index 439587d59dc..22d829f6f2b 100644
--- a/Solver_interface/examples/Solver_interface/eigen_singular_value_decomposition.cpp
+++ b/Solver_interface/examples/Solver_interface/singular_value_decomposition.cpp
@@ -1,11 +1,20 @@
#include
+
+#ifdef CGAL_EIGEN3_ENABLED
#include
#include
#include
+typedef CGAL::Eigen_svd Svd;
+#else
+#ifdef CGAL_LAPACK_ENABLED
+#include
+typedef CGAL::Lapack_svd Svd;
+#endif
+#endif
-typedef CGAL::Eigen_svd::FT FT;
-typedef CGAL::Eigen_svd::Vector Eigen_vector;
-typedef CGAL::Eigen_svd::Matrix Eigen_matrix;
+typedef Svd::FT FT;
+typedef Svd::Vector Eigen_vector;
+typedef Svd::Matrix Eigen_matrix;
int main(void)
{
@@ -14,7 +23,6 @@ int main(void)
Eigen_vector B (degree);
Eigen_matrix M (degree, degree);
-
// Fill B and M with random numbers
for (std::size_t i = 0; i < degree; ++ i)
{
@@ -24,7 +32,7 @@ int main(void)
}
// Solve MX=B
- std::cout << CGAL::Eigen_svd::solve(M, B) << std::endl;
+ std::cout << Svd::solve(M, B) << std::endl;
// Print result
std::cout << "Solution of SVD = [ ";
diff --git a/Jet_fitting_3/include/CGAL/Lapack/Linear_algebra_lapack.h b/Solver_interface/include/CGAL/Lapack_svd.h
similarity index 100%
rename from Jet_fitting_3/include/CGAL/Lapack/Linear_algebra_lapack.h
rename to Solver_interface/include/CGAL/Lapack_svd.h