@@ -2746,43 +2746,50 @@ TENSOR_IMPLEMENT_LOGICAL_SUM(logicalany, ||, 0)
27462746/* floating point only now */
27472747#if defined(TH_REAL_IS_FLOAT ) || defined(TH_REAL_IS_DOUBLE )
27482748
2749- LAB_IMPLEMENT_BASIC_FUNCTION (log ,log )
2750- LAB_IMPLEMENT_BASIC_FUNCTION (lgamma ,lgamma )
2751- LAB_IMPLEMENT_BASIC_FUNCTION (log1p ,log1p )
2752- LAB_IMPLEMENT_BASIC_FUNCTION (sigmoid ,TH_sigmoid )
2753- LAB_IMPLEMENT_BASIC_FUNCTION (exp ,exp )
2754- LAB_IMPLEMENT_BASIC_FUNCTION (cos ,cos )
2755- LAB_IMPLEMENT_BASIC_FUNCTION (acos ,acos )
2756- LAB_IMPLEMENT_BASIC_FUNCTION (cosh ,cosh )
2757- LAB_IMPLEMENT_BASIC_FUNCTION (sin ,sin )
2758- LAB_IMPLEMENT_BASIC_FUNCTION (asin ,asin )
2759- LAB_IMPLEMENT_BASIC_FUNCTION (sinh ,sinh )
2760- LAB_IMPLEMENT_BASIC_FUNCTION (tan ,tan )
2761- LAB_IMPLEMENT_BASIC_FUNCTION (atan ,atan )
2762- LAB_IMPLEMENT_BASIC_FUNCTION (tanh ,tanh )
2763- LAB_IMPLEMENT_BASIC_FUNCTION_VALUE (pow ,pow )
2764- LAB_IMPLEMENT_BASIC_FUNCTION (sqrt ,sqrt )
2765- LAB_IMPLEMENT_BASIC_FUNCTION (rsqrt ,TH_rsqrt )
2766- LAB_IMPLEMENT_BASIC_FUNCTION (ceil ,ceil )
2767- LAB_IMPLEMENT_BASIC_FUNCTION (floor ,floor )
2768- LAB_IMPLEMENT_BASIC_FUNCTION (round ,round )
2769- LAB_IMPLEMENT_BASIC_FUNCTION (abs ,fabs )
2770- LAB_IMPLEMENT_BASIC_FUNCTION (trunc ,trunc )
2771- LAB_IMPLEMENT_BASIC_FUNCTION (frac ,TH_frac )
2749+ #if defined (TH_REAL_IS_FLOAT )
2750+ #define TH_MATH_NAME (fn ) fn##f
2751+ #else
2752+ #define TH_MATH_NAME (fn ) fn
2753+ #endif
2754+
2755+ LAB_IMPLEMENT_BASIC_FUNCTION (log ,TH_MATH_NAME (log ))
2756+ LAB_IMPLEMENT_BASIC_FUNCTION (lgamma ,TH_MATH_NAME (lgamma ))
2757+ LAB_IMPLEMENT_BASIC_FUNCTION (log1p ,TH_MATH_NAME (log1p ))
2758+ LAB_IMPLEMENT_BASIC_FUNCTION (sigmoid ,TH_MATH_NAME (TH_sigmoid ))
2759+ LAB_IMPLEMENT_BASIC_FUNCTION (exp ,TH_MATH_NAME (exp ))
2760+ LAB_IMPLEMENT_BASIC_FUNCTION (cos ,TH_MATH_NAME (cos ))
2761+ LAB_IMPLEMENT_BASIC_FUNCTION (acos ,TH_MATH_NAME (acos ))
2762+ LAB_IMPLEMENT_BASIC_FUNCTION (cosh ,TH_MATH_NAME (cosh ))
2763+ LAB_IMPLEMENT_BASIC_FUNCTION (sin ,TH_MATH_NAME (sin ))
2764+ LAB_IMPLEMENT_BASIC_FUNCTION (asin ,TH_MATH_NAME (asin ))
2765+ LAB_IMPLEMENT_BASIC_FUNCTION (sinh ,TH_MATH_NAME (sinh ))
2766+ LAB_IMPLEMENT_BASIC_FUNCTION (tan ,TH_MATH_NAME (tan ))
2767+ LAB_IMPLEMENT_BASIC_FUNCTION (atan ,TH_MATH_NAME (atan ))
2768+ LAB_IMPLEMENT_BASIC_FUNCTION (tanh ,TH_MATH_NAME (tanh ))
2769+ LAB_IMPLEMENT_BASIC_FUNCTION_VALUE (pow ,TH_MATH_NAME (pow ))
2770+ LAB_IMPLEMENT_BASIC_FUNCTION (sqrt ,TH_MATH_NAME (sqrt ))
2771+ LAB_IMPLEMENT_BASIC_FUNCTION (rsqrt ,TH_MATH_NAME (TH_rsqrt ))
2772+ LAB_IMPLEMENT_BASIC_FUNCTION (ceil ,TH_MATH_NAME (ceil ))
2773+ LAB_IMPLEMENT_BASIC_FUNCTION (floor ,TH_MATH_NAME (floor ))
2774+ LAB_IMPLEMENT_BASIC_FUNCTION (round ,TH_MATH_NAME (round ))
2775+ LAB_IMPLEMENT_BASIC_FUNCTION (abs ,TH_MATH_NAME (fabs ))
2776+ LAB_IMPLEMENT_BASIC_FUNCTION (trunc ,TH_MATH_NAME (trunc ))
2777+ LAB_IMPLEMENT_BASIC_FUNCTION (frac ,TH_MATH_NAME (TH_frac ))
27722778LAB_IMPLEMENT_BASIC_FUNCTION (neg ,- )
2773- LAB_IMPLEMENT_BASIC_FUNCTION (cinv , 1.0 / )
2779+ LAB_IMPLEMENT_BASIC_FUNCTION (cinv , TH_MATH_NAME (1.0 ) / )
2780+
27742781
27752782void THTensor_ (atan2 )(THTensor * r_ , THTensor * tx , THTensor * ty )
27762783{
27772784 THTensor_ (resizeAs )(r_ , tx );
2778- TH_TENSOR_APPLY3 (real , r_ , real , tx , real , ty , * r__data = atan2 (* tx_data ,* ty_data ););
2785+ TH_TENSOR_APPLY3 (real , r_ , real , tx , real , ty , * r__data = TH_MATH_NAME ( atan2 ) (* tx_data ,* ty_data ););
27792786}
27802787
27812788void THTensor_ (lerp )(THTensor * r_ , THTensor * a , THTensor * b , real weight )
27822789{
27832790 THArgCheck (THTensor_ (nElement )(a ) == THTensor_ (nElement )(b ), 2 , "sizes do not match" );
27842791 THTensor_ (resizeAs )(r_ , a );
2785- TH_TENSOR_APPLY3 (real , r_ , real , a , real , b , * r__data = TH_lerp (* a_data , * b_data , weight ););
2792+ TH_TENSOR_APPLY3 (real , r_ , real , a , real , b , * r__data = TH_MATH_NAME ( TH_lerp ) (* a_data , * b_data , weight ););
27862793}
27872794
27882795void THTensor_ (mean )(THTensor * r_ , THTensor * t , int dimension , int keepdim )
@@ -2823,15 +2830,15 @@ void THTensor_(std)(THTensor *r_, THTensor *t, int dimension, int flag, int keep
28232830 sum2 /= t_size ;
28242831 sum2 -= sum * sum ;
28252832 sum2 = (sum2 < 0 ? 0 : sum2 );
2826- * r__data = (real )sqrt (sum2 );
2833+ * r__data = (real )TH_MATH_NAME ( sqrt ) (sum2 );
28272834 }
28282835 else
28292836 {
28302837 sum /= t_size ;
28312838 sum2 /= t_size - 1 ;
28322839 sum2 -= ((real )t_size )/((real )(t_size - 1 ))* sum * sum ;
28332840 sum2 = (sum2 < 0 ? 0 : sum2 );
2834- * r__data = (real )sqrt (sum2 );
2841+ * r__data = (real )TH_MATH_NAME ( sqrt ) (sum2 );
28352842 });
28362843
28372844 if (!keepdim ) {
@@ -2907,9 +2914,11 @@ void THTensor_(norm)(THTensor *r_, THTensor *t, real value, int dimension, int k
29072914 TH_TENSOR_DIM_APPLY2 (real , t , real , r_ , dimension ,
29082915 accreal sum = 0 ;
29092916 long i ;
2910- for (i = 0 ; i < t_size ; i ++ )
2911- sum += pow (fabs (t_data [i * t_stride ]), value );
2912- * r__data = pow (sum , 1.0 /value );)
2917+ for (i = 0 ; i < t_size ; i ++ ) {
2918+ sum += TH_MATH_NAME (pow )(
2919+ TH_MATH_NAME (fabs )(t_data [i * t_stride ]), value );
2920+ }
2921+ * r__data = TH_MATH_NAME (pow )(sum , 1.0 /value );)
29132922 }
29142923
29152924 if (!keepdim ) {
@@ -2924,14 +2933,14 @@ accreal THTensor_(normall)(THTensor *tensor, real value)
29242933 TH_TENSOR_APPLY (real , tensor , sum += * tensor_data != 0.0 ;);
29252934 return sum ;
29262935 } else if (value == 1 ) {
2927- TH_TENSOR_APPLY (real , tensor , sum += fabs (* tensor_data ););
2936+ TH_TENSOR_APPLY (real , tensor , sum += TH_MATH_NAME ( fabs ) (* tensor_data ););
29282937 return sum ;
29292938 } else if (value == 2 ) {
29302939 TH_TENSOR_APPLY (real , tensor , accreal z = * tensor_data ; sum += z * z ;);
29312940 return sqrt (sum );
29322941 } else {
2933- TH_TENSOR_APPLY (real , tensor , sum += pow ( fabs (* tensor_data ), value ););
2934- return pow (sum , 1.0 /value );
2942+ TH_TENSOR_APPLY (real , tensor , sum += TH_MATH_NAME ( pow )( TH_MATH_NAME ( fabs ) (* tensor_data ), value ););
2943+ return TH_MATH_NAME ( pow ) (sum , 1.0 /value );
29352944 }
29362945}
29372946
@@ -2963,7 +2972,7 @@ void THTensor_(renorm)(THTensor *res, THTensor *src, real value, int dimension,
29632972 } else if (value == 2 ) {
29642973 TH_TENSOR_APPLY (real , rowS , accreal z = * rowS_data ; norm += z * z ;);
29652974 } else {
2966- TH_TENSOR_APPLY (real , rowS , norm += pow ( fabs (* rowS_data ), value ););
2975+ TH_TENSOR_APPLY (real , rowS , norm += TH_MATH_NAME ( pow )( TH_MATH_NAME ( fabs ) (* rowS_data ), value ););
29672976 }
29682977
29692978 norm = pow (norm , 1 /value );
@@ -2989,8 +2998,9 @@ accreal THTensor_(dist)(THTensor *tensor, THTensor *src, real value)
29892998{
29902999 real sum = 0 ;
29913000 TH_TENSOR_APPLY2 (real , tensor , real , src ,
2992- sum += pow (fabs (* tensor_data - * src_data ), value );)
2993- return pow (sum , 1.0 /value );
3001+ sum += TH_MATH_NAME (pow )(
3002+ TH_MATH_NAME (fabs )(* tensor_data - * src_data ), value ););
3003+ return TH_MATH_NAME (pow )(sum , 1.0 /value );
29943004}
29953005
29963006accreal THTensor_ (meanall )(THTensor * tensor )
@@ -3048,12 +3058,12 @@ void THTensor_(logspace)(THTensor *r_, real a, real b, long n)
30483058
30493059 if (n == 1 ) {
30503060 TH_TENSOR_APPLY (real , r_ ,
3051- * r__data = pow (10.0 , a );
3061+ * r__data = TH_MATH_NAME ( pow ) (10.0 , a );
30523062 i ++ ;
30533063 );
30543064 } else {
30553065 TH_TENSOR_APPLY (real , r_ ,
3056- * r__data = pow (10.0 , a + i * (b - a )/((real )(n - 1 )));
3066+ * r__data = TH_MATH_NAME ( pow ) (10.0 , a + i * (b - a )/((real )(n - 1 )));
30573067 i ++ ;
30583068 );
30593069 }
@@ -3141,6 +3151,7 @@ void THTensor_(bhistc)(THTensor *hist, THTensor *tensor, long nbins, real minval
31413151 );
31423152}
31433153
3154+ #undef TH_MATH_NAME
31443155#endif /* floating point only part */
31453156#undef IS_NONZERO
31463157#endif
0 commit comments