Module: wine Branch: master Commit: ec2f02db0cdb8de2368696cbb34f994a8643d859 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ec2f02db0cdb8de2368696cbb3...
Author: Piotr Caban piotr@codeweavers.com Date: Tue May 26 14:54:40 2015 +0200
msvcr120: Add fmax implementation.
---
dlls/msvcr120/msvcr120.spec | 6 +++--- dlls/msvcr120_app/msvcr120_app.spec | 6 +++--- dlls/msvcrt/math.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index bf6159b..7fa5f89 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -2164,9 +2164,9 @@ @ stub fma @ stub fmaf @ stub fmal -@ stub fmax -@ stub fmaxf -@ stub fmaxl +@ cdecl fmax(double double) MSVCR120_fmax +@ cdecl fmaxf(float float) MSVCR120_fmaxf +@ cdecl fmaxl(double double) MSVCR120_fmax @ stub fmin @ stub fminf @ stub fminl diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 903120b..271e2f0 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1833,9 +1833,9 @@ @ stub fma @ stub fmaf @ stub fmal -@ stub fmax -@ stub fmaxf -@ stub fmaxl +@ cdecl fmax(double double) msvcr120.fmax +@ cdecl fmaxf(float float) msvcr120.fmaxf +@ cdecl fmaxl(double double) msvcr120.fmaxl @ stub fmin @ stub fminf @ stub fminl diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 7c971d3..f796dd9 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -2605,3 +2605,31 @@ short CDECL MSVCR120__ldtest(LDOUBLE *x) { return MSVCR120__dclass(*x); } + +/********************************************************************* + * fmaxf (MSVCR120.@) + */ +float CDECL MSVCR120_fmaxf(float x, float y) +{ + if(isnanf(x)) + return y; + if(isnanf(y)) + return x; + if(x==0 && y==0) + return signbit(x) ? y : x; + return x<y ? y : x; +} + +/********************************************************************* + * fmax (MSVCR120.@) + */ +double CDECL MSVCR120_fmax(double x, double y) +{ + if(isnan(x)) + return y; + if(isnan(y)) + return x; + if(x==0 && y==0) + return signbit(x) ? y : x; + return x<y ? y : x; +}