gonzui


Format: Advanced Search

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

Search this content:

    1: /*      $OpenBSD: s_round.c,v 1.2 2011/07/06 00:02:42 martynas Exp $ */
    2: 
    3: /*-
    4:  * Copyright (c) 2003, Steven G. Kargl
    5:  * All rights reserved.
    6:  *
    7:  * Redistribution and use in source and binary forms, with or without
    8:  * modification, are permitted provided that the following conditions
    9:  * are met:
   10:  * 1. Redistributions of source code must retain the above copyright
   11:  *    notice unmodified, this list of conditions, and the following
   12:  *    disclaimer.
   13:  * 2. Redistributions in binary form must reproduce the above copyright
   14:  *    notice, this list of conditions and the following disclaimer in the
   15:  *    documentation and/or other materials provided with the distribution.
   16:  *
   17:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   18:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   19:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   20:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   21:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   22:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   23:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   24:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   25:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   26:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   27:  */
   28: 
   29: /* LINTLIBRARY */
   30: 
   31: #include <sys/cdefs.h>
   32: #include <float.h>
   33: #include <math.h>
   34: 
   35: #include "math_private.h"
   36: 
   37: double
   38: round(double x)
   39: {
   40:         double t;
   41: 
   42:         if (isinf(x) || isnan(x))
   43:                 return (x);
   44: 
   45:         if (x >= 0.0) {
   46:                 t = floor(x);
   47:                 if (t - x <= -0.5)
   48:                         t += 1.0;
   49:                 return (t);
   50:         } else {
   51:                 t = floor(-x);
   52:                 if (t + x <= -0.5)
   53:                         t += 1.0;
   54:                 return (-t);
   55:         }
   56: }
   57: 
   58: #if     LDBL_MANT_DIG == 53
   59: #ifdef  lint
   60: /* PROTOLIB1 */
   61: long double roundl(long double);
   62: #else   /* lint */
   63: __weak_alias(roundl, round);
   64: #endif  /* lint */
   65: #endif  /* LDBL_MANT_DIG == 53 */