gonzui


Format: Advanced Search

t2ex/bsd_source/lib/libc/src_bsd/math/s_fmax.cbare sourcepermlink (0.00 seconds)

Search this content:

    1: /*      $OpenBSD: s_fmax.c,v 1.5 2011/05/30 18:34:38 martynas Exp $  */
    2: /*-
    3:  * Copyright (c) 2004 David Schultz <das@FreeBSD.ORG>
    4:  * All rights reserved.
    5:  *
    6:  * Redistribution and use in source and binary forms, with or without
    7:  * modification, are permitted provided that the following conditions
    8:  * are met:
    9:  * 1. Redistributions of source code must retain the above copyright
   10:  *    notice, this list of conditions and the following disclaimer.
   11:  * 2. Redistributions in binary form must reproduce the above copyright
   12:  *    notice, this list of conditions and the following disclaimer in the
   13:  *    documentation and/or other materials provided with the distribution.
   14:  *
   15:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   16:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   19:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   21:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   22:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   23:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   24:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   25:  * SUCH DAMAGE.
   26:  */
   27: 
   28: /* LINTLIBRARY */
   29: 
   30: #include <sys/cdefs.h>
   31: #include <float.h>
   32: #include <math.h>
   33: 
   34: double
   35: fmax(double x, double y)
   36: {
   37:         /* Check for NaNs to avoid raising spurious exceptions. */
   38:         if (isnan(x))
   39:                 return (y);
   40:         if (isnan(y))
   41:                 return (x);
   42: 
   43:         /* Handle comparisons of signed zeroes. */
   44:         if (signbit(x) != signbit(y))
   45:                 if (signbit(x))
   46:                         return (y);
   47:                 else
   48:                         return (x);
   49: 
   50:         return (x > y ? x : y);
   51: }
   52: 
   53: #if     LDBL_MANT_DIG == 53
   54: #ifdef  lint
   55: /* PROTOLIB1 */
   56: long double fmaxl(long double, long double);
   57: #else   /* lint */
   58: __weak_alias(fmaxl, fmax);
   59: #endif  /* lint */
   60: #endif  /* LDBL_MANT_DIG == 53 */