cart-elc

Source code for CART-ELC
git clone git://git.laack.co/cart-elc.git
Log | Files | Refs | README | LICENSE

MathFunctions.h (2323B)


      1 // This file is part of Eigen, a lightweight C++ template library
      2 // for linear algebra.
      3 //
      4 // Copyright (C) 2007 Julien Pommier
      5 // Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
      6 // Copyright (C) 2016 Konstantinos Margaritis <markos@freevec.org>
      7 //
      8 // This Source Code Form is subject to the terms of the Mozilla
      9 // Public License v. 2.0. If a copy of the MPL was not distributed
     10 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
     11 
     12 #ifndef EIGEN_MATH_FUNCTIONS_ALTIVEC_H
     13 #define EIGEN_MATH_FUNCTIONS_ALTIVEC_H
     14 
     15 namespace Eigen {
     16 
     17 namespace internal {
     18 
     19 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     20 Packet4f plog<Packet4f>(const Packet4f& _x)
     21 {
     22   return plog_float(_x);
     23 }
     24 
     25 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     26 Packet4f pexp<Packet4f>(const Packet4f& _x)
     27 {
     28   return pexp_float(_x);
     29 }
     30 
     31 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     32 Packet4f psin<Packet4f>(const Packet4f& _x)
     33 {
     34   return psin_float(_x);
     35 }
     36 
     37 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     38 Packet4f pcos<Packet4f>(const Packet4f& _x)
     39 {
     40   return pcos_float(_x);
     41 }
     42 
     43 #ifndef EIGEN_COMP_CLANG
     44 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     45 Packet4f prsqrt<Packet4f>(const Packet4f& x)
     46 {
     47   return  vec_rsqrt(x);
     48 }
     49 #endif
     50 
     51 #ifdef __VSX__
     52 #ifndef EIGEN_COMP_CLANG
     53 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     54 Packet2d prsqrt<Packet2d>(const Packet2d& x)
     55 {
     56   return  vec_rsqrt(x);
     57 }
     58 #endif
     59 
     60 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     61 Packet4f psqrt<Packet4f>(const Packet4f& x)
     62 {
     63   return  vec_sqrt(x);
     64 }
     65 
     66 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     67 Packet2d psqrt<Packet2d>(const Packet2d& x)
     68 {
     69   return  vec_sqrt(x);
     70 }
     71 
     72 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
     73 Packet2d pexp<Packet2d>(const Packet2d& _x)
     74 {
     75   return pexp_double(_x);
     76 }
     77 #endif
     78 
     79 // Hyperbolic Tangent function.
     80 template <>
     81 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet4f
     82 ptanh<Packet4f>(const Packet4f& x) {
     83   return internal::generic_fast_tanh_float(x);
     84 }
     85 
     86 }  // end namespace internal
     87 
     88 }  // end namespace Eigen
     89 
     90 #endif  // EIGEN_MATH_FUNCTIONS_ALTIVEC_H