annotate armadillo-3.900.4/include/armadillo_bits/fn_trunc_exp.hpp @ 84:55a047986812 tip

Update library URI so as not to be document-local
author Chris Cannam
date Wed, 22 Apr 2020 14:21:57 +0100
parents 1ec0e2823891
children
rev   line source
Chris@49 1 // Copyright (C) 2008-2010 NICTA (www.nicta.com.au)
Chris@49 2 // Copyright (C) 2008-2012 Conrad Sanderson
Chris@49 3 //
Chris@49 4 // This Source Code Form is subject to the terms of the Mozilla Public
Chris@49 5 // License, v. 2.0. If a copy of the MPL was not distributed with this
Chris@49 6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
Chris@49 7
Chris@49 8
Chris@49 9
Chris@49 10 //! \addtogroup fn_trunc_exp
Chris@49 11 //! @{
Chris@49 12
Chris@49 13
Chris@49 14
Chris@49 15 template<typename eT>
Chris@49 16 inline
Chris@49 17 static
Chris@49 18 typename arma_real_only<eT>::result
Chris@49 19 trunc_exp(const eT x)
Chris@49 20 {
Chris@49 21 if(std::numeric_limits<eT>::is_iec559 && (x >= Math<eT>::log_max() ))
Chris@49 22 {
Chris@49 23 return std::numeric_limits<eT>::max();
Chris@49 24 }
Chris@49 25 else
Chris@49 26 {
Chris@49 27 return std::exp(x);
Chris@49 28 }
Chris@49 29 }
Chris@49 30
Chris@49 31
Chris@49 32
Chris@49 33 template<typename eT>
Chris@49 34 inline
Chris@49 35 static
Chris@49 36 typename arma_integral_only<eT>::result
Chris@49 37 trunc_exp(const eT x)
Chris@49 38 {
Chris@49 39 return eT( trunc_exp( double(x) ) );
Chris@49 40 }
Chris@49 41
Chris@49 42
Chris@49 43
Chris@49 44 template<typename T>
Chris@49 45 inline
Chris@49 46 static
Chris@49 47 std::complex<T>
Chris@49 48 trunc_exp(const std::complex<T>& x)
Chris@49 49 {
Chris@49 50 return std::polar( trunc_exp( x.real() ), x.imag() );
Chris@49 51 }
Chris@49 52
Chris@49 53
Chris@49 54
Chris@49 55 template<typename T1>
Chris@49 56 arma_inline
Chris@49 57 const eOp<T1, eop_trunc_exp>
Chris@49 58 trunc_exp(const Base<typename T1::elem_type,T1>& A)
Chris@49 59 {
Chris@49 60 arma_extra_debug_sigprint();
Chris@49 61
Chris@49 62 return eOp<T1, eop_trunc_exp>(A.get_ref());
Chris@49 63 }
Chris@49 64
Chris@49 65
Chris@49 66
Chris@49 67 template<typename T1>
Chris@49 68 arma_inline
Chris@49 69 const eOpCube<T1, eop_trunc_exp>
Chris@49 70 trunc_exp(const BaseCube<typename T1::elem_type,T1>& A)
Chris@49 71 {
Chris@49 72 arma_extra_debug_sigprint();
Chris@49 73
Chris@49 74 return eOpCube<T1, eop_trunc_exp>(A.get_ref());
Chris@49 75 }
Chris@49 76
Chris@49 77
Chris@49 78
Chris@49 79 //! @}