diff --git a/include/math.h b/include/math.h
index d732648..7f98f8a 100644
--- a/include/math.h
+++ b/include/math.h
@@ -350,6 +350,10 @@ long double truncl(long double);
 #define MAXFLOAT        3.40282347e+38F
 #endif
 
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int         finite(double);
+#endif
+
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
 extern int signgam;
 
diff --git a/src/math/finite.c b/src/math/finite.c
new file mode 100644
index 0000000..bf4f70f
--- /dev/null
+++ b/src/math/finite.c
@@ -0,0 +1,11 @@
+#include "libm.h"
+
+#define _BSD_SOURCE
+#include <math.h>
+
+int __finite(double x)
+{
+	return isfinite(x);
+}
+
+weak_alias(__finite, finite);