1 /* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved.
2 *
3 * Permission to use, copy, modify, and distribute this software
4 * is freely granted, provided that this notice is preserved.
5 */
6 /*
7 FUNCTION
8 <<fmax>>, <<fmaxf>>---maximum
9 INDEX
10 fmax
11 INDEX
12 fmaxf
13
14 SYNOPSIS
15 #include <math.h>
16 double fmax(double <[x]>, double <[y]>);
17 float fmaxf(float <[x]>, float <[y]>);
18
19 DESCRIPTION
20 The <<fmax>> functions determine the maximum numeric value of their arguments.
21 NaN arguments are treated as missing data: if one argument is a NaN and the
22 other numeric, then the <<fmax>> functions choose the numeric value.
23
24 RETURNS
25 The <<fmax>> functions return the maximum numeric value of their arguments.
26
27 PORTABILITY
28 ANSI C, POSIX.
29
30 */
31
32 #include "fdlibm.h"
33
34 #ifdef _NEED_FLOAT64
35
36 __float64
fmax64(__float64 x,__float64 y)37 fmax64(__float64 x, __float64 y)
38 {
39 if (issignaling(x) || issignaling(y))
40 return x + y;
41
42 if (isnan(x))
43 return y;
44
45 if (isnan(y))
46 return x;
47
48 return x > y ? x : y;
49 }
50
51 _MATH_ALIAS_d_dd(fmax)
52
53 #endif /* _NEED_FLOAT64 */
54