diff --git a/e_acosf.cpp b/e_acosf.cpp
--- a/e_acosf.cpp
+++ b/e_acosf.cpp
@@ -11,16 +11,18 @@
  * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
 
 //#include <sys/cdefs.h>
 //__FBSDID("$FreeBSD$");
 
+#include <math.h>
+
 #include "math_private.h"
 
 static const float
 one =  1.0000000000e+00, /* 0x3F800000 */
 pi =  3.1415925026e+00, /* 0x40490fda */
 pio2_hi =  1.5707962513e+00; /* 0x3fc90fda */
 static volatile float
 pio2_lo =  7.5497894159e-08; /* 0x33a22168 */
diff --git a/e_atan2.cpp b/e_atan2.cpp
--- a/e_atan2.cpp
+++ b/e_atan2.cpp
@@ -38,16 +38,17 @@
  * Constants:
  * The hexadecimal values are the intended ones for the following 
  * constants. The decimal values may be used, provided that the 
  * compiler will convert from decimal to binary accurately enough 
  * to produce the hexadecimal values shown.
  */
 
 #include <float.h>
+#include <math.h>
 
 #include "math_private.h"
 
 static volatile double
 tiny  = 1.0e-300;
 static const double
 zero  = 0.0,
 pi_o_4  = 7.8539816339744827900E-01, /* 0x3FE921FB, 0x54442D18 */
diff --git a/e_cosh.cpp b/e_cosh.cpp
--- a/e_cosh.cpp
+++ b/e_cosh.cpp
@@ -31,16 +31,17 @@
  *	    ln2ovft  <  x	    :  cosh(x) := huge*huge (overflow)
  *
  * Special cases:
  *	cosh(x) is |x| if x is +INF, -INF, or NaN.
  *	only cosh(0)=1 is exact for finite x.
  */
 
 #include <float.h>
+#include <math.h>
 
 #include "math_private.h"
 
 static const double one = 1.0, half=0.5, huge = 1.0e300;
 
 double
 __ieee754_cosh(double x)
 {
diff --git a/e_hypotf.cpp b/e_hypotf.cpp
--- a/e_hypotf.cpp
+++ b/e_hypotf.cpp
@@ -11,16 +11,18 @@
  * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
 
 //#include <sys/cdefs.h>
 //__FBSDID("$FreeBSD$");
 
+#include <math.h>
+
 #include "math.h"
 #include "math_private.h"
 
 float
 __ieee754_hypotf(float x, float y)
 {
 	float a,b,t1,t2,y1,y2,w;
 	int32_t j,k,ha,hb;
 
 	GET_FLOAT_WORD(ha,x);
 	ha &= 0x7fffffff;
diff --git a/e_powf.cpp b/e_powf.cpp
--- a/e_powf.cpp
+++ b/e_powf.cpp
@@ -11,16 +11,18 @@
  * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
 
 //#include <sys/cdefs.h>
 //__FBSDID("$FreeBSD$");
 
+#include <math.h>
+
 #include "math_private.h"
 
 static const float
 bp[] = {1.0, 1.5,},
 dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */
 dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */
 zero    =  0.0,
 half    =  0.5,
diff --git a/e_sinh.cpp b/e_sinh.cpp
--- a/e_sinh.cpp
+++ b/e_sinh.cpp
@@ -28,16 +28,17 @@
  *	    ln2ovft  <  x	    :  sinh(x) := x*shuge (overflow)
  *
  * Special cases:
  *	sinh(x) is |x| if x is +INF, -INF, or NaN.
  *	only sinh(0)=0 is exact for finite x.
  */
 
 #include <float.h>
+#include <math.h>
 
 #include "math_private.h"
 
 static const double one = 1.0, shuge = 1.0e307;
 
 double
 __ieee754_sinh(double x)
 {
diff --git a/k_rem_pio2.cpp b/k_rem_pio2.cpp
--- a/k_rem_pio2.cpp
+++ b/k_rem_pio2.cpp
@@ -125,16 +125,17 @@
  * Constants:
  * The hexadecimal values are the intended ones for the following 
  * constants. The decimal values may be used, provided that the 
  * compiler will convert from decimal to binary accurately enough 
  * to produce the hexadecimal values shown.
  */
 
 #include <float.h>
+#include <math.h>
 
 #include "math_private.h"
 
 static const int init_jk[] = {3,4,4,6}; /* initial value for jk */
 
 /*
  * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
  *
diff --git a/s_atan.cpp b/s_atan.cpp
--- a/s_atan.cpp
+++ b/s_atan.cpp
@@ -29,16 +29,17 @@
  * Constants:
  * The hexadecimal values are the intended ones for the following
  * constants. The decimal values may be used, provided that the
  * compiler will convert from decimal to binary accurately enough
  * to produce the hexadecimal values shown.
  */
 
 #include <float.h>
+#include <math.h>
 
 #include "math_private.h"
 
 static const double atanhi[] = {
   4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */
   7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */
   9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */
   1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */
diff --git a/s_atanf.cpp b/s_atanf.cpp
--- a/s_atanf.cpp
+++ b/s_atanf.cpp
@@ -11,16 +11,18 @@
  * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
 
 //#include <sys/cdefs.h>
 //__FBSDID("$FreeBSD$");
 
+#include <math.h>
+
 #include "math_private.h"
 
 static const float atanhi[] = {
   4.6364760399e-01, /* atan(0.5)hi 0x3eed6338 */
   7.8539812565e-01, /* atan(1.0)hi 0x3f490fda */
   9.8279368877e-01, /* atan(1.5)hi 0x3f7b985e */
   1.5707962513e+00, /* atan(inf)hi 0x3fc90fda */
 };
diff --git a/s_tanh.cpp b/s_tanh.cpp
--- a/s_tanh.cpp
+++ b/s_tanh.cpp
@@ -33,16 +33,17 @@
  *	    22     <= x <= INF    : tanh(x) := 1.
  *
  * Special cases:
  *	tanh(NaN) is NaN;
  *	only tanh(0)=0 is exact for finite argument.
  */
 
 #include <float.h>
+#include <math.h>
 
 #include "math_private.h"
 
 static const volatile double tiny = 1.0e-300;
 static const double one = 1.0, two = 2.0, huge = 1.0e300;
 
 double
 tanh(double x)
