summaryrefslogtreecommitdiffstats
path: root/src/H5system.c
diff options
context:
space:
mode:
authorderobins <dana.e.robinson@gmail.com>2016-12-02 05:51:07 (GMT)
committerderobins <dana.e.robinson@gmail.com>2016-12-02 05:51:07 (GMT)
commit0c5f56a865725f1e5aaf14704ebcb0704e07bb59 (patch)
treeb2cf16485484089abda346f0739ddcc53895f79a /src/H5system.c
parent63bcd73f1f53a8b4bb31083cbc30f9a90663438f (diff)
downloadhdf5-0c5f56a865725f1e5aaf14704ebcb0704e07bb59.zip
hdf5-0c5f56a865725f1e5aaf14704ebcb0704e07bb59.tar.gz
hdf5-0c5f56a865725f1e5aaf14704ebcb0704e07bb59.tar.bz2
Added Windows-only versions of the round() functions, which do not
exist in VS2012 and earlier. Tested on: 32-bit Windows 7 w/ VS2012 Pro
Diffstat (limited to 'src/H5system.c')
-rw-r--r--src/H5system.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/H5system.c b/src/H5system.c
index 5205d08..4aada77 100644
--- a/src/H5system.c
+++ b/src/H5system.c
@@ -932,6 +932,56 @@ Wnanosleep(uint64_t nanosec)
FUNC_LEAVE_NOAPI_VOID
} /* end Wnanosleep() */
+
+/*-------------------------------------------------------------------------
+ * Function: Wllround, Wllroundf, Wlround, Wlroundf, Wround, Wroundf
+ *
+ * Purpose: Wrapper function for round functions for use with VS2012
+ * and earlier.
+ *
+ * Return: The rounded value that was passed in.
+ *
+ * Programmer: Dana Robinson
+ * December 2016
+ *
+ *-------------------------------------------------------------------------
+ */
+long long
+Wllround(double arg)
+{
+ return (long long)(arg < 0.0 ? HDceil(arg - 0.5) : HDfloor(arg + 0.5));
+}
+
+long long
+Wllroundf(float arg)
+{
+ return (long long)(arg < 0.0F ? HDceil(arg - 0.5F) : HDfloor(arg + 0.5F));
+}
+
+long
+Wlround(double arg)
+{
+ return (long)(arg < 0.0 ? HDceil(arg - 0.5) : HDfloor(arg + 0.5));
+}
+
+long
+Wlroundf(float arg)
+{
+ return (long)(arg < 0.0F ? HDceil(arg - 0.5F) : HDfloor(arg + 0.5F));
+}
+
+double
+Wround(double arg)
+{
+ return arg < 0.0 ? HDceil(arg - 0.5) : HDfloor(arg + 0.5);
+}
+
+float
+Wroundf(float arg)
+{
+ return arg < 0.0F ? HDceil(arg - 0.5F) : HDfloor(arg + 0.5F);
+}
+
#endif /* H5_HAVE_WIN32_API */