Stefan Silviu : msvcrt: Implement nearbyint and nearbyintf.

Alexandre Julliard julliard at winehq.org
Tue Nov 22 16:34:01 CST 2016


Module: wine
Branch: master
Commit: 4d37b87219b17049e7b1928bc8148a561382f513
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4d37b87219b17049e7b1928bc8148a561382f513

Author: Stefan Silviu <sylviu44 at gmail.com>
Date:   Tue Nov 22 09:39:50 2016 +0100

msvcrt: Implement nearbyint and nearbyintf.

Signed-off-by: Stefan Silviu <sylviu44 at gmail.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 configure                                          |  2 ++
 configure.ac                                       |  2 ++
 .../api-ms-win-crt-math-l1-1-0.spec                |  6 +++---
 dlls/msvcr120/msvcr120.spec                        |  6 +++---
 dlls/msvcr120_app/msvcr120_app.spec                |  6 +++---
 dlls/msvcrt/math.c                                 | 24 ++++++++++++++++++++++
 dlls/ucrtbase/ucrtbase.spec                        |  6 +++---
 include/config.h.in                                |  6 ++++++
 include/msvcrt/math.h                              |  3 +++
 9 files changed, 49 insertions(+), 12 deletions(-)

diff --git a/configure b/configure
index 3feca3f..783332b 100755
--- a/configure
+++ b/configure
@@ -17130,6 +17130,8 @@ for ac_func in \
 	lrintf \
 	lround \
 	lroundf \
+	nearbyint \
+	nearbyintf \
 	powl \
 	remainder \
 	remainderf \
diff --git a/configure.ac b/configure.ac
index 1c42e2d..353f271 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2554,6 +2554,8 @@ AC_CHECK_FUNCS(\
 	lrintf \
 	lround \
 	lroundf \
+	nearbyint \
+	nearbyintf \
 	powl \
 	remainder \
 	remainderf \
diff --git a/dlls/api-ms-win-crt-math-l1-1-0/api-ms-win-crt-math-l1-1-0.spec b/dlls/api-ms-win-crt-math-l1-1-0/api-ms-win-crt-math-l1-1-0.spec
index f886b97..87937ea 100644
--- a/dlls/api-ms-win-crt-math-l1-1-0/api-ms-win-crt-math-l1-1-0.spec
+++ b/dlls/api-ms-win-crt-math-l1-1-0/api-ms-win-crt-math-l1-1-0.spec
@@ -291,9 +291,9 @@
 @ stub nan
 @ stub nanf
 @ stub nanl
-@ stub nearbyint
-@ stub nearbyintf
-@ stub nearbyintl
+@ cdecl nearbyint(double) ucrtbase.nearbyint
+@ cdecl nearbyintf(float) ucrtbase.nearbyintf
+@ cdecl nearbyintl(double) ucrtbase.nearbyintl
 @ cdecl nextafter(double double) ucrtbase.nextafter
 @ cdecl nextafterf(float float) ucrtbase.nextafterf
 @ cdecl nextafterl(double double) ucrtbase.nextafterl
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 7ce5dfb..f305062 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -2296,9 +2296,9 @@
 @ stub nan
 @ stub nanf
 @ stub nanl
-@ stub nearbyint
-@ stub nearbyintf
-@ stub nearbyintl
+@ cdecl nearbyint(double) MSVCRT_nearbyint
+@ cdecl nearbyintf(float) MSVCRT_nearbyintf
+@ cdecl nearbyintl(double) MSVCRT_nearbyint
 @ cdecl nextafter(double double) MSVCRT__nextafter
 @ cdecl nextafterf(float float) MSVCRT__nextafterf
 @ cdecl nextafterl(double double) MSVCRT__nextafter
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index 1acaf7c..449e8e1 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -1959,9 +1959,9 @@
 @ stub nan
 @ stub nanf
 @ stub nanl
-@ stub nearbyint
-@ stub nearbyintf
-@ stub nearbyintl
+@ cdecl nearbyint(double) msvcr120.nearbyint
+@ cdecl nearbyintf(float) msvcr120.nearbyintf
+@ cdecl nearbyintl(double) msvcr120.nearbyintl
 @ cdecl nextafter(double double) msvcr120.nextafter
 @ cdecl nextafterf(float float) msvcr120.nextafterf
 @ cdecl nextafterl(double double) msvcr120.nextafterl
diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c
index e87151a..6880d6c 100644
--- a/dlls/msvcrt/math.c
+++ b/dlls/msvcrt/math.c
@@ -1354,6 +1354,30 @@ double CDECL MSVCRT__yn(int order, double num)
 }
 
 /*********************************************************************
+ *		_nearbyint (MSVCRT.@)
+ */
+double CDECL MSVCRT_nearbyint(double num)
+{
+#ifdef HAVE_NEARBYINT
+    return nearbyint(num);
+#else
+    return num >= 0 ? floor(num + 0.5) : ceil(num - 0.5);
+#endif
+}
+
+/*********************************************************************
+ *		_nearbyintf (MSVCRT.@)
+ */
+float CDECL MSVCRT_nearbyintf(float num)
+{
+#ifdef HAVE_NEARBYINTF
+    return nearbyintf(num);
+#else
+    return MSVCRT_nearbyint(num);
+#endif
+}
+
+/*********************************************************************
  *		_nextafter (MSVCRT.@)
  */
 double CDECL MSVCRT__nextafter(double num, double next)
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index 2aa0563..0005850 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -2432,9 +2432,9 @@
 @ stub nan
 @ stub nanf
 @ stub nanl
-@ stub nearbyint
-@ stub nearbyintf
-@ stub nearbyintl
+@ cdecl nearbyint(double) MSVCRT_nearbyint
+@ cdecl nearbyintf(float) MSVCRT_nearbyintf
+@ cdecl nearbyintl(double) MSVCRT_nearbyint
 @ cdecl nextafter(double double) MSVCRT__nextafter
 @ cdecl nextafterf(float float) MSVCRT__nextafterf
 @ cdecl nextafterl(double double) MSVCRT__nextafter
diff --git a/include/config.h.in b/include/config.h.in
index 40909fe..5dcd90b 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -564,6 +564,12 @@
 /* Define to 1 if you have the <ncurses.h> header file. */
 #undef HAVE_NCURSES_H
 
+/* Define to 1 if you have the `nearbyint' function. */
+#undef HAVE_NEARBYINT
+
+/* Define to 1 if you have the `nearbyintf' function. */
+#undef HAVE_NEARBYINTF
+
 /* Define to 1 if you have the <netdb.h> header file. */
 #undef HAVE_NETDB_H
 
diff --git a/include/msvcrt/math.h b/include/msvcrt/math.h
index c76fe0d..5b42b4d 100644
--- a/include/msvcrt/math.h
+++ b/include/msvcrt/math.h
@@ -148,6 +148,9 @@ float __cdecl fmodf(float, float);
 
 #define ldexpf(x,y) ((float)ldexp((double)(x),(y)))
 
+double __cdecl nearbyint(double);
+float __cdecl nearbyintf(float);
+
 float __cdecl _hypotf(float, float);
 
 int __cdecl _matherr(struct _exception*);




More information about the wine-cvs mailing list