// 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_ARPACKSUPPORT_MODULE_H
#define EIGEN_ARPACKSUPPORT_MODULE_H

#include "../../Eigen/Core"

/** \defgroup ArpackSupport_Module Arpack support module
 *
 * This module provides a wrapper to Arpack, a library for sparse eigenvalue decomposition.
 *
 * \code
 * #include <unsupported/Eigen/ArpackSupport>
 * \endcode
 */

#include "../../Eigen/SparseCholesky"

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

// IWYU pragma: begin_exports
#include "src/ArpackSupport/ArpackSelfAdjointEigenSolver.h"
// IWYU pragma: end_exports

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

#endif  // EIGEN_ARPACKSUPPORT_MODULE_H
