diff options
author | Paul E. Murphy <murphyp@linux.vnet.ibm.com> | 2016-09-08 08:48:08 -0500 |
---|---|---|
committer | Paul E. Murphy <murphyp@linux.vnet.ibm.com> | 2016-09-20 14:37:40 -0500 |
commit | 9f9834f582f87cc84bfaa11cff5f98fb661c288d (patch) | |
tree | 871f7a56da332d8fadb01fb81eae95a7ed6545c2 /math/s_ldexp_template.c | |
parent | 8837917cf17b083ac4178352c740b0bfeada4d7f (diff) | |
download | glibc-9f9834f582f87cc84bfaa11cff5f98fb661c288d.tar.gz |
Make ldexpF generic.
This one is a little more tricky since it is built both for
libm and libc, and exports multiple aliases.
To simplify aliasing, a new macro is introduced which handles
aliasing to two symbols. By default, it just applies
declare_mgen_alias to both target symbols.
Likewise, the makefile is tweaked a little to generate
templates for shared files too, and a new rule is added
to build m_*.c objects from the objpfx directory.
Verified there are no symbol or code changes using a script
to diff the *_ldexp* object files on s390x, aarch64, arm,
x86_64, and ppc64.
Diffstat (limited to 'math/s_ldexp_template.c')
-rw-r--r-- | math/s_ldexp_template.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/math/s_ldexp_template.c b/math/s_ldexp_template.c new file mode 100644 index 0000000000..42a83334c3 --- /dev/null +++ b/math/s_ldexp_template.c @@ -0,0 +1,32 @@ +/* @(#)s_ldexp.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#if defined(LIBM_SCCS) && !defined(lint) +static char rcsid[] = "$NetBSD: s_ldexp.c,v 1.6 1995/05/10 20:47:40 jtc Exp $"; +#endif + +#include <math.h> +#include <math_private.h> +#include <errno.h> + +FLOAT +M_SUF (__ldexp) (FLOAT value, int exp) +{ + if(!isfinite(value)||value==0) return value + value; + value = M_SCALBN(value,exp); + if(!isfinite(value)||value==0) __set_errno (ERANGE); + return value; +} + +declare_mgen_alias_2 (__ldexp, ldexp, scalbn); + +/* Note, versioning issues are punted to ldbl-opt in this case. */ |