eigen/unsupported/Eigen/SpecialFunctions
Michael Figurnov f216854453 Exponentially scaled modified Bessel functions of order zero and one.
The functions are conventionally called i0e and i1e. The exponentially scaled version is more numerically stable. The standard Bessel functions can be obtained as i0(x) = exp(|x|) i0e(x)

The code is ported from Cephes and tested against SciPy.
2018-05-31 15:34:53 +01:00

66 lines
1.6 KiB
Plaintext

// This file is part of Eigen, a lightweight C++ template library
// for linear algebra.
//
// Copyright (C) 2016 Gael Guennebaud <g.gael@free.fr>
//
// 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_SPECIALFUNCTIONS_MODULE
#define EIGEN_SPECIALFUNCTIONS_MODULE
#include <math.h>
#include "../../Eigen/Core"
#include "../../Eigen/src/Core/util/DisableStupidWarnings.h"
namespace Eigen {
/**
* \defgroup SpecialFunctions_Module Special math functions module
*
* This module features additional coefficient-wise math functions available
* within the numext:: namespace for the scalar version, and as method and/or free
* functions of Array. Those include:
*
* - erf
* - erfc
* - lgamma
* - igamma
* - igammac
* - digamma
* - polygamma
* - zeta
* - betainc
* - i0e
* - i1e
*
* \code
* #include <unsupported/Eigen/SpecialFunctions>
* \endcode
*/
//@{
}
#include "src/SpecialFunctions/SpecialFunctionsImpl.h"
#include "src/SpecialFunctions/SpecialFunctionsPacketMath.h"
#include "src/SpecialFunctions/SpecialFunctionsHalf.h"
#include "src/SpecialFunctions/SpecialFunctionsFunctors.h"
#include "src/SpecialFunctions/SpecialFunctionsArrayAPI.h"
#if defined EIGEN_VECTORIZE_CUDA
#include "src/SpecialFunctions/arch/CUDA/CudaSpecialFunctions.h"
#endif
namespace Eigen {
//@}
}
#include "../../Eigen/src/Core/util/ReenableStupidWarnings.h"
#endif // EIGEN_SPECIALFUNCTIONS_MODULE