Mercurial > hg > segmenter-vamp-plugin
annotate armadillo-3.900.4/include/armadillo_bits/fn_trunc_log.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 //! \addtogroup fn_trunc_log |
Chris@49 | 10 //! @{ |
Chris@49 | 11 |
Chris@49 | 12 |
Chris@49 | 13 |
Chris@49 | 14 template<typename eT> |
Chris@49 | 15 inline |
Chris@49 | 16 static |
Chris@49 | 17 typename arma_real_only<eT>::result |
Chris@49 | 18 trunc_log(const eT x) |
Chris@49 | 19 { |
Chris@49 | 20 if(std::numeric_limits<eT>::is_iec559) |
Chris@49 | 21 { |
Chris@49 | 22 if(x == std::numeric_limits<eT>::infinity()) |
Chris@49 | 23 { |
Chris@49 | 24 return Math<eT>::log_max(); |
Chris@49 | 25 } |
Chris@49 | 26 else |
Chris@49 | 27 { |
Chris@49 | 28 return (x <= eT(0)) ? Math<eT>::log_min() : std::log(x); |
Chris@49 | 29 } |
Chris@49 | 30 } |
Chris@49 | 31 else |
Chris@49 | 32 { |
Chris@49 | 33 return std::log(x); |
Chris@49 | 34 } |
Chris@49 | 35 } |
Chris@49 | 36 |
Chris@49 | 37 |
Chris@49 | 38 |
Chris@49 | 39 template<typename eT> |
Chris@49 | 40 inline |
Chris@49 | 41 static |
Chris@49 | 42 typename arma_integral_only<eT>::result |
Chris@49 | 43 trunc_log(const eT x) |
Chris@49 | 44 { |
Chris@49 | 45 return eT( trunc_log( double(x) ) ); |
Chris@49 | 46 } |
Chris@49 | 47 |
Chris@49 | 48 |
Chris@49 | 49 |
Chris@49 | 50 template<typename T> |
Chris@49 | 51 inline |
Chris@49 | 52 static |
Chris@49 | 53 std::complex<T> |
Chris@49 | 54 trunc_log(const std::complex<T>& x) |
Chris@49 | 55 { |
Chris@49 | 56 return std::complex<T>( trunc_log( std::abs(x) ), std::arg(x) ); |
Chris@49 | 57 } |
Chris@49 | 58 |
Chris@49 | 59 |
Chris@49 | 60 |
Chris@49 | 61 template<typename T1> |
Chris@49 | 62 arma_inline |
Chris@49 | 63 const eOp<T1, eop_trunc_log> |
Chris@49 | 64 trunc_log(const Base<typename T1::elem_type,T1>& A) |
Chris@49 | 65 { |
Chris@49 | 66 arma_extra_debug_sigprint(); |
Chris@49 | 67 |
Chris@49 | 68 return eOp<T1, eop_trunc_log>(A.get_ref()); |
Chris@49 | 69 } |
Chris@49 | 70 |
Chris@49 | 71 |
Chris@49 | 72 |
Chris@49 | 73 template<typename T1> |
Chris@49 | 74 arma_inline |
Chris@49 | 75 const eOpCube<T1, eop_trunc_log> |
Chris@49 | 76 trunc_log(const BaseCube<typename T1::elem_type,T1>& A) |
Chris@49 | 77 { |
Chris@49 | 78 arma_extra_debug_sigprint(); |
Chris@49 | 79 |
Chris@49 | 80 return eOpCube<T1, eop_trunc_log>(A.get_ref()); |
Chris@49 | 81 } |
Chris@49 | 82 |
Chris@49 | 83 |
Chris@49 | 84 |
Chris@49 | 85 //! @} |