// 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/.

#ifndef EIGEN_ACCELERATESUPPORT_MODULE_H
#define EIGEN_ACCELERATESUPPORT_MODULE_H

#include "SparseCore"

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

/** \ingroup Support_modules
  * \defgroup AccelerateSupport_Module AccelerateSupport module
  *
  * This module provides an interface to the Apple Accelerate library.
  * It provides the seven following main factorization classes:
  * - class AccelerateLLT: a Cholesky (LL^T) factorization.
  * - class AccelerateLDLT: the default LDL^T factorization.
  * - class AccelerateLDLTUnpivoted: a Cholesky-like LDL^T factorization with only 1x1 pivots and no pivoting
  * - class AccelerateLDLTSBK: an LDL^T factorization with Supernode Bunch-Kaufman and static pivoting
  * - class AccelerateLDLTTPP: an LDL^T factorization with full threshold partial pivoting
  * - class AccelerateQR: a QR factorization
  * - class AccelerateCholeskyAtA: a QR factorization without storing Q (equivalent to A^TA = R^T R)
  *
  * \code
  * #include <Eigen/AccelerateSupport>
  * \endcode
  *
  * In order to use this module, the Accelerate headers must be accessible from
  * the include paths, and your binary must be linked to the Accelerate framework.
  * The Accelerate library is only available on Apple hardware.
  * 
  * Note that many of the algorithms require additional information about your
  * matrices. This can be provided by setting the UpLo template argument when
  * defining the factorization class. For example, the following creates an
  * LDLT factorization where your matrix is symmetric and uses the lower
  * triangle:
  * 
  * \code
  * AccelerateLDLT<SparseMatrix<float>, Lower | Symmetric> ldlt;
  * \endcode
  * 
  * Failure to do so may result in your application crashing.
  */

#include "src/AccelerateSupport/AccelerateSupport.h"

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

#endif // EIGEN_ACCELERATESUPPORT_MODULE_H
