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