summaryrefslogtreecommitdiff
path: root/libc/math/sf_isinf.c
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-12-27 16:22:00 -0600
committerGitHub <noreply@github.com>2017-12-27 16:22:00 -0600
commit6b611a3046a694d3972f2aa4df90d3ef78801217 (patch)
tree05f295c00cbbc1d5987a05da37e746fb841d4d83 /libc/math/sf_isinf.c
parent58c860d6c48324eba66dd19540db5584d832cf58 (diff)
parentd88495e3f4061a411e654c7307aa94ac8a98c94b (diff)
Merge pull request #13 from ProjectRevoTPP/libc
add libc building to agbcc.
Diffstat (limited to 'libc/math/sf_isinf.c')
-rw-r--r--libc/math/sf_isinf.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/libc/math/sf_isinf.c b/libc/math/sf_isinf.c
new file mode 100644
index 0000000..1af4aab
--- /dev/null
+++ b/libc/math/sf_isinf.c
@@ -0,0 +1,35 @@
+/*
+ * isinff(x) returns 1 if x is infinity, else 0;
+ * no branching!
+ * Added by Cygnus Support.
+ */
+
+#include "fdlibm.h"
+
+#ifdef __STDC__
+ int isinff(float x)
+#else
+ int isinff(x)
+ float x;
+#endif
+{
+ __int32_t ix;
+ GET_FLOAT_WORD(ix,x);
+ ix &= 0x7fffffff;
+ ix = 0x7f800000 - ix;
+ return 1 - (int)((__uint32_t)(ix|(-ix))>>31);
+}
+
+#ifdef _DOUBLE_IS_32BITS
+
+#ifdef __STDC__
+ int isinf(double x)
+#else
+ int isinf(x)
+ double x;
+#endif
+{
+ return isinff((float) x);
+}
+
+#endif /* defined(_DOUBLE_IS_32BITS) */