Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-20 09:04:52

0001 // This file is part of Eigen, a lightweight C++ template library
0002 // for linear algebra.
0003 //
0004 // Copyright (C) 2007 Julien Pommier
0005 // Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
0006 // Copyright (C) 2016 Konstantinos Margaritis <markos@freevec.org>
0007 //
0008 // This Source Code Form is subject to the terms of the Mozilla
0009 // Public License v. 2.0. If a copy of the MPL was not distributed
0010 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
0011 
0012 #ifndef EIGEN_MATH_FUNCTIONS_ALTIVEC_H
0013 #define EIGEN_MATH_FUNCTIONS_ALTIVEC_H
0014 
0015 namespace RivetEigen {
0016 
0017 namespace internal {
0018 
0019 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0020 Packet4f plog<Packet4f>(const Packet4f& _x)
0021 {
0022   return plog_float(_x);
0023 }
0024 
0025 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0026 Packet4f pexp<Packet4f>(const Packet4f& _x)
0027 {
0028   return pexp_float(_x);
0029 }
0030 
0031 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0032 Packet4f psin<Packet4f>(const Packet4f& _x)
0033 {
0034   return psin_float(_x);
0035 }
0036 
0037 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0038 Packet4f pcos<Packet4f>(const Packet4f& _x)
0039 {
0040   return pcos_float(_x);
0041 }
0042 
0043 #ifndef EIGEN_COMP_CLANG
0044 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0045 Packet4f prsqrt<Packet4f>(const Packet4f& x)
0046 {
0047   return  vec_rsqrt(x);
0048 }
0049 #endif
0050 
0051 #ifdef __VSX__
0052 #ifndef EIGEN_COMP_CLANG
0053 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0054 Packet2d prsqrt<Packet2d>(const Packet2d& x)
0055 {
0056   return  vec_rsqrt(x);
0057 }
0058 #endif
0059 
0060 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0061 Packet4f psqrt<Packet4f>(const Packet4f& x)
0062 {
0063   return  vec_sqrt(x);
0064 }
0065 
0066 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0067 Packet2d psqrt<Packet2d>(const Packet2d& x)
0068 {
0069   return  vec_sqrt(x);
0070 }
0071 
0072 template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED
0073 Packet2d pexp<Packet2d>(const Packet2d& _x)
0074 {
0075   return pexp_double(_x);
0076 }
0077 #endif
0078 
0079 // Hyperbolic Tangent function.
0080 template <>
0081 EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS EIGEN_UNUSED Packet4f
0082 ptanh<Packet4f>(const Packet4f& x) {
0083   return internal::generic_fast_tanh_float(x);
0084 }
0085 
0086 }  // end namespace internal
0087 
0088 }  // end namespace RivetEigen
0089 
0090 #endif  // EIGEN_MATH_FUNCTIONS_ALTIVEC_H