// This file is part of Eigen, a lightweight C++ template library
// for linear algebra.
//
// This Source Code Form is subject to the terms of the Mozilla
// Public License v. 2.0. If a copy of the MPL was not distributed
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// SPDX-FileCopyrightText: The Eigen Authors
// SPDX-License-Identifier: MPL-2.0

#ifndef EIGEN_CHOLESKY_MODULE_H
#define EIGEN_CHOLESKY_MODULE_H

#include "Core"
#include "Jacobi"

#include "src/Core/util/DisableStupidWarnings.h"

/** \defgroup Cholesky_Module Cholesky module
 *
 * This module provides three variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
 * LLT and LDLT are restricted to (semi)definite matrices, while the Bunch-Kaufman factorization handles
 * general symmetric / Hermitian indefinite matrices. Those decompositions are also accessible via the
 * following methods:
 *  - MatrixBase::llt()
 *  - MatrixBase::ldlt()
 *  - MatrixBase::bunchKaufman()
 *  - SelfAdjointView::llt()
 *  - SelfAdjointView::ldlt()
 *  - SelfAdjointView::bunchKaufman()
 *
 * \code
 * #include <Eigen/Cholesky>
 * \endcode
 */

// IWYU pragma: begin_exports
#include "src/Cholesky/LLT.h"
#include "src/Cholesky/LDLT.h"
#include "src/Cholesky/BunchKaufman.h"
#ifdef EIGEN_USE_LAPACKE
#include "src/misc/lapacke_helpers.h"
#include "src/Cholesky/LLT_LAPACKE.h"
#endif
// IWYU pragma: end_exports

#include "src/Core/util/ReenableStupidWarnings.h"

#endif  // EIGEN_CHOLESKY_MODULE_H
