ShLibTrigImpl.hpp

00001 // Sh: A GPU metaprogramming language.
00002 //
00003 // Copyright 2003-2005 Serious Hack Inc.
00004 // 
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public
00007 // License as published by the Free Software Foundation; either
00008 // version 2.1 of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free Software
00017 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
00018 // MA  02110-1301, USA
00020 #ifndef SHLIBTRIGIMPL_HPP
00021 #define SHLIBTRIGIMPL_HPP
00022 
00023 #include "ShLibTrig.hpp"
00024 #include "ShAttrib.hpp"
00025 #include "ShInstructions.hpp"
00026 
00027 namespace SH {
00028 
00029 template<int N, typename T>
00030 ShGeneric<N, T> acos(const ShGeneric<N, T>& var)
00031 {
00032   ShAttrib<N, SH_TEMP, T> t;
00033   shACOS(t, var);
00034   return t;
00035 }
00036 
00037 template<int N, typename T>
00038 ShGeneric<N, T> asin(const ShGeneric<N, T>& var)
00039 {
00040   ShAttrib<N, SH_TEMP, T> t;
00041   shASIN(t, var);
00042   return t;
00043 }
00044 
00045 template<int N, typename T>
00046 ShGeneric<N, T> atan(const ShGeneric<N, T>& var)
00047 {
00048   ShAttrib<N, SH_TEMP, T> t;
00049   shATAN(t, var);
00050   return t;
00051 }
00052 
00053 template<int N, typename T>
00054 ShGeneric<N, T> atan2(const ShGeneric<N, T>& y, const ShGeneric<N, T>& x)
00055 {
00056   ShAttrib<N, SH_TEMP, T> t;
00057   shATAN2(t, y, x);
00058   return t;
00059 }
00060 
00061 template<int N, typename T>
00062 ShGeneric<N, T> cos(const ShGeneric<N, T>& var)
00063 {
00064   ShAttrib<N, SH_TEMP, T> t;
00065   shCOS(t, var);
00066   return t;
00067 }
00068 
00069 template<int N, typename T>
00070 ShGeneric<N, T> sin(const ShGeneric<N, T>& var)
00071 {
00072   ShAttrib<N, SH_TEMP, T> t;
00073   shSIN(t, var);
00074   return t;
00075 }
00076 
00077 template<int N, typename T>
00078 ShGeneric<N, T> tan(const ShGeneric<N, T>& var)
00079 {
00080   ShAttrib<N, SH_TEMP, T> t;
00081   shTAN(t, var);
00082   return t;
00083 }
00084 
00085 template<int N, typename T>
00086 ShGeneric<N, T> cosh(const ShGeneric<N, T>& var)
00087 {
00088   ShAttrib<N, SH_TEMP, T> t;
00089   shCOSH(t, var);
00090   return t;
00091 }
00092 
00093 template<int N, typename T>
00094 ShGeneric<N, T> sinh(const ShGeneric<N, T>& var)
00095 {
00096   ShAttrib<N, SH_TEMP, T> t;
00097   shSINH(t, var);
00098   return t;
00099 }
00100 
00101 template<int N, typename T>
00102 ShGeneric<N, T> tanh(const ShGeneric<N, T>& var)
00103 {
00104   ShAttrib<N, SH_TEMP, T> t;
00105   shTANH(t, var);
00106   return t;
00107 }
00108 
00109 template<int N, typename T>
00110 ShGeneric<N, T> acosh(const ShGeneric<N, T>& var)
00111 {
00112   ShAttrib<N, SH_TEMP, T> t;
00113   shACOSH(t, var);
00114   return t;
00115 }
00116 
00117 template<int N, typename T>
00118 ShGeneric<N, T> asinh(const ShGeneric<N, T>& var)
00119 {
00120   ShAttrib<N, SH_TEMP, T> t;
00121   shASINH(t, var);
00122   return t;
00123 }
00124 
00125 template<int N, typename T>
00126 ShGeneric<N, T> atanh(const ShGeneric<N, T>& var)
00127 {
00128   ShAttrib<N, SH_TEMP, T> t;
00129   shATANH(t, var);
00130   return t;
00131 }
00132 
00133 }
00134 
00135 #endif

Generated on Wed Nov 9 15:29:35 2005 for Sh by  doxygen 1.4.5