Chris@49: // Copyright (C) 2008-2010 NICTA (www.nicta.com.au) Chris@49: // Copyright (C) 2008-2012 Conrad Sanderson Chris@49: // Chris@49: // This Source Code Form is subject to the terms of the Mozilla Public Chris@49: // License, v. 2.0. If a copy of the MPL was not distributed with this Chris@49: // file, You can obtain one at http://mozilla.org/MPL/2.0/. Chris@49: Chris@49: Chris@49: Chris@49: //! \addtogroup fn_trunc_exp Chris@49: //! @{ Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: static Chris@49: typename arma_real_only::result Chris@49: trunc_exp(const eT x) Chris@49: { Chris@49: if(std::numeric_limits::is_iec559 && (x >= Math::log_max() )) Chris@49: { Chris@49: return std::numeric_limits::max(); Chris@49: } Chris@49: else Chris@49: { Chris@49: return std::exp(x); Chris@49: } Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: static Chris@49: typename arma_integral_only::result Chris@49: trunc_exp(const eT x) Chris@49: { Chris@49: return eT( trunc_exp( double(x) ) ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: inline Chris@49: static Chris@49: std::complex Chris@49: trunc_exp(const std::complex& x) Chris@49: { Chris@49: return std::polar( trunc_exp( x.real() ), x.imag() ); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: const eOp Chris@49: trunc_exp(const Base& A) Chris@49: { Chris@49: arma_extra_debug_sigprint(); Chris@49: Chris@49: return eOp(A.get_ref()); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: arma_inline Chris@49: const eOpCube Chris@49: trunc_exp(const BaseCube& A) Chris@49: { Chris@49: arma_extra_debug_sigprint(); Chris@49: Chris@49: return eOpCube(A.get_ref()); Chris@49: } Chris@49: Chris@49: Chris@49: Chris@49: //! @}