POK
Main Page
Classes
Files
File List
File Members
round.c
1
/*
2
* POK header
3
*
4
* The following file is a part of the POK project. Any modification should
5
* made according to the POK licence. You CANNOT use this file or a part of
6
* this file is this part of a file for your own project
7
*
8
* For more information on the POK licence, please see our LICENCE FILE
9
*
10
* Please follow the coding guidelines described in doc/CODING_GUIDELINES
11
*
12
* Copyright (c) 2007-2009 POK team
13
*
14
* Created by julien on Fri Jan 30 14:41:34 2009
15
*/
16
17
/*-
18
* Copyright (c) 2003, Steven G. Kargl
19
* All rights reserved.
20
*
21
* Redistribution and use in source and binary forms, with or without
22
* modification, are permitted provided that the following conditions
23
* are met:
24
* 1. Redistributions of source code must retain the above copyright
25
* notice unmodified, this list of conditions, and the following
26
* disclaimer.
27
* 2. Redistributions in binary form must reproduce the above copyright
28
* notice, this list of conditions and the following disclaimer in the
29
* documentation and/or other materials provided with the distribution.
30
*
31
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
32
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
33
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
34
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
35
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
36
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
37
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
38
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
39
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
40
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41
*/
42
43
#ifdef POK_NEEDS_LIBMATH
44
45
#include <libm.h>
46
47
double
48
round(
double
x)
49
{
50
double
t;
51
int
i;
52
53
i = fpclassify(x);
54
if
(i == FP_INFINITE || i == FP_NAN)
55
return
(x);
56
57
if
(x >= 0.0) {
58
t = floor(x);
59
if
(x - t >= 0.5)
60
t += 1.0;
61
return
(t);
62
}
else
{
63
x = -x;
64
t = floor(x);
65
if
(x - t >= 0.5)
66
t += 1.0;
67
return
(-t);
68
}
69
}
70
71
#endif
libpok
libm
round.c
Generated on Fri Jun 1 2012 19:07:13 for POK by
1.8.1