From: martynas Date: Mon, 21 Jul 2008 20:29:14 +0000 (+0000) Subject: rename lround.c lroundf.c llround.c llroundf.c to s_lround.c X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=2d2c90e6463ca665c6761a911038e365c74430cd;p=openbsd rename lround.c lroundf.c llround.c llroundf.c to s_lround.c s_lroundf.c s_llround.c s_llroundf.c, for naming consistency looks fine to millert@ --- diff --git a/lib/libm/Makefile b/lib/libm/Makefile index 7c52efc01a5..9bafa9982e1 100644 --- a/lib/libm/Makefile +++ b/lib/libm/Makefile @@ -1,5 +1,5 @@ # $NetBSD: Makefile,v 1.28 1995/11/20 22:06:19 jtc Exp $ -# $OpenBSD: Makefile,v 1.46 2008/07/16 15:15:26 martynas Exp $ +# $OpenBSD: Makefile,v 1.47 2008/07/21 20:29:14 martynas Exp $ # # @(#)Makefile 5.1beta 93/09/24 # @@ -110,7 +110,7 @@ COMMON_SRCS = b_exp__D.c b_log__D.c b_tgamma.c \ e_sinh.c e_sinhf.c e_sqrt.c e_sqrtf.c \ k_cos.c k_cosf.c k_rem_pio2.c k_rem_pio2f.c k_sin.c k_sinf.c \ k_standard.c k_tan.c k_tanf.c \ - lround.c lroundf.c llround.c llroundf.c \ + s_lround.c s_lroundf.c s_llround.c s_llroundf.c \ s_asinh.c s_asinhf.c s_atan.c s_atanf.c s_cbrt.c s_cbrtf.c s_ceil.c \ s_ceilf.c s_copysign.c s_copysignf.c s_cos.c s_cosf.c s_erf.c s_erff.c \ s_expm1.c s_expm1f.c s_fabsf.c s_finite.c s_finitef.c \ diff --git a/lib/libm/src/llround.c b/lib/libm/src/llround.c deleted file mode 100644 index b52c02c3291..00000000000 --- a/lib/libm/src/llround.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $OpenBSD: llround.c,v 1.1 2005/11/17 20:07:40 otto Exp $ */ -/* $NetBSD: llround.c,v 1.2 2004/10/13 15:18:32 drochner Exp $ */ - -/* - * Written by Matthias Drochner . - * Public domain. - */ - -#define LROUNDNAME llround -#define RESTYPE long long int -#define RESTYPE_MIN LLONG_MIN -#define RESTYPE_MAX LLONG_MAX - -#include "lround.c" diff --git a/lib/libm/src/llroundf.c b/lib/libm/src/llroundf.c deleted file mode 100644 index 24ab53cd813..00000000000 --- a/lib/libm/src/llroundf.c +++ /dev/null @@ -1,14 +0,0 @@ -/* $OpenBSD: llroundf.c,v 1.1 2005/11/17 20:07:40 otto Exp $ */ -/* $NetBSD: llroundf.c,v 1.2 2004/10/13 15:18:32 drochner Exp $ */ - -/* - * Written by Matthias Drochner . - * Public domain. - */ - -#define LROUNDNAME llroundf -#define RESTYPE long long int -#define RESTYPE_MIN LLONG_MIN -#define RESTYPE_MAX LLONG_MAX - -#include "lroundf.c" diff --git a/lib/libm/src/lround.c b/lib/libm/src/lround.c deleted file mode 100644 index 62fbe3ebea3..00000000000 --- a/lib/libm/src/lround.c +++ /dev/null @@ -1,88 +0,0 @@ -/* $OpenBSD: lround.c,v 1.1 2005/11/17 20:07:40 otto Exp $ */ -/* $NetBSD: lround.c,v 1.2 2004/10/13 15:18:32 drochner Exp $ */ - -/*- - * Copyright (c) 2004 - * Matthias Drochner. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include "math_private.h" - -#ifndef LROUNDNAME -#define LROUNDNAME lround -#define RESTYPE long int -#define RESTYPE_MIN LONG_MIN -#define RESTYPE_MAX LONG_MAX -#endif - -#define RESTYPE_BITS (sizeof(RESTYPE) * 8) - -RESTYPE -LROUNDNAME(double x) -{ - u_int32_t i0, i1; - int e, s, shift; - RESTYPE res; - - GET_HIGH_WORD(i0, x); - e = i0 >> 20; - s = e >> DBL_EXPBITS; - e = (e & 0x7ff) - DBL_EXP_BIAS; - - /* 1.0 x 2^-1 is the smallest number which can be rounded to 1 */ - if (e < -1) - return (0); - /* 1.0 x 2^31 (or 2^63) is already too large */ - if (e >= (int)RESTYPE_BITS - 1) - return (s ? RESTYPE_MIN : RESTYPE_MAX); /* ??? unspecified */ - - /* >= 2^52 is already an exact integer */ - if (e < DBL_FRACBITS) { - /* add 0.5, extraction below will truncate */ - x += (s ? -0.5 : 0.5); - } - - EXTRACT_WORDS(i0, i1, x); - e = ((i0 >> 20) & 0x7ff) - DBL_EXP_BIAS; - i0 &= 0xfffff; - i0 |= (1 << 20); - - shift = e - DBL_FRACBITS; - if (shift >=0) - res = (shift < 32 ? (RESTYPE)i1 << shift : 0); - else - res = (shift > -32 ? i1 >> -shift : 0); - shift += 32; - if (shift >=0) - res |= (shift < 32 ? (RESTYPE)i0 << shift : 0); - else - res |= (shift > -32 ? i0 >> -shift : 0); - - return (s ? -res : res); -} diff --git a/lib/libm/src/lroundf.c b/lib/libm/src/lroundf.c deleted file mode 100644 index 477383d81bd..00000000000 --- a/lib/libm/src/lroundf.c +++ /dev/null @@ -1,83 +0,0 @@ -/* $OpenBSD: lroundf.c,v 1.1 2005/11/17 20:07:40 otto Exp $ */ -/* $NetBSD: lroundf.c,v 1.2 2004/10/13 15:18:32 drochner Exp $ */ - -/*- - * Copyright (c) 2004 - * Matthias Drochner. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include "math_private.h" - -#ifndef LROUNDNAME -#define LROUNDNAME lroundf -#define RESTYPE long int -#define RESTYPE_MIN LONG_MIN -#define RESTYPE_MAX LONG_MAX -#endif - -#define RESTYPE_BITS (sizeof(RESTYPE) * 8) - -RESTYPE -LROUNDNAME(float x) -{ - u_int32_t i0; - int e, s, shift; - RESTYPE res; - - GET_FLOAT_WORD(i0, x); - e = i0 >> SNG_FRACBITS; - s = e >> SNG_EXPBITS; - e = (e & 0xff) - SNG_EXP_BIAS; - - /* 1.0 x 2^-1 is the smallest number which can be rounded to 1 */ - if (e < -1) - return (0); - /* 1.0 x 2^31 (or 2^63) is already too large */ - if (e >= (int)RESTYPE_BITS - 1) - return (s ? RESTYPE_MIN : RESTYPE_MAX); /* ??? unspecified */ - - /* >= 2^23 is already an exact integer */ - if (e < SNG_FRACBITS) { - /* add 0.5, extraction below will truncate */ - x += (s ? -0.5 : 0.5); - } - - GET_FLOAT_WORD(i0, x); - e = ((i0 >> SNG_FRACBITS) & 0xff) - SNG_EXP_BIAS; - i0 &= 0x7fffff; - i0 |= (1 << SNG_FRACBITS); - - shift = e - SNG_FRACBITS; - if (shift >=0) - res = (shift < 32 ? (RESTYPE)i0 << shift : 0); - else - res = (shift > -32 ? i0 >> -shift : 0); - - return (s ? -res : res); -} diff --git a/lib/libm/src/s_llround.c b/lib/libm/src/s_llround.c new file mode 100644 index 00000000000..e9ba5c05363 --- /dev/null +++ b/lib/libm/src/s_llround.c @@ -0,0 +1,14 @@ +/* $OpenBSD: s_llround.c,v 1.1 2008/07/21 20:29:14 martynas Exp $ */ +/* $NetBSD: llround.c,v 1.2 2004/10/13 15:18:32 drochner Exp $ */ + +/* + * Written by Matthias Drochner . + * Public domain. + */ + +#define LROUNDNAME llround +#define RESTYPE long long int +#define RESTYPE_MIN LLONG_MIN +#define RESTYPE_MAX LLONG_MAX + +#include "s_lround.c" diff --git a/lib/libm/src/s_llroundf.c b/lib/libm/src/s_llroundf.c new file mode 100644 index 00000000000..c576304450b --- /dev/null +++ b/lib/libm/src/s_llroundf.c @@ -0,0 +1,14 @@ +/* $OpenBSD: s_llroundf.c,v 1.1 2008/07/21 20:29:14 martynas Exp $ */ +/* $NetBSD: llroundf.c,v 1.2 2004/10/13 15:18:32 drochner Exp $ */ + +/* + * Written by Matthias Drochner . + * Public domain. + */ + +#define LROUNDNAME llroundf +#define RESTYPE long long int +#define RESTYPE_MIN LLONG_MIN +#define RESTYPE_MAX LLONG_MAX + +#include "s_lroundf.c" diff --git a/lib/libm/src/s_lround.c b/lib/libm/src/s_lround.c new file mode 100644 index 00000000000..0742f076510 --- /dev/null +++ b/lib/libm/src/s_lround.c @@ -0,0 +1,88 @@ +/* $OpenBSD: s_lround.c,v 1.1 2008/07/21 20:29:14 martynas Exp $ */ +/* $NetBSD: lround.c,v 1.2 2004/10/13 15:18:32 drochner Exp $ */ + +/*- + * Copyright (c) 2004 + * Matthias Drochner. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include "math_private.h" + +#ifndef LROUNDNAME +#define LROUNDNAME lround +#define RESTYPE long int +#define RESTYPE_MIN LONG_MIN +#define RESTYPE_MAX LONG_MAX +#endif + +#define RESTYPE_BITS (sizeof(RESTYPE) * 8) + +RESTYPE +LROUNDNAME(double x) +{ + u_int32_t i0, i1; + int e, s, shift; + RESTYPE res; + + GET_HIGH_WORD(i0, x); + e = i0 >> 20; + s = e >> DBL_EXPBITS; + e = (e & 0x7ff) - DBL_EXP_BIAS; + + /* 1.0 x 2^-1 is the smallest number which can be rounded to 1 */ + if (e < -1) + return (0); + /* 1.0 x 2^31 (or 2^63) is already too large */ + if (e >= (int)RESTYPE_BITS - 1) + return (s ? RESTYPE_MIN : RESTYPE_MAX); /* ??? unspecified */ + + /* >= 2^52 is already an exact integer */ + if (e < DBL_FRACBITS) { + /* add 0.5, extraction below will truncate */ + x += (s ? -0.5 : 0.5); + } + + EXTRACT_WORDS(i0, i1, x); + e = ((i0 >> 20) & 0x7ff) - DBL_EXP_BIAS; + i0 &= 0xfffff; + i0 |= (1 << 20); + + shift = e - DBL_FRACBITS; + if (shift >=0) + res = (shift < 32 ? (RESTYPE)i1 << shift : 0); + else + res = (shift > -32 ? i1 >> -shift : 0); + shift += 32; + if (shift >=0) + res |= (shift < 32 ? (RESTYPE)i0 << shift : 0); + else + res |= (shift > -32 ? i0 >> -shift : 0); + + return (s ? -res : res); +} diff --git a/lib/libm/src/s_lroundf.c b/lib/libm/src/s_lroundf.c new file mode 100644 index 00000000000..aee5ca0cd9b --- /dev/null +++ b/lib/libm/src/s_lroundf.c @@ -0,0 +1,83 @@ +/* $OpenBSD: s_lroundf.c,v 1.1 2008/07/21 20:29:14 martynas Exp $ */ +/* $NetBSD: lroundf.c,v 1.2 2004/10/13 15:18:32 drochner Exp $ */ + +/*- + * Copyright (c) 2004 + * Matthias Drochner. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include "math_private.h" + +#ifndef LROUNDNAME +#define LROUNDNAME lroundf +#define RESTYPE long int +#define RESTYPE_MIN LONG_MIN +#define RESTYPE_MAX LONG_MAX +#endif + +#define RESTYPE_BITS (sizeof(RESTYPE) * 8) + +RESTYPE +LROUNDNAME(float x) +{ + u_int32_t i0; + int e, s, shift; + RESTYPE res; + + GET_FLOAT_WORD(i0, x); + e = i0 >> SNG_FRACBITS; + s = e >> SNG_EXPBITS; + e = (e & 0xff) - SNG_EXP_BIAS; + + /* 1.0 x 2^-1 is the smallest number which can be rounded to 1 */ + if (e < -1) + return (0); + /* 1.0 x 2^31 (or 2^63) is already too large */ + if (e >= (int)RESTYPE_BITS - 1) + return (s ? RESTYPE_MIN : RESTYPE_MAX); /* ??? unspecified */ + + /* >= 2^23 is already an exact integer */ + if (e < SNG_FRACBITS) { + /* add 0.5, extraction below will truncate */ + x += (s ? -0.5 : 0.5); + } + + GET_FLOAT_WORD(i0, x); + e = ((i0 >> SNG_FRACBITS) & 0xff) - SNG_EXP_BIAS; + i0 &= 0x7fffff; + i0 |= (1 << SNG_FRACBITS); + + shift = e - SNG_FRACBITS; + if (shift >=0) + res = (shift < 32 ? (RESTYPE)i0 << shift : 0); + else + res = (shift > -32 ? i0 >> -shift : 0); + + return (s ? -res : res); +}