Merge "Update to FreeBSD libm r336665."
This commit is contained in:
commit
3bf897e12d
63 changed files with 1947 additions and 1075 deletions
906
libc/NOTICE
906
libc/NOTICE
|
@ -3810,6 +3810,34 @@ SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2003 Dag-Erling Smørgrav
|
||||
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
|
||||
in this position and unchanged.
|
||||
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.
|
||||
3. The name of the author may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2003 David Schultz <das@FreeBSD.ORG>
|
||||
All rights reserved.
|
||||
|
||||
|
@ -3935,6 +3963,32 @@ Materiel Command, USAF, under agreement number F39502-99-1-0512.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2003, Steven G. Kargl
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 David Schultz <das@FreeBSD.ORG>
|
||||
All rights reserved.
|
||||
|
||||
|
@ -3961,6 +4015,32 @@ SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 Stefan Farfeleder
|
||||
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 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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
|
||||
Copyright (c) 1995,1999 by Internet Software Consortium.
|
||||
|
||||
|
@ -4192,6 +4272,58 @@ SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2005 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2005 Tim J. Robbins.
|
||||
All rights reserved.
|
||||
|
||||
|
@ -4261,6 +4393,32 @@ SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2005-2011 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2007 David Schultz
|
||||
All rights reserved.
|
||||
|
||||
|
@ -4287,6 +4445,93 @@ SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2007 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2007 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
Derived from s_modf.c, which has the following Copyright:
|
||||
====================================================
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2007 Steven G. Kargl
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2007 The NetBSD Foundation, Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
@ -4415,6 +4660,32 @@ Modified for Bionic by the Android Open Source Project
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2007-2008 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2007-2013 Bruce D. Evans
|
||||
All rights reserved.
|
||||
|
||||
|
@ -4483,6 +4754,22 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net>
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2008 Todd C. Miller <millert@openbsd.org>
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any
|
||||
|
@ -4755,6 +5042,58 @@ SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2011 David Schultz
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2011 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2011 Ed Schouten <ed@FreeBSD.org>
|
||||
David Chisnall <theraven@FreeBSD.org>
|
||||
All rights reserved.
|
||||
|
@ -4944,6 +5283,32 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2012 Stephen Montgomery-Smith <stephen@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2012 Stephen Montgomery-Smith <stephen@FreeBSD.ORG>
|
||||
Copyright (c) 2017 Mahdi Mokhtari <mmokhi@FreeBSD.org>
|
||||
All rights reserved.
|
||||
|
@ -5128,6 +5493,32 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2013 Bruce D. Evans
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (c) 2013 The NetBSD Foundation, Inc.
|
||||
All rights reserved.
|
||||
|
||||
|
@ -5682,521 +6073,6 @@ SUCH DAMAGE.
|
|||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2003, Steven G. Kargl
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2004 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2004 Stefan Farfeleder
|
||||
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 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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2004-2005 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2005 Bruce D. Evans and Steven G. Kargl
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2005 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2005-2008 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2005-2011 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2007 David Schultz
|
||||
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 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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2007 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2007 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
Derived from s_modf.c, which has the following Copyright:
|
||||
====================================================
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2007 Steven G. Kargl
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2007-2008 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2008 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2011 David Schultz
|
||||
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 unmodified, 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 ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2011 David Schultz <das@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
|
||||
Copyright (c) 2012 Stephen Montgomery-Smith <stephen@FreeBSD.ORG>
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
Copyright (c) 2003 Dag-Erling Smørgrav
|
||||
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
|
||||
in this position and unchanged.
|
||||
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.
|
||||
3. The name of the author may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
The author of this software is David M. Gay.
|
||||
|
||||
Copyright (C) 1998 by Lucent Technologies
|
||||
|
|
|
@ -384,6 +384,9 @@ float ynf(int __n, float __x);
|
|||
float gammaf_r(float __x, int* __sign);
|
||||
float lgammaf_r(float __x, int* __sign);
|
||||
float significandf(float __x);
|
||||
void sincos(double __x, double* __sin, double* __cos);
|
||||
void sincosf(float __x, float* __sin, float* __cos);
|
||||
void sincosl(long double __x, long double* __sin, long double* __cos);
|
||||
#endif
|
||||
|
||||
/* GNU extensions. */
|
||||
|
@ -402,9 +405,6 @@ float significandf(float __x);
|
|||
#define M_2_SQRTPIl 1.128379167095512573896158903121545172L /* 2/sqrt(pi) */
|
||||
#define M_SQRT2l 1.414213562373095048801688724209698079L /* sqrt(2) */
|
||||
#define M_SQRT1_2l 0.707106781186547524400844362104849039L /* 1/sqrt(2) */
|
||||
void sincos(double __x, double* __sin, double* __cos);
|
||||
void sincosf(float __x, float* __sin, float* __cos);
|
||||
void sincosl(long double __x, long double* __sin, long double* __cos);
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
|
|
@ -96,6 +96,8 @@ def extract_copyright_at(lines, i):
|
|||
line = re.sub("^ \* ", "", line)
|
||||
line = line.replace("** ", "")
|
||||
line = line.replace("# ", "")
|
||||
if "SPDX-License-Identifier:" in line:
|
||||
continue
|
||||
if line.startswith("++Copyright++"):
|
||||
continue
|
||||
line = line.replace("--Copyright--", "")
|
||||
|
|
|
@ -92,6 +92,8 @@ cc_library {
|
|||
"upstream-freebsd/lib/msun/src/s_cimag.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cimagf.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cimagl.c",
|
||||
"upstream-freebsd/lib/msun/src/s_clog.c",
|
||||
"upstream-freebsd/lib/msun/src/s_clogf.c",
|
||||
"upstream-freebsd/lib/msun/src/s_conj.c",
|
||||
"upstream-freebsd/lib/msun/src/s_conjf.c",
|
||||
"upstream-freebsd/lib/msun/src/s_conjl.c",
|
||||
|
@ -99,6 +101,9 @@ cc_library {
|
|||
"upstream-freebsd/lib/msun/src/s_copysignf.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cos.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cosf.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cpow.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cpowf.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cpowl.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cproj.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cprojf.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cprojl.c",
|
||||
|
@ -186,12 +191,6 @@ cc_library {
|
|||
"upstream-netbsd/lib/libm/complex/ccosl.c",
|
||||
"upstream-netbsd/lib/libm/complex/cephes_subrl.c",
|
||||
"upstream-netbsd/lib/libm/complex/cexpl.c",
|
||||
"upstream-netbsd/lib/libm/complex/clog.c",
|
||||
"upstream-netbsd/lib/libm/complex/clogf.c",
|
||||
"upstream-netbsd/lib/libm/complex/clogl.c",
|
||||
"upstream-netbsd/lib/libm/complex/cpow.c",
|
||||
"upstream-netbsd/lib/libm/complex/cpowf.c",
|
||||
"upstream-netbsd/lib/libm/complex/cpowl.c",
|
||||
"upstream-netbsd/lib/libm/complex/csinhl.c",
|
||||
"upstream-netbsd/lib/libm/complex/csinl.c",
|
||||
"upstream-netbsd/lib/libm/complex/ctanhl.c",
|
||||
|
@ -229,6 +228,7 @@ cc_library {
|
|||
"upstream-freebsd/lib/msun/src/s_atanl.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cbrtl.c",
|
||||
"upstream-freebsd/lib/msun/src/s_ceill.c",
|
||||
"upstream-freebsd/lib/msun/src/s_clogl.c",
|
||||
"upstream-freebsd/lib/msun/src/s_copysignl.c",
|
||||
"upstream-freebsd/lib/msun/src/e_coshl.c",
|
||||
"upstream-freebsd/lib/msun/src/s_cosl.c",
|
||||
|
@ -261,6 +261,7 @@ cc_library {
|
|||
|
||||
"upstream-freebsd/lib/msun/ld128/invtrig.c",
|
||||
"upstream-freebsd/lib/msun/ld128/e_lgammal_r.c",
|
||||
"upstream-freebsd/lib/msun/ld128/e_powl.c",
|
||||
"upstream-freebsd/lib/msun/ld128/k_cosl.c",
|
||||
"upstream-freebsd/lib/msun/ld128/k_sinl.c",
|
||||
"upstream-freebsd/lib/msun/ld128/k_tanl.c",
|
||||
|
|
|
@ -37,11 +37,11 @@ long long llroundl(long double a1) { return llround(a1); }
|
|||
long lroundl(long double a1) { return lround(a1); }
|
||||
long double modfl(long double a1, long double* a2) { double i; double f = modf(a1, &i); *a2 = i; return f; }
|
||||
float nexttowardf(float a1, long double a2) { return nextafterf(a1, (float) a2); }
|
||||
long double powl(long double x, long double y) { return pow(x, y); }
|
||||
long double roundl(long double a1) { return round(a1); }
|
||||
void sincosl(long double x, long double* s, long double* c) { return sincos(x, (double*) s, (double*) c); }
|
||||
void sincosl(long double x, long double* s, long double* c) { sincos(x, (double*) s, (double*) c); }
|
||||
|
||||
#endif // __LP64__
|
||||
|
||||
// FreeBSD doesn't have ld128 implementations of powl or tgammal, so both LP32 and LP64 need these.
|
||||
long double powl(long double x, long double y) { return pow(x, y); }
|
||||
// FreeBSD doesn't have an ld128 implementations of tgammal, so both LP32 and LP64 need this.
|
||||
long double tgammal(long double x) { return tgamma(x); }
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
// Some FreeBSD source includes <complex.h> and assumes <math.h> from that.
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
|
||||
#define __weak_reference(sym,alias) \
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-4-Clause
|
||||
*
|
||||
* Copyright (c) 1985, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
|
@ -33,7 +35,7 @@
|
|||
|
||||
/* @(#)exp.c 8.1 (Berkeley) 6/4/93 */
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/bsdsrc/b_exp.c 325966 2017-11-18 14:26:50Z pfg $");
|
||||
|
||||
|
||||
/* EXP(X)
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-4-Clause
|
||||
*
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
|
@ -33,10 +35,9 @@
|
|||
|
||||
/* @(#)log.c 8.2 (Berkeley) 11/30/93 */
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/bsdsrc/b_log.c 326670 2017-12-07 20:41:23Z dim $");
|
||||
|
||||
#include <math.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "mathimpl.h"
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*-
|
||||
* SPDX-License-Identifier: BSD-4-Clause
|
||||
*
|
||||
* Copyright (c) 1992, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
|
@ -33,7 +35,7 @@
|
|||
|
||||
/* @(#)gamma.c 8.1 (Berkeley) 6/4/93 */
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/bsdsrc/b_tgamma.c 325966 2017-11-18 14:26:50Z pfg $");
|
||||
|
||||
/*
|
||||
* This code by P. McIlroy, Oct 1992;
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-4-Clause
|
||||
*
|
||||
* Copyright (c) 1988, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
|
@ -31,7 +33,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)mathimpl.h 8.1 (Berkeley) 6/4/93
|
||||
* $FreeBSD$
|
||||
* $FreeBSD: head/lib/msun/bsdsrc/mathimpl.h 325966 2017-11-18 14:26:50Z pfg $
|
||||
*/
|
||||
|
||||
#ifndef _MATHIMPL_H_
|
||||
|
|
443
libm/upstream-freebsd/lib/msun/ld128/e_powl.c
Normal file
443
libm/upstream-freebsd/lib/msun/ld128/e_powl.c
Normal file
|
@ -0,0 +1,443 @@
|
|||
/*-
|
||||
* ====================================================
|
||||
* 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.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* powl(x,y) return x**y
|
||||
*
|
||||
* n
|
||||
* Method: Let x = 2 * (1+f)
|
||||
* 1. Compute and return log2(x) in two pieces:
|
||||
* log2(x) = w1 + w2,
|
||||
* where w1 has 113-53 = 60 bit trailing zeros.
|
||||
* 2. Perform y*log2(x) = n+y' by simulating muti-precision
|
||||
* arithmetic, where |y'|<=0.5.
|
||||
* 3. Return x**y = 2**n*exp(y'*log2)
|
||||
*
|
||||
* Special cases:
|
||||
* 1. (anything) ** 0 is 1
|
||||
* 2. (anything) ** 1 is itself
|
||||
* 3. (anything) ** NAN is NAN
|
||||
* 4. NAN ** (anything except 0) is NAN
|
||||
* 5. +-(|x| > 1) ** +INF is +INF
|
||||
* 6. +-(|x| > 1) ** -INF is +0
|
||||
* 7. +-(|x| < 1) ** +INF is +0
|
||||
* 8. +-(|x| < 1) ** -INF is +INF
|
||||
* 9. +-1 ** +-INF is NAN
|
||||
* 10. +0 ** (+anything except 0, NAN) is +0
|
||||
* 11. -0 ** (+anything except 0, NAN, odd integer) is +0
|
||||
* 12. +0 ** (-anything except 0, NAN) is +INF
|
||||
* 13. -0 ** (-anything except 0, NAN, odd integer) is +INF
|
||||
* 14. -0 ** (odd integer) = -( +0 ** (odd integer) )
|
||||
* 15. +INF ** (+anything except 0,NAN) is +INF
|
||||
* 16. +INF ** (-anything except 0,NAN) is +0
|
||||
* 17. -INF ** (anything) = -0 ** (-anything)
|
||||
* 18. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer)
|
||||
* 19. (-anything except 0 and inf) ** (non-integer) is NAN
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/ld128/e_powl.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "math_private.h"
|
||||
|
||||
static const long double bp[] = {
|
||||
1.0L,
|
||||
1.5L,
|
||||
};
|
||||
|
||||
/* log_2(1.5) */
|
||||
static const long double dp_h[] = {
|
||||
0.0,
|
||||
5.8496250072115607565592654282227158546448E-1L
|
||||
};
|
||||
|
||||
/* Low part of log_2(1.5) */
|
||||
static const long double dp_l[] = {
|
||||
0.0,
|
||||
1.0579781240112554492329533686862998106046E-16L
|
||||
};
|
||||
|
||||
static const long double zero = 0.0L,
|
||||
one = 1.0L,
|
||||
two = 2.0L,
|
||||
two113 = 1.0384593717069655257060992658440192E34L,
|
||||
huge = 1.0e3000L,
|
||||
tiny = 1.0e-3000L;
|
||||
|
||||
/* 3/2 log x = 3 z + z^3 + z^3 (z^2 R(z^2))
|
||||
z = (x-1)/(x+1)
|
||||
1 <= x <= 1.25
|
||||
Peak relative error 2.3e-37 */
|
||||
static const long double LN[] =
|
||||
{
|
||||
-3.0779177200290054398792536829702930623200E1L,
|
||||
6.5135778082209159921251824580292116201640E1L,
|
||||
-4.6312921812152436921591152809994014413540E1L,
|
||||
1.2510208195629420304615674658258363295208E1L,
|
||||
-9.9266909031921425609179910128531667336670E-1L
|
||||
};
|
||||
static const long double LD[] =
|
||||
{
|
||||
-5.129862866715009066465422805058933131960E1L,
|
||||
1.452015077564081884387441590064272782044E2L,
|
||||
-1.524043275549860505277434040464085593165E2L,
|
||||
7.236063513651544224319663428634139768808E1L,
|
||||
-1.494198912340228235853027849917095580053E1L
|
||||
/* 1.0E0 */
|
||||
};
|
||||
|
||||
/* exp(x) = 1 + x - x / (1 - 2 / (x - x^2 R(x^2)))
|
||||
0 <= x <= 0.5
|
||||
Peak relative error 5.7e-38 */
|
||||
static const long double PN[] =
|
||||
{
|
||||
5.081801691915377692446852383385968225675E8L,
|
||||
9.360895299872484512023336636427675327355E6L,
|
||||
4.213701282274196030811629773097579432957E4L,
|
||||
5.201006511142748908655720086041570288182E1L,
|
||||
9.088368420359444263703202925095675982530E-3L,
|
||||
};
|
||||
static const long double PD[] =
|
||||
{
|
||||
3.049081015149226615468111430031590411682E9L,
|
||||
1.069833887183886839966085436512368982758E8L,
|
||||
8.259257717868875207333991924545445705394E5L,
|
||||
1.872583833284143212651746812884298360922E3L,
|
||||
/* 1.0E0 */
|
||||
};
|
||||
|
||||
static const long double
|
||||
/* ln 2 */
|
||||
lg2 = 6.9314718055994530941723212145817656807550E-1L,
|
||||
lg2_h = 6.9314718055994528622676398299518041312695E-1L,
|
||||
lg2_l = 2.3190468138462996154948554638754786504121E-17L,
|
||||
ovt = 8.0085662595372944372e-0017L,
|
||||
/* 2/(3*log(2)) */
|
||||
cp = 9.6179669392597560490661645400126142495110E-1L,
|
||||
cp_h = 9.6179669392597555432899980587535537779331E-1L,
|
||||
cp_l = 5.0577616648125906047157785230014751039424E-17L;
|
||||
|
||||
long double
|
||||
powl(long double x, long double y)
|
||||
{
|
||||
long double z, ax, z_h, z_l, p_h, p_l;
|
||||
long double yy1, t1, t2, r, s, t, u, v, w;
|
||||
long double s2, s_h, s_l, t_h, t_l;
|
||||
int32_t i, j, k, yisint, n;
|
||||
u_int32_t ix, iy;
|
||||
int32_t hx, hy;
|
||||
ieee_quad_shape_type o, p, q;
|
||||
|
||||
p.value = x;
|
||||
hx = p.parts32.mswhi;
|
||||
ix = hx & 0x7fffffff;
|
||||
|
||||
q.value = y;
|
||||
hy = q.parts32.mswhi;
|
||||
iy = hy & 0x7fffffff;
|
||||
|
||||
|
||||
/* y==zero: x**0 = 1 */
|
||||
if ((iy | q.parts32.mswlo | q.parts32.lswhi | q.parts32.lswlo) == 0)
|
||||
return one;
|
||||
|
||||
/* 1.0**y = 1; -1.0**+-Inf = 1 */
|
||||
if (x == one)
|
||||
return one;
|
||||
if (x == -1.0L && iy == 0x7fff0000
|
||||
&& (q.parts32.mswlo | q.parts32.lswhi | q.parts32.lswlo) == 0)
|
||||
return one;
|
||||
|
||||
/* +-NaN return x+y */
|
||||
if ((ix > 0x7fff0000)
|
||||
|| ((ix == 0x7fff0000)
|
||||
&& ((p.parts32.mswlo | p.parts32.lswhi | p.parts32.lswlo) != 0))
|
||||
|| (iy > 0x7fff0000)
|
||||
|| ((iy == 0x7fff0000)
|
||||
&& ((q.parts32.mswlo | q.parts32.lswhi | q.parts32.lswlo) != 0)))
|
||||
return nan_mix(x, y);
|
||||
|
||||
/* determine if y is an odd int when x < 0
|
||||
* yisint = 0 ... y is not an integer
|
||||
* yisint = 1 ... y is an odd int
|
||||
* yisint = 2 ... y is an even int
|
||||
*/
|
||||
yisint = 0;
|
||||
if (hx < 0)
|
||||
{
|
||||
if (iy >= 0x40700000) /* 2^113 */
|
||||
yisint = 2; /* even integer y */
|
||||
else if (iy >= 0x3fff0000) /* 1.0 */
|
||||
{
|
||||
if (floorl (y) == y)
|
||||
{
|
||||
z = 0.5 * y;
|
||||
if (floorl (z) == z)
|
||||
yisint = 2;
|
||||
else
|
||||
yisint = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* special value of y */
|
||||
if ((q.parts32.mswlo | q.parts32.lswhi | q.parts32.lswlo) == 0)
|
||||
{
|
||||
if (iy == 0x7fff0000) /* y is +-inf */
|
||||
{
|
||||
if (((ix - 0x3fff0000) | p.parts32.mswlo | p.parts32.lswhi |
|
||||
p.parts32.lswlo) == 0)
|
||||
return y - y; /* +-1**inf is NaN */
|
||||
else if (ix >= 0x3fff0000) /* (|x|>1)**+-inf = inf,0 */
|
||||
return (hy >= 0) ? y : zero;
|
||||
else /* (|x|<1)**-,+inf = inf,0 */
|
||||
return (hy < 0) ? -y : zero;
|
||||
}
|
||||
if (iy == 0x3fff0000)
|
||||
{ /* y is +-1 */
|
||||
if (hy < 0)
|
||||
return one / x;
|
||||
else
|
||||
return x;
|
||||
}
|
||||
if (hy == 0x40000000)
|
||||
return x * x; /* y is 2 */
|
||||
if (hy == 0x3ffe0000)
|
||||
{ /* y is 0.5 */
|
||||
if (hx >= 0) /* x >= +0 */
|
||||
return sqrtl (x);
|
||||
}
|
||||
}
|
||||
|
||||
ax = fabsl (x);
|
||||
/* special value of x */
|
||||
if ((p.parts32.mswlo | p.parts32.lswhi | p.parts32.lswlo) == 0)
|
||||
{
|
||||
if (ix == 0x7fff0000 || ix == 0 || ix == 0x3fff0000)
|
||||
{
|
||||
z = ax; /*x is +-0,+-inf,+-1 */
|
||||
if (hy < 0)
|
||||
z = one / z; /* z = (1/|x|) */
|
||||
if (hx < 0)
|
||||
{
|
||||
if (((ix - 0x3fff0000) | yisint) == 0)
|
||||
{
|
||||
z = (z - z) / (z - z); /* (-1)**non-int is NaN */
|
||||
}
|
||||
else if (yisint == 1)
|
||||
z = -z; /* (x<0)**odd = -(|x|**odd) */
|
||||
}
|
||||
return z;
|
||||
}
|
||||
}
|
||||
|
||||
/* (x<0)**(non-int) is NaN */
|
||||
if (((((u_int32_t) hx >> 31) - 1) | yisint) == 0)
|
||||
return (x - x) / (x - x);
|
||||
|
||||
/* |y| is huge.
|
||||
2^-16495 = 1/2 of smallest representable value.
|
||||
If (1 - 1/131072)^y underflows, y > 1.4986e9 */
|
||||
if (iy > 0x401d654b)
|
||||
{
|
||||
/* if (1 - 2^-113)^y underflows, y > 1.1873e38 */
|
||||
if (iy > 0x407d654b)
|
||||
{
|
||||
if (ix <= 0x3ffeffff)
|
||||
return (hy < 0) ? huge * huge : tiny * tiny;
|
||||
if (ix >= 0x3fff0000)
|
||||
return (hy > 0) ? huge * huge : tiny * tiny;
|
||||
}
|
||||
/* over/underflow if x is not close to one */
|
||||
if (ix < 0x3ffeffff)
|
||||
return (hy < 0) ? huge * huge : tiny * tiny;
|
||||
if (ix > 0x3fff0000)
|
||||
return (hy > 0) ? huge * huge : tiny * tiny;
|
||||
}
|
||||
|
||||
n = 0;
|
||||
/* take care subnormal number */
|
||||
if (ix < 0x00010000)
|
||||
{
|
||||
ax *= two113;
|
||||
n -= 113;
|
||||
o.value = ax;
|
||||
ix = o.parts32.mswhi;
|
||||
}
|
||||
n += ((ix) >> 16) - 0x3fff;
|
||||
j = ix & 0x0000ffff;
|
||||
/* determine interval */
|
||||
ix = j | 0x3fff0000; /* normalize ix */
|
||||
if (j <= 0x3988)
|
||||
k = 0; /* |x|<sqrt(3/2) */
|
||||
else if (j < 0xbb67)
|
||||
k = 1; /* |x|<sqrt(3) */
|
||||
else
|
||||
{
|
||||
k = 0;
|
||||
n += 1;
|
||||
ix -= 0x00010000;
|
||||
}
|
||||
|
||||
o.value = ax;
|
||||
o.parts32.mswhi = ix;
|
||||
ax = o.value;
|
||||
|
||||
/* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
|
||||
u = ax - bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
|
||||
v = one / (ax + bp[k]);
|
||||
s = u * v;
|
||||
s_h = s;
|
||||
|
||||
o.value = s_h;
|
||||
o.parts32.lswlo = 0;
|
||||
o.parts32.lswhi &= 0xf8000000;
|
||||
s_h = o.value;
|
||||
/* t_h=ax+bp[k] High */
|
||||
t_h = ax + bp[k];
|
||||
o.value = t_h;
|
||||
o.parts32.lswlo = 0;
|
||||
o.parts32.lswhi &= 0xf8000000;
|
||||
t_h = o.value;
|
||||
t_l = ax - (t_h - bp[k]);
|
||||
s_l = v * ((u - s_h * t_h) - s_h * t_l);
|
||||
/* compute log(ax) */
|
||||
s2 = s * s;
|
||||
u = LN[0] + s2 * (LN[1] + s2 * (LN[2] + s2 * (LN[3] + s2 * LN[4])));
|
||||
v = LD[0] + s2 * (LD[1] + s2 * (LD[2] + s2 * (LD[3] + s2 * (LD[4] + s2))));
|
||||
r = s2 * s2 * u / v;
|
||||
r += s_l * (s_h + s);
|
||||
s2 = s_h * s_h;
|
||||
t_h = 3.0 + s2 + r;
|
||||
o.value = t_h;
|
||||
o.parts32.lswlo = 0;
|
||||
o.parts32.lswhi &= 0xf8000000;
|
||||
t_h = o.value;
|
||||
t_l = r - ((t_h - 3.0) - s2);
|
||||
/* u+v = s*(1+...) */
|
||||
u = s_h * t_h;
|
||||
v = s_l * t_h + t_l * s;
|
||||
/* 2/(3log2)*(s+...) */
|
||||
p_h = u + v;
|
||||
o.value = p_h;
|
||||
o.parts32.lswlo = 0;
|
||||
o.parts32.lswhi &= 0xf8000000;
|
||||
p_h = o.value;
|
||||
p_l = v - (p_h - u);
|
||||
z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */
|
||||
z_l = cp_l * p_h + p_l * cp + dp_l[k];
|
||||
/* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
|
||||
t = (long double) n;
|
||||
t1 = (((z_h + z_l) + dp_h[k]) + t);
|
||||
o.value = t1;
|
||||
o.parts32.lswlo = 0;
|
||||
o.parts32.lswhi &= 0xf8000000;
|
||||
t1 = o.value;
|
||||
t2 = z_l - (((t1 - t) - dp_h[k]) - z_h);
|
||||
|
||||
/* s (sign of result -ve**odd) = -1 else = 1 */
|
||||
s = one;
|
||||
if (((((u_int32_t) hx >> 31) - 1) | (yisint - 1)) == 0)
|
||||
s = -one; /* (-ve)**(odd int) */
|
||||
|
||||
/* split up y into yy1+y2 and compute (yy1+y2)*(t1+t2) */
|
||||
yy1 = y;
|
||||
o.value = yy1;
|
||||
o.parts32.lswlo = 0;
|
||||
o.parts32.lswhi &= 0xf8000000;
|
||||
yy1 = o.value;
|
||||
p_l = (y - yy1) * t1 + y * t2;
|
||||
p_h = yy1 * t1;
|
||||
z = p_l + p_h;
|
||||
o.value = z;
|
||||
j = o.parts32.mswhi;
|
||||
if (j >= 0x400d0000) /* z >= 16384 */
|
||||
{
|
||||
/* if z > 16384 */
|
||||
if (((j - 0x400d0000) | o.parts32.mswlo | o.parts32.lswhi |
|
||||
o.parts32.lswlo) != 0)
|
||||
return s * huge * huge; /* overflow */
|
||||
else
|
||||
{
|
||||
if (p_l + ovt > z - p_h)
|
||||
return s * huge * huge; /* overflow */
|
||||
}
|
||||
}
|
||||
else if ((j & 0x7fffffff) >= 0x400d01b9) /* z <= -16495 */
|
||||
{
|
||||
/* z < -16495 */
|
||||
if (((j - 0xc00d01bc) | o.parts32.mswlo | o.parts32.lswhi |
|
||||
o.parts32.lswlo)
|
||||
!= 0)
|
||||
return s * tiny * tiny; /* underflow */
|
||||
else
|
||||
{
|
||||
if (p_l <= z - p_h)
|
||||
return s * tiny * tiny; /* underflow */
|
||||
}
|
||||
}
|
||||
/* compute 2**(p_h+p_l) */
|
||||
i = j & 0x7fffffff;
|
||||
k = (i >> 16) - 0x3fff;
|
||||
n = 0;
|
||||
if (i > 0x3ffe0000)
|
||||
{ /* if |z| > 0.5, set n = [z+0.5] */
|
||||
n = floorl (z + 0.5L);
|
||||
t = n;
|
||||
p_h -= t;
|
||||
}
|
||||
t = p_l + p_h;
|
||||
o.value = t;
|
||||
o.parts32.lswlo = 0;
|
||||
o.parts32.lswhi &= 0xf8000000;
|
||||
t = o.value;
|
||||
u = t * lg2_h;
|
||||
v = (p_l - (t - p_h)) * lg2 + t * lg2_l;
|
||||
z = u + v;
|
||||
w = v - (z - u);
|
||||
/* exp(z) */
|
||||
t = z * z;
|
||||
u = PN[0] + t * (PN[1] + t * (PN[2] + t * (PN[3] + t * PN[4])));
|
||||
v = PD[0] + t * (PD[1] + t * (PD[2] + t * (PD[3] + t)));
|
||||
t1 = z - t * u / v;
|
||||
r = (z * t1) / (t1 - two) - (w + z * w);
|
||||
z = one - (r - z);
|
||||
o.value = z;
|
||||
j = o.parts32.mswhi;
|
||||
j += (n << 16);
|
||||
if ((j >> 16) <= 0)
|
||||
z = scalbnl (z, n); /* subnormal output */
|
||||
else
|
||||
{
|
||||
o.parts32.mswhi = j;
|
||||
z = o.value;
|
||||
}
|
||||
return s * z;
|
||||
}
|
|
@ -1,4 +1,6 @@
|
|||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
*
|
||||
* Copyright (c) 2008 David Schultz <das@FreeBSD.ORG>
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -25,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/ld128/invtrig.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
|
||||
#include "invtrig.h"
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
*
|
||||
* Copyright (c) 2008 David Schultz <das@FreeBSD.ORG>
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -23,7 +25,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
* $FreeBSD: head/lib/msun/ld128/invtrig.h 326219 2017-11-26 02:00:33Z pfg $
|
||||
*/
|
||||
|
||||
#include <float.h>
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
/* from: FreeBSD: head/lib/msun/ld128/s_expl.c 251345 2013-06-03 20:09:22Z kargl */
|
||||
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
*
|
||||
* Copyright (c) 2009-2013 Steven G. Kargl
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -29,7 +31,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/ld128/k_expl.h 275819 2014-12-16 09:21:56Z ed $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/ld128/k_expl.h 326219 2017-11-26 02:00:33Z pfg $");
|
||||
|
||||
/*
|
||||
* ld128 version of k_expl.h. See ../ld80/s_expl.c for most comments.
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
*
|
||||
* Copyright (c) 2005-2008 David Schultz <das@FreeBSD.ORG>
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -25,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/ld128/s_exp2l.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
|
||||
#include <float.h>
|
||||
#include <stdint.h>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
*
|
||||
* Copyright (c) 2009-2013 Steven G. Kargl
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -27,7 +29,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/ld128/s_expl.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
|
||||
/*
|
||||
* ld128 version of s_expl.c. See ../ld80/s_expl.c for most comments.
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
*
|
||||
* Copyright (c) 2007-2013 Bruce D. Evans
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -25,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/ld128/s_logl.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
|
||||
/**
|
||||
* Implementation of the natural logarithm of x for 128-bit format.
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
|
||||
*
|
||||
* Copyright (c) 2007 David Schultz
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -23,7 +25,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD$
|
||||
* $FreeBSD: head/lib/msun/ld128/s_nanl.c 326219 2017-11-26 02:00:33Z pfg $
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/catrig.c 327232 2017-12-27 03:23:41Z eadler $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/catrig.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
|
@ -300,7 +300,7 @@ casinh(double complex z)
|
|||
* C99 leaves it optional whether to raise invalid if one of
|
||||
* the arguments is not NaN, so we opt not to raise it.
|
||||
*/
|
||||
return (CMPLX(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLX(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
|
||||
|
@ -384,7 +384,7 @@ cacos(double complex z)
|
|||
* C99 leaves it optional whether to raise invalid if one of
|
||||
* the arguments is not NaN, so we opt not to raise it.
|
||||
*/
|
||||
return (CMPLX(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLX(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
|
||||
|
@ -601,7 +601,7 @@ catanh(double complex z)
|
|||
* C99 leaves it optional whether to raise invalid if one of
|
||||
* the arguments is not NaN, so we opt not to raise it.
|
||||
*/
|
||||
return (CMPLX(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLX(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON)
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/catrigf.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/catrigf.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
|
@ -163,7 +163,7 @@ casinhf(float complex z)
|
|||
return (CMPLXF(y, x + x));
|
||||
if (y == 0)
|
||||
return (CMPLXF(x + x, y));
|
||||
return (CMPLXF(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLXF(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
|
||||
|
@ -221,7 +221,7 @@ cacosf(float complex z)
|
|||
return (CMPLXF(x + x, -y));
|
||||
if (x == 0)
|
||||
return (CMPLXF(pio2_hi + pio2_lo, y + y));
|
||||
return (CMPLXF(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLXF(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
|
||||
|
@ -359,7 +359,7 @@ catanhf(float complex z)
|
|||
if (isinf(y))
|
||||
return (CMPLXF(copysignf(0, x),
|
||||
copysignf(pio2_hi + pio2_lo, y)));
|
||||
return (CMPLXF(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLXF(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON)
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/catrigl.c 323003 2017-08-29 22:32:29Z rlibby $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/catrigl.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
|
@ -182,7 +182,7 @@ casinhl(long double complex z)
|
|||
return (CMPLXL(y, x + x));
|
||||
if (y == 0)
|
||||
return (CMPLXL(x + x, y));
|
||||
return (CMPLXL(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLXL(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
|
||||
|
@ -241,7 +241,7 @@ cacosl(long double complex z)
|
|||
return (CMPLXL(x + x, -y));
|
||||
if (x == 0)
|
||||
return (CMPLXL(pio2_hi + pio2_lo, y + y));
|
||||
return (CMPLXL(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLXL(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON) {
|
||||
|
@ -380,7 +380,7 @@ catanhl(long double complex z)
|
|||
if (isinf(y))
|
||||
return (CMPLXL(copysignl(0, x),
|
||||
copysignl(pio2_hi + pio2_lo, y)));
|
||||
return (CMPLXL(x + 0.0L + (y + 0), x + 0.0L + (y + 0)));
|
||||
return (CMPLXL(nan_mix(x, y), nan_mix(x, y)));
|
||||
}
|
||||
|
||||
if (ax > RECIP_EPSILON || ay > RECIP_EPSILON)
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_atan2.c 329259 2018-02-14 07:59:30Z eadler $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_atan2.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
/* __ieee754_atan2(y,x)
|
||||
* Method :
|
||||
|
@ -70,7 +70,7 @@ __ieee754_atan2(double y, double x)
|
|||
iy = hy&0x7fffffff;
|
||||
if(((ix|((lx|-lx)>>31))>0x7ff00000)||
|
||||
((iy|((ly|-ly)>>31))>0x7ff00000)) /* x or y is NaN */
|
||||
return x+y;
|
||||
return nan_mix(x, y);
|
||||
if(hx==0x3ff00000&&lx==0) return atan(y); /* x=1.0 */
|
||||
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_atan2f.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
@ -41,7 +41,7 @@ __ieee754_atan2f(float y, float x)
|
|||
iy = hy&0x7fffffff;
|
||||
if((ix>0x7f800000)||
|
||||
(iy>0x7f800000)) /* x or y is NaN */
|
||||
return x+y;
|
||||
return nan_mix(x, y);
|
||||
if(hx==0x3f800000) return atanf(y); /* x=1.0 */
|
||||
m = ((hy>>31)&1)|((hx>>30)&2); /* 2*sign(x)+sign(y) */
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_atan2l.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
/*
|
||||
* See comments in e_atan2.c.
|
||||
|
@ -62,7 +62,7 @@ atan2l(long double y, long double x)
|
|||
((ux.bits.manh&~LDBL_NBIT)|ux.bits.manl)!=0) || /* x is NaN */
|
||||
(expty==BIAS+LDBL_MAX_EXP &&
|
||||
((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl)!=0)) /* y is NaN */
|
||||
return x+y;
|
||||
return nan_mix(x, y);
|
||||
if (expsignx==BIAS && ((ux.bits.manh&~LDBL_NBIT)|ux.bits.manl)==0)
|
||||
return atanl(y); /* x=1.0 */
|
||||
m = ((expsigny>>15)&1)|((expsignx>>14)&2); /* 2*sign(x)+sign(y) */
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_fmod.c 305380 2016-09-04 12:01:32Z bde $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_fmod.c 336663 2018-07-24 10:10:16Z bde $");
|
||||
|
||||
/*
|
||||
* __ieee754_fmod(x,y)
|
||||
|
@ -42,7 +42,7 @@ __ieee754_fmod(double x, double y)
|
|||
/* purge off exception values */
|
||||
if((hy|ly)==0||(hx>=0x7ff00000)|| /* y=0,or x not finite */
|
||||
((hy|((ly|-ly)>>31))>0x7ff00000)) /* or y is NaN */
|
||||
return (x*y)/(x*y);
|
||||
return nan_mix_op(x, y, *)/nan_mix_op(x, y, *);
|
||||
if(hx<=hy) {
|
||||
if((hx<hy)||(lx<ly)) return x; /* |x|<|y| return x */
|
||||
if(lx==ly)
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_fmodf.c 336663 2018-07-24 10:10:16Z bde $");
|
||||
|
||||
/*
|
||||
* __ieee754_fmodf(x,y)
|
||||
|
@ -41,7 +41,7 @@ __ieee754_fmodf(float x, float y)
|
|||
/* purge off exception values */
|
||||
if(hy==0||(hx>=0x7f800000)|| /* y=0,or x not finite */
|
||||
(hy>0x7f800000)) /* or y is NaN */
|
||||
return (x*y)/(x*y);
|
||||
return nan_mix_op(x, y, *)/nan_mix_op(x, y, *);
|
||||
if(hx<hy) return x; /* |x|<|y| return x */
|
||||
if(hx==hy)
|
||||
return Zero[(u_int32_t)sx>>31]; /* |x|=|y| return x*0*/
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_fmodl.c 336663 2018-07-24 10:10:16Z bde $");
|
||||
|
||||
#include <float.h>
|
||||
#include <stdint.h>
|
||||
|
@ -79,7 +79,7 @@ fmodl(long double x, long double y)
|
|||
(ux.bits.exp == BIAS + LDBL_MAX_EXP) || /* or x not finite */
|
||||
(uy.bits.exp == BIAS + LDBL_MAX_EXP &&
|
||||
((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl)!=0)) /* or y is NaN */
|
||||
return (x*y)/(x*y);
|
||||
return nan_mix_op(x, y, *)/nan_mix_op(x, y, *);
|
||||
if(ux.bits.exp<=uy.bits.exp) {
|
||||
if((ux.bits.exp<uy.bits.exp) ||
|
||||
(ux.bits.manh<=uy.bits.manh &&
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_hypot.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
/* __ieee754_hypot(x,y)
|
||||
*
|
||||
|
@ -70,7 +70,7 @@ __ieee754_hypot(double x, double y)
|
|||
if(ha >= 0x7ff00000) { /* Inf or NaN */
|
||||
u_int32_t low;
|
||||
/* Use original arg order iff result is NaN; quieten sNaNs. */
|
||||
w = fabs(x+0.0)-fabs(y+0.0);
|
||||
w = fabsl(x+0.0L)-fabs(y+0);
|
||||
GET_LOW_WORD(low,a);
|
||||
if(((ha&0xfffff)|low)==0) w = a;
|
||||
GET_LOW_WORD(low,b);
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_hypotf.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
@ -37,7 +37,7 @@ __ieee754_hypotf(float x, float y)
|
|||
if(ha > 0x58800000) { /* a>2**50 */
|
||||
if(ha >= 0x7f800000) { /* Inf or NaN */
|
||||
/* Use original arg order iff result is NaN; quieten sNaNs. */
|
||||
w = fabsf(x+0.0F)-fabsf(y+0.0F);
|
||||
w = fabsl(x+0.0L)-fabsf(y+0);
|
||||
if(ha == 0x7f800000) w = a;
|
||||
if(hb == 0x7f800000) w = b;
|
||||
return w;
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_hypotl.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
/* long double version of hypot(). See e_hypot.c for most comments. */
|
||||
|
||||
|
@ -64,7 +64,7 @@ hypotl(long double x, long double y)
|
|||
if(ha >= ESW(MAX_EXP)) { /* Inf or NaN */
|
||||
man_t manh, manl;
|
||||
/* Use original arg order iff result is NaN; quieten sNaNs. */
|
||||
w = fabsl(x+0.0)-fabsl(y+0.0);
|
||||
w = fabsl(x+0.0L)-fabsl(y+0);
|
||||
GET_LDBL_MAN(manh,manl,a);
|
||||
if (manh == LDBL_NBIT && manl == 0) w = a;
|
||||
GET_LDBL_MAN(manh,manl,b);
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/* @(#)e_j0.c 1.3 95/01/18 */
|
||||
/*
|
||||
* ====================================================
|
||||
|
@ -6,13 +5,13 @@
|
|||
*
|
||||
* Developed at SunSoft, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_j0.c 283032 2015-05-17 16:27:06Z kargl $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_j0.c 336089 2018-07-08 16:26:13Z markj $");
|
||||
|
||||
/* __ieee754_j0(x), __ieee754_y0(x)
|
||||
* Bessel function of the first and second kinds of order zero.
|
||||
|
@ -33,20 +32,20 @@ __FBSDID("$FreeBSD: head/lib/msun/src/e_j0.c 283032 2015-05-17 16:27:06Z kargl $
|
|||
* (To avoid cancellation, use
|
||||
* sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
|
||||
* to compute the worse one.)
|
||||
*
|
||||
*
|
||||
* 3 Special cases
|
||||
* j0(nan)= nan
|
||||
* j0(0) = 1
|
||||
* j0(inf) = 0
|
||||
*
|
||||
*
|
||||
* Method -- y0(x):
|
||||
* 1. For x<2.
|
||||
* Since
|
||||
* Since
|
||||
* y0(x) = 2/pi*(j0(x)*(ln(x/2)+Euler) + x^2/4 - ...)
|
||||
* therefore y0(x)-2/pi*j0(x)*ln(x) is an even function.
|
||||
* We use the following function to approximate y0,
|
||||
* y0(x) = U(z)/V(z) + (2/pi)*(j0(x)*ln(x)), z= x^2
|
||||
* where
|
||||
* where
|
||||
* U(z) = u00 + u01*z + ... + u06*z^6
|
||||
* V(z) = 1 + v01*z + ... + v04*z^4
|
||||
* with absolute approximation error bounded by 2**-72.
|
||||
|
@ -71,7 +70,7 @@ huge = 1e300,
|
|||
one = 1.0,
|
||||
invsqrtpi= 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
|
||||
tpi = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
|
||||
/* R0/S0 on [0, 2.00] */
|
||||
/* R0/S0 on [0, 2.00] */
|
||||
R02 = 1.56249999999999947958e-02, /* 0x3F8FFFFF, 0xFFFFFFFD */
|
||||
R03 = -1.89979294238854721751e-04, /* 0xBF28E6A5, 0xB61AC6E9 */
|
||||
R04 = 1.82954049532700665670e-06, /* 0x3EBEB1D1, 0x0C503919 */
|
||||
|
@ -157,7 +156,7 @@ __ieee754_y0(double x)
|
|||
* y0(Inf) = 0.
|
||||
* y0(-Inf) = NaN and raise invalid exception.
|
||||
*/
|
||||
if(ix>=0x7ff00000) return vone/(x+x*x);
|
||||
if(ix>=0x7ff00000) return vone/(x+x*x);
|
||||
/* y0(+-0) = -inf and raise divide-by-zero exception. */
|
||||
if((ix|lx)==0) return -one/vzero;
|
||||
/* y0(x<0) = NaN and raise invalid exception. */
|
||||
|
@ -293,7 +292,7 @@ pzero(double x)
|
|||
s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
|
||||
return one+ r/s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* For x >= 8, the asymptotic expansions of qzero is
|
||||
* -1/8 s + 75/1024 s^3 - ..., where s = 1/x.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/* @(#)e_j1.c 1.3 95/01/18 */
|
||||
/*
|
||||
* ====================================================
|
||||
|
@ -6,13 +5,13 @@
|
|||
*
|
||||
* Developed at SunSoft, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_j1.c 283032 2015-05-17 16:27:06Z kargl $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_j1.c 336089 2018-07-08 16:26:13Z markj $");
|
||||
|
||||
/* __ieee754_j1(x), __ieee754_y1(x)
|
||||
* Bessel function of the first and second kinds of order zero.
|
||||
|
@ -34,16 +33,16 @@ __FBSDID("$FreeBSD: head/lib/msun/src/e_j1.c 283032 2015-05-17 16:27:06Z kargl $
|
|||
* (To avoid cancellation, use
|
||||
* sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
|
||||
* to compute the worse one.)
|
||||
*
|
||||
*
|
||||
* 3 Special cases
|
||||
* j1(nan)= nan
|
||||
* j1(0) = 0
|
||||
* j1(inf) = 0
|
||||
*
|
||||
*
|
||||
* Method -- y1(x):
|
||||
* 1. screen out x<=0 cases: y1(0)=-inf, y1(x<0)=NaN
|
||||
* 1. screen out x<=0 cases: y1(0)=-inf, y1(x<0)=NaN
|
||||
* 2. For x<2.
|
||||
* Since
|
||||
* Since
|
||||
* y1(x) = 2/pi*(j1(x)*(ln(x/2)+Euler)-1/x-x/2+5/64*x^3-...)
|
||||
* therefore y1(x)-2/pi*j1(x)*ln(x)-1/x is an odd function.
|
||||
* We use the following function to approximate y1,
|
||||
|
@ -154,7 +153,7 @@ __ieee754_y1(double x)
|
|||
* y1(Inf) = 0.
|
||||
* y1(-Inf) = NaN and raise invalid exception.
|
||||
*/
|
||||
if(ix>=0x7ff00000) return vone/(x+x*x);
|
||||
if(ix>=0x7ff00000) return vone/(x+x*x);
|
||||
/* y1(+-0) = -inf and raise divide-by-zero exception. */
|
||||
if((ix|lx)==0) return -one/vzero;
|
||||
/* y1(x<0) = NaN and raise invalid exception. */
|
||||
|
@ -186,10 +185,10 @@ __ieee754_y1(double x)
|
|||
z = invsqrtpi*(u*ss+v*cc)/sqrt(x);
|
||||
}
|
||||
return z;
|
||||
}
|
||||
}
|
||||
if(ix<=0x3c900000) { /* x < 2**-54 */
|
||||
return(-tpi/x);
|
||||
}
|
||||
}
|
||||
z = x*x;
|
||||
u = U0[0]+z*(U0[1]+z*(U0[2]+z*(U0[3]+z*U0[4])));
|
||||
v = one+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4]))));
|
||||
|
@ -287,7 +286,7 @@ pone(double x)
|
|||
s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
|
||||
return one+ r/s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* For x >= 8, the asymptotic expansions of qone is
|
||||
* 3/8 s - 105/1024 s^3 - ..., where s = 1/x.
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_j1f.c 283032 2015-05-17 16:27:06Z kargl $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_j1f.c 336089 2018-07-08 16:26:13Z markj $");
|
||||
|
||||
/*
|
||||
* See e_j1.c for complete comments.
|
||||
|
@ -32,7 +32,7 @@ huge = 1e30,
|
|||
one = 1.0,
|
||||
invsqrtpi= 5.6418961287e-01, /* 0x3f106ebb */
|
||||
tpi = 6.3661974669e-01, /* 0x3f22f983 */
|
||||
/* R0/S0 on [0,2] */
|
||||
/* R0/S0 on [0,2] */
|
||||
r00 = -6.2500000000e-02, /* 0xbd800000 */
|
||||
r01 = 1.4070566976e-03, /* 0x3ab86cfd */
|
||||
r02 = -1.5995563444e-05, /* 0xb7862e36 */
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/* @(#)e_jn.c 1.4 95/01/18 */
|
||||
/*
|
||||
* ====================================================
|
||||
|
@ -6,19 +5,19 @@
|
|||
*
|
||||
* Developed at SunSoft, a Sun Microsystems, Inc. business.
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software is freely granted, provided that this notice
|
||||
* software is freely granted, provided that this notice
|
||||
* is preserved.
|
||||
* ====================================================
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_jn.c 279856 2015-03-10 17:10:54Z kargl $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_jn.c 336089 2018-07-08 16:26:13Z markj $");
|
||||
|
||||
/*
|
||||
* __ieee754_jn(n, x), __ieee754_yn(n, x)
|
||||
* floating point Bessel's function of the 1st and 2nd kind
|
||||
* of order n
|
||||
*
|
||||
*
|
||||
* Special cases:
|
||||
* y0(0)=y1(0)=yn(n,0) = -inf with division by zero signal;
|
||||
* y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
|
||||
|
@ -37,7 +36,6 @@ __FBSDID("$FreeBSD: head/lib/msun/src/e_jn.c 279856 2015-03-10 17:10:54Z kargl $
|
|||
* yn(n,x) is similar in all respects, except
|
||||
* that forward recursion is used for all
|
||||
* values of n>1.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "math.h"
|
||||
|
@ -66,7 +64,7 @@ __ieee754_jn(int n, double x)
|
|||
ix = 0x7fffffff&hx;
|
||||
/* if J(n,NaN) is NaN */
|
||||
if((ix|((u_int32_t)(lx|-lx))>>31)>0x7ff00000) return x+x;
|
||||
if(n<0){
|
||||
if(n<0){
|
||||
n = -n;
|
||||
x = -x;
|
||||
hx ^= 0x80000000;
|
||||
|
@ -77,14 +75,14 @@ __ieee754_jn(int n, double x)
|
|||
x = fabs(x);
|
||||
if((ix|lx)==0||ix>=0x7ff00000) /* if x is 0 or inf */
|
||||
b = zero;
|
||||
else if((double)n<=x) {
|
||||
else if((double)n<=x) {
|
||||
/* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
|
||||
if(ix>=0x52D00000) { /* x > 2**302 */
|
||||
/* (x >> n**2)
|
||||
/* (x >> n**2)
|
||||
* Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
|
||||
* Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
|
||||
* Let s=sin(x), c=cos(x),
|
||||
* xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
|
||||
* Let s=sin(x), c=cos(x),
|
||||
* xn=x-(2n+1)*pi/4, sqt2 = sqrt(2), then
|
||||
*
|
||||
* n sin(xn)*sqt2 cos(xn)*sqt2
|
||||
* ----------------------------------
|
||||
|
@ -100,7 +98,7 @@ __ieee754_jn(int n, double x)
|
|||
case 3: temp = cos(x)-sin(x); break;
|
||||
}
|
||||
b = invsqrtpi*temp/sqrt(x);
|
||||
} else {
|
||||
} else {
|
||||
a = __ieee754_j0(x);
|
||||
b = __ieee754_j1(x);
|
||||
for(i=1;i<n;i++){
|
||||
|
@ -111,7 +109,7 @@ __ieee754_jn(int n, double x)
|
|||
}
|
||||
} else {
|
||||
if(ix<0x3e100000) { /* x < 2**-29 */
|
||||
/* x is tiny, return the first Taylor expansion of J(n,x)
|
||||
/* x is tiny, return the first Taylor expansion of J(n,x)
|
||||
* J(n,x) = 1/n!*(x/2)^n - ...
|
||||
*/
|
||||
if(n>33) /* underflow */
|
||||
|
@ -126,14 +124,14 @@ __ieee754_jn(int n, double x)
|
|||
}
|
||||
} else {
|
||||
/* use backward recurrence */
|
||||
/* x x^2 x^2
|
||||
/* x x^2 x^2
|
||||
* J(n,x)/J(n-1,x) = ---- ------ ------ .....
|
||||
* 2n - 2(n+1) - 2(n+2)
|
||||
*
|
||||
* 1 1 1
|
||||
* 1 1 1
|
||||
* (for large x) = ---- ------ ------ .....
|
||||
* 2n 2(n+1) 2(n+2)
|
||||
* -- - ------ - ------ -
|
||||
* -- - ------ - ------ -
|
||||
* x x x
|
||||
*
|
||||
* Let w = 2n/x and h=2/x, then the above quotient
|
||||
|
@ -149,9 +147,9 @@ __ieee754_jn(int n, double x)
|
|||
* To determine how many terms needed, let
|
||||
* Q(0) = w, Q(1) = w(w+h) - 1,
|
||||
* Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
|
||||
* When Q(k) > 1e4 good for single
|
||||
* When Q(k) > 1e9 good for double
|
||||
* When Q(k) > 1e17 good for quadruple
|
||||
* When Q(k) > 1e4 good for single
|
||||
* When Q(k) > 1e9 good for double
|
||||
* When Q(k) > 1e17 good for quadruple
|
||||
*/
|
||||
/* determine k */
|
||||
double t,v;
|
||||
|
@ -237,11 +235,11 @@ __ieee754_yn(int n, double x)
|
|||
if(n==1) return(sign*__ieee754_y1(x));
|
||||
if(ix==0x7ff00000) return zero;
|
||||
if(ix>=0x52D00000) { /* x > 2**302 */
|
||||
/* (x >> n**2)
|
||||
/* (x >> n**2)
|
||||
* Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
|
||||
* Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
|
||||
* Let s=sin(x), c=cos(x),
|
||||
* xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
|
||||
* Let s=sin(x), c=cos(x),
|
||||
* xn=x-(2n+1)*pi/4, sqt2 = sqrt(2), then
|
||||
*
|
||||
* n sin(xn)*sqt2 cos(xn)*sqt2
|
||||
* ----------------------------------
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_pow.c 326482 2017-12-03 01:56:03Z emaste $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_pow.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
/* __ieee754_pow(x,y) return x**y
|
||||
*
|
||||
|
@ -57,6 +57,7 @@ __FBSDID("$FreeBSD: head/lib/msun/src/e_pow.c 326482 2017-12-03 01:56:03Z emaste
|
|||
* to produce the hexadecimal values shown.
|
||||
*/
|
||||
|
||||
#include <float.h>
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
|
@ -65,6 +66,9 @@ bp[] = {1.0, 1.5,},
|
|||
dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */
|
||||
dp_l[] = { 0.0, 1.35003920212974897128e-08,}, /* 0x3E4CFDEB, 0x43CFD006 */
|
||||
zero = 0.0,
|
||||
half = 0.5,
|
||||
qrtr = 0.25,
|
||||
thrd = 3.3333333333333331e-01, /* 0x3fd55555, 0x55555555 */
|
||||
one = 1.0,
|
||||
two = 2.0,
|
||||
two53 = 9007199254740992.0, /* 0x43400000, 0x00000000 */
|
||||
|
@ -115,7 +119,7 @@ __ieee754_pow(double x, double y)
|
|||
/* y!=zero: result is NaN if either arg is NaN */
|
||||
if(ix > 0x7ff00000 || ((ix==0x7ff00000)&&(lx!=0)) ||
|
||||
iy > 0x7ff00000 || ((iy==0x7ff00000)&&(ly!=0)))
|
||||
return (x+0.0)+(y+0.0);
|
||||
return nan_mix(x, y);
|
||||
|
||||
/* determine if y is an odd int when x < 0
|
||||
* yisint = 0 ... y is not an integer
|
||||
|
@ -197,7 +201,7 @@ __ieee754_pow(double x, double y)
|
|||
/* now |1-x| is tiny <= 2**-20, suffice to compute
|
||||
log(x) by x-x^2/2+x^3/3-x^4/4 */
|
||||
t = ax-one; /* t has 20 trailing zeros */
|
||||
w = (t*t)*(0.5-t*(0.3333333333333333333333-t*0.25));
|
||||
w = (t*t)*(half-t*(thrd-t*qrtr));
|
||||
u = ivln2_h*t; /* ivln2_h has 21 sig. bits */
|
||||
v = t*ivln2_l-w*ivln2;
|
||||
t1 = u+v;
|
||||
|
@ -234,9 +238,9 @@ __ieee754_pow(double x, double y)
|
|||
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
|
||||
r += s_l*(s_h+ss);
|
||||
s2 = s_h*s_h;
|
||||
t_h = 3.0+s2+r;
|
||||
t_h = 3+s2+r;
|
||||
SET_LOW_WORD(t_h,0);
|
||||
t_l = r-((t_h-3.0)-s2);
|
||||
t_l = r-((t_h-3)-s2);
|
||||
/* u+v = ss*(1+...) */
|
||||
u = s_h*t_h;
|
||||
v = s_l*t_h+t_l*ss;
|
||||
|
@ -247,7 +251,7 @@ __ieee754_pow(double x, double y)
|
|||
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
|
||||
z_l = cp_l*p_h+p_l*cp+dp_l[k];
|
||||
/* log2(ax) = (ss+..)*2/(3*log2) = n + dp_h + z_h + z_l */
|
||||
t = (double)n;
|
||||
t = n;
|
||||
t1 = (((z_h+z_l)+dp_h[k])+t);
|
||||
SET_LOW_WORD(t1,0);
|
||||
t2 = z_l-(((t1-t)-dp_h[k])-z_h);
|
||||
|
@ -304,3 +308,7 @@ __ieee754_pow(double x, double y)
|
|||
else SET_HIGH_WORD(z,j);
|
||||
return s*z;
|
||||
}
|
||||
|
||||
#if (LDBL_MANT_DIG == 53)
|
||||
__weak_reference(pow, powl);
|
||||
#endif
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_powf.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
@ -24,6 +24,9 @@ bp[] = {1.0, 1.5,},
|
|||
dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */
|
||||
dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */
|
||||
zero = 0.0,
|
||||
half = 0.5,
|
||||
qrtr = 0.25,
|
||||
thrd = 3.33333343e-01, /* 0x3eaaaaab */
|
||||
one = 1.0,
|
||||
two = 2.0,
|
||||
two24 = 16777216.0, /* 0x4b800000 */
|
||||
|
@ -73,7 +76,7 @@ __ieee754_powf(float x, float y)
|
|||
/* y!=zero: result is NaN if either arg is NaN */
|
||||
if(ix > 0x7f800000 ||
|
||||
iy > 0x7f800000)
|
||||
return (x+0.0F)+(y+0.0F);
|
||||
return nan_mix(x, y);
|
||||
|
||||
/* determine if y is an odd int when x < 0
|
||||
* yisint = 0 ... y is not an integer
|
||||
|
@ -138,7 +141,7 @@ __ieee754_powf(float x, float y)
|
|||
/* now |1-x| is tiny <= 2**-20, suffice to compute
|
||||
log(x) by x-x^2/2+x^3/3-x^4/4 */
|
||||
t = ax-1; /* t has 20 trailing zeros */
|
||||
w = (t*t)*((float)0.5-t*((float)0.333333333333-t*(float)0.25));
|
||||
w = (t*t)*(half-t*(thrd-t*qrtr));
|
||||
u = ivln2_h*t; /* ivln2_h has 16 sig. bits */
|
||||
v = t*ivln2_l-w*ivln2;
|
||||
t1 = u+v;
|
||||
|
@ -177,10 +180,10 @@ __ieee754_powf(float x, float y)
|
|||
r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
|
||||
r += s_l*(s_h+s);
|
||||
s2 = s_h*s_h;
|
||||
t_h = (float)3.0+s2+r;
|
||||
t_h = 3+s2+r;
|
||||
GET_FLOAT_WORD(is,t_h);
|
||||
SET_FLOAT_WORD(t_h,is&0xfffff000);
|
||||
t_l = r-((t_h-(float)3.0)-s2);
|
||||
t_l = r-((t_h-3)-s2);
|
||||
/* u+v = s*(1+...) */
|
||||
u = s_h*t_h;
|
||||
v = s_l*t_h+t_l*s;
|
||||
|
@ -192,7 +195,7 @@ __ieee754_powf(float x, float y)
|
|||
z_h = cp_h*p_h; /* cp_h+cp_l = 2/(3*log2) */
|
||||
z_l = cp_l*p_h+p_l*cp+dp_l[k];
|
||||
/* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
|
||||
t = (float)n;
|
||||
t = n;
|
||||
t1 = (((z_h+z_l)+dp_h[k])+t);
|
||||
GET_FLOAT_WORD(is,t1);
|
||||
SET_FLOAT_WORD(t1,is&0xfffff000);
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_remainder.c 336663 2018-07-24 10:10:16Z bde $");
|
||||
|
||||
/* __ieee754_remainder(x,p)
|
||||
* Return :
|
||||
|
@ -45,11 +45,11 @@ __ieee754_remainder(double x, double p)
|
|||
hx &= 0x7fffffff;
|
||||
|
||||
/* purge off exception values */
|
||||
if((hp|lp)==0) return (x*p)/(x*p); /* p = 0 */
|
||||
if((hx>=0x7ff00000)|| /* x not finite */
|
||||
if(((hp|lp)==0)|| /* p = 0 */
|
||||
(hx>=0x7ff00000)|| /* x not finite */
|
||||
((hp>=0x7ff00000)&& /* p is NaN */
|
||||
(((hp-0x7ff00000)|lp)!=0)))
|
||||
return ((long double)x*p)/((long double)x*p);
|
||||
return nan_mix_op(x, p, *)/nan_mix_op(x, p, *);
|
||||
|
||||
|
||||
if (hp<=0x7fdfffff) x = __ieee754_fmod(x,p+p); /* now x < 2p */
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/e_remainderf.c 336663 2018-07-24 10:10:16Z bde $");
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
@ -36,10 +36,10 @@ __ieee754_remainderf(float x, float p)
|
|||
hx &= 0x7fffffff;
|
||||
|
||||
/* purge off exception values */
|
||||
if(hp==0) return (x*p)/(x*p); /* p = 0 */
|
||||
if((hx>=0x7f800000)|| /* x not finite */
|
||||
if((hp==0)|| /* p = 0 */
|
||||
(hx>=0x7f800000)|| /* x not finite */
|
||||
((hp>0x7f800000))) /* p is NaN */
|
||||
return ((long double)x*p)/((long double)x*p);
|
||||
return nan_mix_op(x, p, *)/nan_mix_op(x, p, *);
|
||||
|
||||
|
||||
if (hp<=0x7effffff) x = __ieee754_fmodf(x,p+p); /* now x < 2p */
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
/*
|
||||
* from: @(#)fdlibm.h 5.1 93/09/24
|
||||
* $FreeBSD: head/lib/msun/src/math_private.h 319047 2017-05-28 06:13:38Z mmel $
|
||||
* $FreeBSD: head/lib/msun/src/math_private.h 336663 2018-07-24 10:10:16Z bde $
|
||||
*/
|
||||
|
||||
#ifndef _MATH_PRIVATE_H_
|
||||
|
@ -48,6 +48,47 @@
|
|||
#define IEEE_WORD_ORDER BYTE_ORDER
|
||||
#endif
|
||||
|
||||
/* A union which permits us to convert between a long double and
|
||||
four 32 bit ints. */
|
||||
|
||||
#if IEEE_WORD_ORDER == BIG_ENDIAN
|
||||
|
||||
typedef union
|
||||
{
|
||||
long double value;
|
||||
struct {
|
||||
u_int32_t mswhi;
|
||||
u_int32_t mswlo;
|
||||
u_int32_t lswhi;
|
||||
u_int32_t lswlo;
|
||||
} parts32;
|
||||
struct {
|
||||
u_int64_t msw;
|
||||
u_int64_t lsw;
|
||||
} parts64;
|
||||
} ieee_quad_shape_type;
|
||||
|
||||
#endif
|
||||
|
||||
#if IEEE_WORD_ORDER == LITTLE_ENDIAN
|
||||
|
||||
typedef union
|
||||
{
|
||||
long double value;
|
||||
struct {
|
||||
u_int32_t lswlo;
|
||||
u_int32_t lswhi;
|
||||
u_int32_t mswlo;
|
||||
u_int32_t mswhi;
|
||||
} parts32;
|
||||
struct {
|
||||
u_int64_t lsw;
|
||||
u_int64_t msw;
|
||||
} parts64;
|
||||
} ieee_quad_shape_type;
|
||||
|
||||
#endif
|
||||
|
||||
#if IEEE_WORD_ORDER == BIG_ENDIAN
|
||||
|
||||
typedef union
|
||||
|
@ -294,8 +335,9 @@ do { \
|
|||
|
||||
/* Support switching the mode to FP_PE if necessary. */
|
||||
#if defined(__i386__) && !defined(NO_FPSETPREC)
|
||||
#define ENTERI() \
|
||||
long double __retval; \
|
||||
#define ENTERI() ENTERIT(long double)
|
||||
#define ENTERIT(returntype) \
|
||||
returntype __retval; \
|
||||
fp_prec_t __oprec; \
|
||||
\
|
||||
if ((__oprec = fpgetprec()) != FP_PE) \
|
||||
|
@ -318,6 +360,7 @@ do { \
|
|||
} while (0)
|
||||
#else
|
||||
#define ENTERI()
|
||||
#define ENTERIT(x)
|
||||
#define RETURNI(x) RETURNF(x)
|
||||
#define ENTERV()
|
||||
#define RETURNV() return
|
||||
|
@ -435,6 +478,31 @@ do { \
|
|||
*/
|
||||
void _scan_nan(uint32_t *__words, int __num_words, const char *__s);
|
||||
|
||||
/*
|
||||
* Mix 0, 1 or 2 NaNs. First add 0 to each arg. This normally just turns
|
||||
* signaling NaNs into quiet NaNs by setting a quiet bit. We do this
|
||||
* because we want to never return a signaling NaN, and also because we
|
||||
* don't want the quiet bit to affect the result. Then mix the converted
|
||||
* args using the specified operation.
|
||||
*
|
||||
* When one arg is NaN, the result is typically that arg quieted. When both
|
||||
* args are NaNs, the result is typically the quietening of the arg whose
|
||||
* mantissa is largest after quietening. When neither arg is NaN, the
|
||||
* result may be NaN because it is indeterminate, or finite for subsequent
|
||||
* construction of a NaN as the indeterminate 0.0L/0.0L.
|
||||
*
|
||||
* Technical complications: the result in bits after rounding to the final
|
||||
* precision might depend on the runtime precision and/or on compiler
|
||||
* optimizations, especially when different register sets are used for
|
||||
* different precisions. Try to make the result not depend on at least the
|
||||
* runtime precision by always doing the main mixing step in long double
|
||||
* precision. Try to reduce dependencies on optimizations by adding the
|
||||
* the 0's in different precisions (unless everything is in long double
|
||||
* precision).
|
||||
*/
|
||||
#define nan_mix(x, y) (nan_mix_op((x), (y), +))
|
||||
#define nan_mix_op(x, y, op) (((x) + 0.0L) op ((y) + 0))
|
||||
|
||||
#ifdef _COMPLEX_H
|
||||
|
||||
/*
|
||||
|
@ -510,48 +578,116 @@ CMPLXL(long double x, long double y)
|
|||
|
||||
#endif /* _COMPLEX_H */
|
||||
|
||||
#ifdef __GNUCLIKE_ASM
|
||||
/*
|
||||
* The rnint() family rounds to the nearest integer for a restricted range
|
||||
* range of args (up to about 2**MANT_DIG). We assume that the current
|
||||
* rounding mode is FE_TONEAREST so that this can be done efficiently.
|
||||
* Extra precision causes more problems in practice, and we only centralize
|
||||
* this here to reduce those problems, and have not solved the efficiency
|
||||
* problems. The exp2() family uses a more delicate version of this that
|
||||
* requires extracting bits from the intermediate value, so it is not
|
||||
* centralized here and should copy any solution of the efficiency problems.
|
||||
*/
|
||||
|
||||
/* Asm versions of some functions. */
|
||||
static inline double
|
||||
rnint(__double_t x)
|
||||
{
|
||||
/*
|
||||
* This casts to double to kill any extra precision. This depends
|
||||
* on the cast being applied to a double_t to avoid compiler bugs
|
||||
* (this is a cleaner version of STRICT_ASSIGN()). This is
|
||||
* inefficient if there actually is extra precision, but is hard
|
||||
* to improve on. We use double_t in the API to minimise conversions
|
||||
* for just calling here. Note that we cannot easily change the
|
||||
* magic number to the one that works directly with double_t, since
|
||||
* the rounding precision is variable at runtime on x86 so the
|
||||
* magic number would need to be variable. Assuming that the
|
||||
* rounding precision is always the default is too fragile. This
|
||||
* and many other complications will move when the default is
|
||||
* changed to FP_PE.
|
||||
*/
|
||||
return ((double)(x + 0x1.8p52) - 0x1.8p52);
|
||||
}
|
||||
|
||||
#ifdef __amd64__
|
||||
static inline float
|
||||
rnintf(__float_t x)
|
||||
{
|
||||
/*
|
||||
* As for rnint(), except we could just call that to handle the
|
||||
* extra precision case, usually without losing efficiency.
|
||||
*/
|
||||
return ((float)(x + 0x1.8p23F) - 0x1.8p23F);
|
||||
}
|
||||
|
||||
#ifdef LDBL_MANT_DIG
|
||||
/*
|
||||
* The complications for extra precision are smaller for rnintl() since it
|
||||
* can safely assume that the rounding precision has been increased from
|
||||
* its default to FP_PE on x86. We don't exploit that here to get small
|
||||
* optimizations from limiting the rangle to double. We just need it for
|
||||
* the magic number to work with long doubles. ld128 callers should use
|
||||
* rnint() instead of this if possible. ld80 callers should prefer
|
||||
* rnintl() since for amd64 this avoids swapping the register set, while
|
||||
* for i386 it makes no difference (assuming FP_PE), and for other arches
|
||||
* it makes little difference.
|
||||
*/
|
||||
static inline long double
|
||||
rnintl(long double x)
|
||||
{
|
||||
return (x + __CONCAT(0x1.8p, LDBL_MANT_DIG) / 2 -
|
||||
__CONCAT(0x1.8p, LDBL_MANT_DIG) / 2);
|
||||
}
|
||||
#endif /* LDBL_MANT_DIG */
|
||||
|
||||
/*
|
||||
* irint() and i64rint() give the same result as casting to their integer
|
||||
* return type provided their arg is a floating point integer. They can
|
||||
* sometimes be more efficient because no rounding is required.
|
||||
*/
|
||||
#if (defined(amd64) || defined(__i386__)) && defined(__GNUCLIKE_ASM)
|
||||
#define irint(x) \
|
||||
(sizeof(x) == sizeof(float) && \
|
||||
sizeof(__float_t) == sizeof(long double) ? irintf(x) : \
|
||||
sizeof(x) == sizeof(double) && \
|
||||
sizeof(__double_t) == sizeof(long double) ? irintd(x) : \
|
||||
sizeof(x) == sizeof(long double) ? irintl(x) : (int)(x))
|
||||
#else
|
||||
#define irint(x) ((int)(x))
|
||||
#endif
|
||||
|
||||
#define i64rint(x) ((int64_t)(x)) /* only needed for ld128 so not opt. */
|
||||
|
||||
#if defined(__i386__) && defined(__GNUCLIKE_ASM)
|
||||
static __inline int
|
||||
irint(double x)
|
||||
irintf(float x)
|
||||
{
|
||||
int n;
|
||||
|
||||
asm("cvtsd2si %1,%0" : "=r" (n) : "x" (x));
|
||||
__asm("fistl %0" : "=m" (n) : "t" (x));
|
||||
return (n);
|
||||
}
|
||||
#define HAVE_EFFICIENT_IRINT
|
||||
#endif
|
||||
|
||||
#ifdef __i386__
|
||||
static __inline int
|
||||
irint(double x)
|
||||
irintd(double x)
|
||||
{
|
||||
int n;
|
||||
|
||||
asm("fistl %0" : "=m" (n) : "t" (x));
|
||||
__asm("fistl %0" : "=m" (n) : "t" (x));
|
||||
return (n);
|
||||
}
|
||||
#define HAVE_EFFICIENT_IRINT
|
||||
#endif
|
||||
|
||||
#if defined(__amd64__) || defined(__i386__)
|
||||
#if (defined(__amd64__) || defined(__i386__)) && defined(__GNUCLIKE_ASM)
|
||||
static __inline int
|
||||
irintl(long double x)
|
||||
{
|
||||
int n;
|
||||
|
||||
asm("fistl %0" : "=m" (n) : "t" (x));
|
||||
__asm("fistl %0" : "=m" (n) : "t" (x));
|
||||
return (n);
|
||||
}
|
||||
#define HAVE_EFFICIENT_IRINTL
|
||||
#endif
|
||||
|
||||
#endif /* __GNUCLIKE_ASM */
|
||||
|
||||
#ifdef DEBUG
|
||||
#if defined(__amd64__) || defined(__i386__)
|
||||
#define breakpoint() asm("int $3")
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_ccosh.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_ccosh.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
@ -146,7 +146,8 @@ ccosh(double complex z)
|
|||
* Optionally raises the invalid floating-point exception for finite
|
||||
* nonzero y. Choice = don't raise (except for signaling NaNs).
|
||||
*/
|
||||
return (CMPLX((x * x) * (y - y), (x + x) * (y - y)));
|
||||
return (CMPLX(((long double)x * x) * (y - y),
|
||||
((long double)x + x) * (y - y)));
|
||||
}
|
||||
|
||||
double complex
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_ccoshf.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_ccoshf.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
@ -92,7 +92,8 @@ ccoshf(float complex z)
|
|||
return (CMPLXF(INFINITY * cosf(y), x * sinf(y)));
|
||||
}
|
||||
|
||||
return (CMPLXF((x * x) * (y - y), (x + x) * (y - y)));
|
||||
return (CMPLXF(((long double)x * x) * (y - y),
|
||||
((long double)x + x) * (y - y)));
|
||||
}
|
||||
|
||||
float complex
|
||||
|
|
155
libm/upstream-freebsd/lib/msun/src/s_clog.c
Normal file
155
libm/upstream-freebsd/lib/msun/src/s_clog.c
Normal file
|
@ -0,0 +1,155 @@
|
|||
/*-
|
||||
* Copyright (c) 2013 Bruce D. Evans
|
||||
* 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 unmodified, 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 ``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 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 <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_clog.c 333577 2018-05-13 09:54:34Z kib $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
|
||||
#include "fpmath.h"
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#define MANT_DIG DBL_MANT_DIG
|
||||
#define MAX_EXP DBL_MAX_EXP
|
||||
#define MIN_EXP DBL_MIN_EXP
|
||||
|
||||
static const double
|
||||
ln2_hi = 6.9314718055829871e-1, /* 0x162e42fefa0000.0p-53 */
|
||||
ln2_lo = 1.6465949582897082e-12; /* 0x1cf79abc9e3b3a.0p-92 */
|
||||
|
||||
double complex
|
||||
clog(double complex z)
|
||||
{
|
||||
double_t ax, ax2h, ax2l, axh, axl, ay, ay2h, ay2l, ayh, ayl, sh, sl, t;
|
||||
double x, y, v;
|
||||
uint32_t hax, hay;
|
||||
int kx, ky;
|
||||
|
||||
x = creal(z);
|
||||
y = cimag(z);
|
||||
v = atan2(y, x);
|
||||
|
||||
ax = fabs(x);
|
||||
ay = fabs(y);
|
||||
if (ax < ay) {
|
||||
t = ax;
|
||||
ax = ay;
|
||||
ay = t;
|
||||
}
|
||||
|
||||
GET_HIGH_WORD(hax, ax);
|
||||
kx = (hax >> 20) - 1023;
|
||||
GET_HIGH_WORD(hay, ay);
|
||||
ky = (hay >> 20) - 1023;
|
||||
|
||||
/* Handle NaNs and Infs using the general formula. */
|
||||
if (kx == MAX_EXP || ky == MAX_EXP)
|
||||
return (CMPLX(log(hypot(x, y)), v));
|
||||
|
||||
/* Avoid spurious underflow, and reduce inaccuracies when ax is 1. */
|
||||
if (ax == 1) {
|
||||
if (ky < (MIN_EXP - 1) / 2)
|
||||
return (CMPLX((ay / 2) * ay, v));
|
||||
return (CMPLX(log1p(ay * ay) / 2, v));
|
||||
}
|
||||
|
||||
/* Avoid underflow when ax is not small. Also handle zero args. */
|
||||
if (kx - ky > MANT_DIG || ay == 0)
|
||||
return (CMPLX(log(ax), v));
|
||||
|
||||
/* Avoid overflow. */
|
||||
if (kx >= MAX_EXP - 1)
|
||||
return (CMPLX(log(hypot(x * 0x1p-1022, y * 0x1p-1022)) +
|
||||
(MAX_EXP - 2) * ln2_lo + (MAX_EXP - 2) * ln2_hi, v));
|
||||
if (kx >= (MAX_EXP - 1) / 2)
|
||||
return (CMPLX(log(hypot(x, y)), v));
|
||||
|
||||
/* Reduce inaccuracies and avoid underflow when ax is denormal. */
|
||||
if (kx <= MIN_EXP - 2)
|
||||
return (CMPLX(log(hypot(x * 0x1p1023, y * 0x1p1023)) +
|
||||
(MIN_EXP - 2) * ln2_lo + (MIN_EXP - 2) * ln2_hi, v));
|
||||
|
||||
/* Avoid remaining underflows (when ax is small but not denormal). */
|
||||
if (ky < (MIN_EXP - 1) / 2 + MANT_DIG)
|
||||
return (CMPLX(log(hypot(x, y)), v));
|
||||
|
||||
/* Calculate ax*ax and ay*ay exactly using Dekker's algorithm. */
|
||||
t = (double)(ax * (0x1p27 + 1));
|
||||
axh = (double)(ax - t) + t;
|
||||
axl = ax - axh;
|
||||
ax2h = ax * ax;
|
||||
ax2l = axh * axh - ax2h + 2 * axh * axl + axl * axl;
|
||||
t = (double)(ay * (0x1p27 + 1));
|
||||
ayh = (double)(ay - t) + t;
|
||||
ayl = ay - ayh;
|
||||
ay2h = ay * ay;
|
||||
ay2l = ayh * ayh - ay2h + 2 * ayh * ayl + ayl * ayl;
|
||||
|
||||
/*
|
||||
* When log(|z|) is far from 1, accuracy in calculating the sum
|
||||
* of the squares is not very important since log() reduces
|
||||
* inaccuracies. We depended on this to use the general
|
||||
* formula when log(|z|) is very far from 1. When log(|z|) is
|
||||
* moderately far from 1, we go through the extra-precision
|
||||
* calculations to reduce branches and gain a little accuracy.
|
||||
*
|
||||
* When |z| is near 1, we subtract 1 and use log1p() and don't
|
||||
* leave it to log() to subtract 1, since we gain at least 1 bit
|
||||
* of accuracy in this way.
|
||||
*
|
||||
* When |z| is very near 1, subtracting 1 can cancel almost
|
||||
* 3*MANT_DIG bits. We arrange that subtracting 1 is exact in
|
||||
* doubled precision, and then do the rest of the calculation
|
||||
* in sloppy doubled precision. Although large cancellations
|
||||
* often lose lots of accuracy, here the final result is exact
|
||||
* in doubled precision if the large calculation occurs (because
|
||||
* then it is exact in tripled precision and the cancellation
|
||||
* removes enough bits to fit in doubled precision). Thus the
|
||||
* result is accurate in sloppy doubled precision, and the only
|
||||
* significant loss of accuracy is when it is summed and passed
|
||||
* to log1p().
|
||||
*/
|
||||
sh = ax2h;
|
||||
sl = ay2h;
|
||||
_2sumF(sh, sl);
|
||||
if (sh < 0.5 || sh >= 3)
|
||||
return (CMPLX(log(ay2l + ax2l + sl + sh) / 2, v));
|
||||
sh -= 1;
|
||||
_2sum(sh, sl);
|
||||
_2sum(ax2l, ay2l);
|
||||
/* Briggs-Kahan algorithm (except we discard the final low term): */
|
||||
_2sum(sh, ax2l);
|
||||
_2sum(sl, ay2l);
|
||||
t = ax2l + sl;
|
||||
_2sumF(sh, t);
|
||||
return (CMPLX(log1p(ay2l + t + sh) / 2, v));
|
||||
}
|
||||
|
||||
#if (LDBL_MANT_DIG == 53)
|
||||
__weak_reference(clog, clogl);
|
||||
#endif
|
151
libm/upstream-freebsd/lib/msun/src/s_clogf.c
Normal file
151
libm/upstream-freebsd/lib/msun/src/s_clogf.c
Normal file
|
@ -0,0 +1,151 @@
|
|||
/*-
|
||||
* Copyright (c) 2013 Bruce D. Evans
|
||||
* 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 unmodified, 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 ``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 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 <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_clogf.c 333577 2018-05-13 09:54:34Z kib $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
|
||||
#include "fpmath.h"
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#define MANT_DIG FLT_MANT_DIG
|
||||
#define MAX_EXP FLT_MAX_EXP
|
||||
#define MIN_EXP FLT_MIN_EXP
|
||||
|
||||
static const float
|
||||
ln2f_hi = 6.9314575195e-1, /* 0xb17200.0p-24 */
|
||||
ln2f_lo = 1.4286067653e-6; /* 0xbfbe8e.0p-43 */
|
||||
|
||||
float complex
|
||||
clogf(float complex z)
|
||||
{
|
||||
float_t ax, ax2h, ax2l, axh, axl, ay, ay2h, ay2l, ayh, ayl, sh, sl, t;
|
||||
float x, y, v;
|
||||
uint32_t hax, hay;
|
||||
int kx, ky;
|
||||
|
||||
x = crealf(z);
|
||||
y = cimagf(z);
|
||||
v = atan2f(y, x);
|
||||
|
||||
ax = fabsf(x);
|
||||
ay = fabsf(y);
|
||||
if (ax < ay) {
|
||||
t = ax;
|
||||
ax = ay;
|
||||
ay = t;
|
||||
}
|
||||
|
||||
GET_FLOAT_WORD(hax, ax);
|
||||
kx = (hax >> 23) - 127;
|
||||
GET_FLOAT_WORD(hay, ay);
|
||||
ky = (hay >> 23) - 127;
|
||||
|
||||
/* Handle NaNs and Infs using the general formula. */
|
||||
if (kx == MAX_EXP || ky == MAX_EXP)
|
||||
return (CMPLXF(logf(hypotf(x, y)), v));
|
||||
|
||||
/* Avoid spurious underflow, and reduce inaccuracies when ax is 1. */
|
||||
if (hax == 0x3f800000) {
|
||||
if (ky < (MIN_EXP - 1) / 2)
|
||||
return (CMPLXF((ay / 2) * ay, v));
|
||||
return (CMPLXF(log1pf(ay * ay) / 2, v));
|
||||
}
|
||||
|
||||
/* Avoid underflow when ax is not small. Also handle zero args. */
|
||||
if (kx - ky > MANT_DIG || hay == 0)
|
||||
return (CMPLXF(logf(ax), v));
|
||||
|
||||
/* Avoid overflow. */
|
||||
if (kx >= MAX_EXP - 1)
|
||||
return (CMPLXF(logf(hypotf(x * 0x1p-126F, y * 0x1p-126F)) +
|
||||
(MAX_EXP - 2) * ln2f_lo + (MAX_EXP - 2) * ln2f_hi, v));
|
||||
if (kx >= (MAX_EXP - 1) / 2)
|
||||
return (CMPLXF(logf(hypotf(x, y)), v));
|
||||
|
||||
/* Reduce inaccuracies and avoid underflow when ax is denormal. */
|
||||
if (kx <= MIN_EXP - 2)
|
||||
return (CMPLXF(logf(hypotf(x * 0x1p127F, y * 0x1p127F)) +
|
||||
(MIN_EXP - 2) * ln2f_lo + (MIN_EXP - 2) * ln2f_hi, v));
|
||||
|
||||
/* Avoid remaining underflows (when ax is small but not denormal). */
|
||||
if (ky < (MIN_EXP - 1) / 2 + MANT_DIG)
|
||||
return (CMPLXF(logf(hypotf(x, y)), v));
|
||||
|
||||
/* Calculate ax*ax and ay*ay exactly using Dekker's algorithm. */
|
||||
t = (float)(ax * (0x1p12F + 1));
|
||||
axh = (float)(ax - t) + t;
|
||||
axl = ax - axh;
|
||||
ax2h = ax * ax;
|
||||
ax2l = axh * axh - ax2h + 2 * axh * axl + axl * axl;
|
||||
t = (float)(ay * (0x1p12F + 1));
|
||||
ayh = (float)(ay - t) + t;
|
||||
ayl = ay - ayh;
|
||||
ay2h = ay * ay;
|
||||
ay2l = ayh * ayh - ay2h + 2 * ayh * ayl + ayl * ayl;
|
||||
|
||||
/*
|
||||
* When log(|z|) is far from 1, accuracy in calculating the sum
|
||||
* of the squares is not very important since log() reduces
|
||||
* inaccuracies. We depended on this to use the general
|
||||
* formula when log(|z|) is very far from 1. When log(|z|) is
|
||||
* moderately far from 1, we go through the extra-precision
|
||||
* calculations to reduce branches and gain a little accuracy.
|
||||
*
|
||||
* When |z| is near 1, we subtract 1 and use log1p() and don't
|
||||
* leave it to log() to subtract 1, since we gain at least 1 bit
|
||||
* of accuracy in this way.
|
||||
*
|
||||
* When |z| is very near 1, subtracting 1 can cancel almost
|
||||
* 3*MANT_DIG bits. We arrange that subtracting 1 is exact in
|
||||
* doubled precision, and then do the rest of the calculation
|
||||
* in sloppy doubled precision. Although large cancellations
|
||||
* often lose lots of accuracy, here the final result is exact
|
||||
* in doubled precision if the large calculation occurs (because
|
||||
* then it is exact in tripled precision and the cancellation
|
||||
* removes enough bits to fit in doubled precision). Thus the
|
||||
* result is accurate in sloppy doubled precision, and the only
|
||||
* significant loss of accuracy is when it is summed and passed
|
||||
* to log1p().
|
||||
*/
|
||||
sh = ax2h;
|
||||
sl = ay2h;
|
||||
_2sumF(sh, sl);
|
||||
if (sh < 0.5F || sh >= 3)
|
||||
return (CMPLXF(logf(ay2l + ax2l + sl + sh) / 2, v));
|
||||
sh -= 1;
|
||||
_2sum(sh, sl);
|
||||
_2sum(ax2l, ay2l);
|
||||
/* Briggs-Kahan algorithm (except we discard the final low term): */
|
||||
_2sum(sh, ax2l);
|
||||
_2sum(sl, ay2l);
|
||||
t = ax2l + sl;
|
||||
_2sumF(sh, t);
|
||||
return (CMPLXF(log1pf(ay2l + t + sh) / 2, v));
|
||||
}
|
168
libm/upstream-freebsd/lib/msun/src/s_clogl.c
Normal file
168
libm/upstream-freebsd/lib/msun/src/s_clogl.c
Normal file
|
@ -0,0 +1,168 @@
|
|||
/*-
|
||||
* Copyright (c) 2013 Bruce D. Evans
|
||||
* 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 unmodified, 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 ``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 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 <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_clogl.c 333577 2018-05-13 09:54:34Z kib $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
#ifdef __i386__
|
||||
#include <ieeefp.h>
|
||||
#endif
|
||||
|
||||
#include "fpmath.h"
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
||||
#define MANT_DIG LDBL_MANT_DIG
|
||||
#define MAX_EXP LDBL_MAX_EXP
|
||||
#define MIN_EXP LDBL_MIN_EXP
|
||||
|
||||
static const double
|
||||
ln2_hi = 6.9314718055829871e-1; /* 0x162e42fefa0000.0p-53 */
|
||||
|
||||
#if LDBL_MANT_DIG == 64
|
||||
#define MULT_REDUX 0x1p32 /* exponent MANT_DIG / 2 rounded up */
|
||||
static const double
|
||||
ln2l_lo = 1.6465949582897082e-12; /* 0x1cf79abc9e3b3a.0p-92 */
|
||||
#elif LDBL_MANT_DIG == 113
|
||||
#define MULT_REDUX 0x1p57
|
||||
static const long double
|
||||
ln2l_lo = 1.64659495828970812809844307550013433e-12L; /* 0x1cf79abc9e3b39803f2f6af40f343.0p-152L */
|
||||
#else
|
||||
#error "Unsupported long double format"
|
||||
#endif
|
||||
|
||||
long double complex
|
||||
clogl(long double complex z)
|
||||
{
|
||||
long double ax, ax2h, ax2l, axh, axl, ay, ay2h, ay2l, ayh, ayl;
|
||||
long double sh, sl, t;
|
||||
long double x, y, v;
|
||||
uint16_t hax, hay;
|
||||
int kx, ky;
|
||||
|
||||
ENTERIT(long double complex);
|
||||
|
||||
x = creall(z);
|
||||
y = cimagl(z);
|
||||
v = atan2l(y, x);
|
||||
|
||||
ax = fabsl(x);
|
||||
ay = fabsl(y);
|
||||
if (ax < ay) {
|
||||
t = ax;
|
||||
ax = ay;
|
||||
ay = t;
|
||||
}
|
||||
|
||||
GET_LDBL_EXPSIGN(hax, ax);
|
||||
kx = hax - 16383;
|
||||
GET_LDBL_EXPSIGN(hay, ay);
|
||||
ky = hay - 16383;
|
||||
|
||||
/* Handle NaNs and Infs using the general formula. */
|
||||
if (kx == MAX_EXP || ky == MAX_EXP)
|
||||
RETURNI(CMPLXL(logl(hypotl(x, y)), v));
|
||||
|
||||
/* Avoid spurious underflow, and reduce inaccuracies when ax is 1. */
|
||||
if (ax == 1) {
|
||||
if (ky < (MIN_EXP - 1) / 2)
|
||||
RETURNI(CMPLXL((ay / 2) * ay, v));
|
||||
RETURNI(CMPLXL(log1pl(ay * ay) / 2, v));
|
||||
}
|
||||
|
||||
/* Avoid underflow when ax is not small. Also handle zero args. */
|
||||
if (kx - ky > MANT_DIG || ay == 0)
|
||||
RETURNI(CMPLXL(logl(ax), v));
|
||||
|
||||
/* Avoid overflow. */
|
||||
if (kx >= MAX_EXP - 1)
|
||||
RETURNI(CMPLXL(logl(hypotl(x * 0x1p-16382L, y * 0x1p-16382L)) +
|
||||
(MAX_EXP - 2) * ln2l_lo + (MAX_EXP - 2) * ln2_hi, v));
|
||||
if (kx >= (MAX_EXP - 1) / 2)
|
||||
RETURNI(CMPLXL(logl(hypotl(x, y)), v));
|
||||
|
||||
/* Reduce inaccuracies and avoid underflow when ax is denormal. */
|
||||
if (kx <= MIN_EXP - 2)
|
||||
RETURNI(CMPLXL(logl(hypotl(x * 0x1p16383L, y * 0x1p16383L)) +
|
||||
(MIN_EXP - 2) * ln2l_lo + (MIN_EXP - 2) * ln2_hi, v));
|
||||
|
||||
/* Avoid remaining underflows (when ax is small but not denormal). */
|
||||
if (ky < (MIN_EXP - 1) / 2 + MANT_DIG)
|
||||
RETURNI(CMPLXL(logl(hypotl(x, y)), v));
|
||||
|
||||
/* Calculate ax*ax and ay*ay exactly using Dekker's algorithm. */
|
||||
t = (long double)(ax * (MULT_REDUX + 1));
|
||||
axh = (long double)(ax - t) + t;
|
||||
axl = ax - axh;
|
||||
ax2h = ax * ax;
|
||||
ax2l = axh * axh - ax2h + 2 * axh * axl + axl * axl;
|
||||
t = (long double)(ay * (MULT_REDUX + 1));
|
||||
ayh = (long double)(ay - t) + t;
|
||||
ayl = ay - ayh;
|
||||
ay2h = ay * ay;
|
||||
ay2l = ayh * ayh - ay2h + 2 * ayh * ayl + ayl * ayl;
|
||||
|
||||
/*
|
||||
* When log(|z|) is far from 1, accuracy in calculating the sum
|
||||
* of the squares is not very important since log() reduces
|
||||
* inaccuracies. We depended on this to use the general
|
||||
* formula when log(|z|) is very far from 1. When log(|z|) is
|
||||
* moderately far from 1, we go through the extra-precision
|
||||
* calculations to reduce branches and gain a little accuracy.
|
||||
*
|
||||
* When |z| is near 1, we subtract 1 and use log1p() and don't
|
||||
* leave it to log() to subtract 1, since we gain at least 1 bit
|
||||
* of accuracy in this way.
|
||||
*
|
||||
* When |z| is very near 1, subtracting 1 can cancel almost
|
||||
* 3*MANT_DIG bits. We arrange that subtracting 1 is exact in
|
||||
* doubled precision, and then do the rest of the calculation
|
||||
* in sloppy doubled precision. Although large cancellations
|
||||
* often lose lots of accuracy, here the final result is exact
|
||||
* in doubled precision if the large calculation occurs (because
|
||||
* then it is exact in tripled precision and the cancellation
|
||||
* removes enough bits to fit in doubled precision). Thus the
|
||||
* result is accurate in sloppy doubled precision, and the only
|
||||
* significant loss of accuracy is when it is summed and passed
|
||||
* to log1p().
|
||||
*/
|
||||
sh = ax2h;
|
||||
sl = ay2h;
|
||||
_2sumF(sh, sl);
|
||||
if (sh < 0.5 || sh >= 3)
|
||||
RETURNI(CMPLXL(logl(ay2l + ax2l + sl + sh) / 2, v));
|
||||
sh -= 1;
|
||||
_2sum(sh, sl);
|
||||
_2sum(ax2l, ay2l);
|
||||
/* Briggs-Kahan algorithm (except we discard the final low term): */
|
||||
_2sum(sh, ax2l);
|
||||
_2sum(sl, ay2l);
|
||||
t = ax2l + sl;
|
||||
_2sumF(sh, t);
|
||||
RETURNI(CMPLXL(log1pl(ay2l + t + sh) / 2, v));
|
||||
}
|
74
libm/upstream-freebsd/lib/msun/src/s_cpow.c
Normal file
74
libm/upstream-freebsd/lib/msun/src/s_cpow.c
Normal file
|
@ -0,0 +1,74 @@
|
|||
/*-
|
||||
* Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* cpow
|
||||
*
|
||||
* Complex power function
|
||||
*
|
||||
*
|
||||
*
|
||||
* SYNOPSIS:
|
||||
*
|
||||
* double complex cpow();
|
||||
* double complex a, z, w;
|
||||
*
|
||||
* w = cpow (a, z);
|
||||
*
|
||||
*
|
||||
*
|
||||
* DESCRIPTION:
|
||||
*
|
||||
* Raises complex A to the complex Zth power.
|
||||
* Definition is per AMS55 # 4.2.8,
|
||||
* analytically equivalent to cpow(a,z) = cexp(z clog(a)).
|
||||
*
|
||||
* ACCURACY:
|
||||
*
|
||||
* Relative error:
|
||||
* arithmetic domain # trials peak rms
|
||||
* IEEE -10,+10 30000 9.4e-15 1.5e-15
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_cpow.c 336299 2018-07-15 00:23:10Z mmacy $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
|
||||
double complex
|
||||
cpow(double complex a, double complex z)
|
||||
{
|
||||
double complex w;
|
||||
double x, y, r, theta, absa, arga;
|
||||
|
||||
x = creal (z);
|
||||
y = cimag (z);
|
||||
absa = cabs (a);
|
||||
if (absa == 0.0) {
|
||||
return (0.0 + 0.0 * I);
|
||||
}
|
||||
arga = carg (a);
|
||||
r = pow (absa, x);
|
||||
theta = x * arga;
|
||||
if (y != 0.0) {
|
||||
r = r * exp (-y * arga);
|
||||
theta = theta + y * log (absa);
|
||||
}
|
||||
w = r * cos (theta) + (r * sin (theta)) * I;
|
||||
return (w);
|
||||
}
|
73
libm/upstream-freebsd/lib/msun/src/s_cpowf.c
Normal file
73
libm/upstream-freebsd/lib/msun/src/s_cpowf.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*-
|
||||
* Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* cpowf
|
||||
*
|
||||
* Complex power function
|
||||
*
|
||||
*
|
||||
*
|
||||
* SYNOPSIS:
|
||||
*
|
||||
* float complex cpowf();
|
||||
* float complex a, z, w;
|
||||
*
|
||||
* w = cpowf (a, z);
|
||||
*
|
||||
*
|
||||
*
|
||||
* DESCRIPTION:
|
||||
*
|
||||
* Raises complex A to the complex Zth power.
|
||||
* Definition is per AMS55 # 4.2.8,
|
||||
* analytically equivalent to cpow(a,z) = cexp(z clog(a)).
|
||||
*
|
||||
* ACCURACY:
|
||||
*
|
||||
* Relative error:
|
||||
* arithmetic domain # trials peak rms
|
||||
* IEEE -10,+10 30000 9.4e-15 1.5e-15
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_cpowf.c 336299 2018-07-15 00:23:10Z mmacy $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
float complex
|
||||
cpowf(float complex a, float complex z)
|
||||
{
|
||||
float complex w;
|
||||
float x, y, r, theta, absa, arga;
|
||||
|
||||
x = crealf(z);
|
||||
y = cimagf(z);
|
||||
absa = cabsf (a);
|
||||
if (absa == 0.0f) {
|
||||
return (0.0f + 0.0f * I);
|
||||
}
|
||||
arga = cargf (a);
|
||||
r = powf (absa, x);
|
||||
theta = x * arga;
|
||||
if (y != 0.0f) {
|
||||
r = r * expf (-y * arga);
|
||||
theta = theta + y * logf (absa);
|
||||
}
|
||||
w = r * cosf (theta) + (r * sinf (theta)) * I;
|
||||
return (w);
|
||||
}
|
73
libm/upstream-freebsd/lib/msun/src/s_cpowl.c
Normal file
73
libm/upstream-freebsd/lib/msun/src/s_cpowl.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*-
|
||||
* Copyright (c) 2008 Stephen L. Moshier <steve@moshier.net>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* cpowl
|
||||
*
|
||||
* Complex power function
|
||||
*
|
||||
*
|
||||
*
|
||||
* SYNOPSIS:
|
||||
*
|
||||
* long double complex cpowl();
|
||||
* long double complex a, z, w;
|
||||
*
|
||||
* w = cpowl (a, z);
|
||||
*
|
||||
*
|
||||
*
|
||||
* DESCRIPTION:
|
||||
*
|
||||
* Raises complex A to the complex Zth power.
|
||||
* Definition is per AMS55 # 4.2.8,
|
||||
* analytically equivalent to cpow(a,z) = cexp(z clog(a)).
|
||||
*
|
||||
* ACCURACY:
|
||||
*
|
||||
* Relative error:
|
||||
* arithmetic domain # trials peak rms
|
||||
* IEEE -10,+10 30000 9.4e-15 1.5e-15
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_cpowl.c 336299 2018-07-15 00:23:10Z mmacy $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
long double complex
|
||||
cpowl(long double complex a, long double complex z)
|
||||
{
|
||||
long double complex w;
|
||||
long double x, y, r, theta, absa, arga;
|
||||
|
||||
x = creall(z);
|
||||
y = cimagl(z);
|
||||
absa = cabsl(a);
|
||||
if (absa == 0.0L) {
|
||||
return (0.0L + 0.0L * I);
|
||||
}
|
||||
arga = cargl(a);
|
||||
r = powl(absa, x);
|
||||
theta = x * arga;
|
||||
if (y != 0.0L) {
|
||||
r = r * expl(-y * arga);
|
||||
theta = theta + y * logl(absa);
|
||||
}
|
||||
w = r * cosl(theta) + (r * sinl(theta)) * I;
|
||||
return (w);
|
||||
}
|
|
@ -39,7 +39,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csinh.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csinh.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
@ -145,7 +145,8 @@ csinh(double complex z)
|
|||
* Optionally raises the invalid floating-point exception for finite
|
||||
* nonzero y. Choice = don't raise (except for signaling NaNs).
|
||||
*/
|
||||
return (CMPLX((x + x) * (y - y), (x * x) * (y - y)));
|
||||
return (CMPLX(((long double)x + x) * (y - y),
|
||||
((long double)x * x) * (y - y)));
|
||||
}
|
||||
|
||||
double complex
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csinhf.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csinhf.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
@ -92,7 +92,8 @@ csinhf(float complex z)
|
|||
return (CMPLXF(x * cosf(y), INFINITY * sinf(y)));
|
||||
}
|
||||
|
||||
return (CMPLXF((x + x) * (y - y), (x * x) * (y - y)));
|
||||
return (CMPLXF(((long double)x + x) * (y - y),
|
||||
((long double)x * x) * (y - y)));
|
||||
}
|
||||
|
||||
float complex
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csqrt.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csqrt.c 336488 2018-07-19 15:04:10Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
|
@ -35,25 +35,14 @@ __FBSDID("$FreeBSD: head/lib/msun/src/s_csqrt.c 326219 2017-11-26 02:00:33Z pfg
|
|||
|
||||
#include "math_private.h"
|
||||
|
||||
/*
|
||||
* gcc doesn't implement complex multiplication or division correctly,
|
||||
* so we need to handle infinities specially. We turn on this pragma to
|
||||
* notify conforming c99 compilers that the fast-but-incorrect code that
|
||||
* gcc generates is acceptable, since the special cases have already been
|
||||
* handled.
|
||||
*/
|
||||
#pragma STDC CX_LIMITED_RANGE ON
|
||||
|
||||
/* We risk spurious overflow for components >= DBL_MAX / (1 + sqrt(2)). */
|
||||
/* For avoiding overflow for components >= DBL_MAX / (1 + sqrt(2)). */
|
||||
#define THRESH 0x1.a827999fcef32p+1022
|
||||
|
||||
double complex
|
||||
csqrt(double complex z)
|
||||
{
|
||||
double complex result;
|
||||
double a, b;
|
||||
double t;
|
||||
int scale;
|
||||
double a, b, rx, ry, scale, t;
|
||||
|
||||
a = creal(z);
|
||||
b = cimag(z);
|
||||
|
@ -65,7 +54,7 @@ csqrt(double complex z)
|
|||
return (CMPLX(INFINITY, b));
|
||||
if (isnan(a)) {
|
||||
t = (b - b) / (b - b); /* raise invalid if b is not a NaN */
|
||||
return (CMPLX(a, t)); /* return NaN + NaN i */
|
||||
return (CMPLX(a + 0.0L + t, a + 0.0L + t)); /* NaN + NaN i */
|
||||
}
|
||||
if (isinf(a)) {
|
||||
/*
|
||||
|
@ -79,34 +68,46 @@ csqrt(double complex z)
|
|||
else
|
||||
return (CMPLX(a, copysign(b - b, b)));
|
||||
}
|
||||
/*
|
||||
* The remaining special case (b is NaN) is handled just fine by
|
||||
* the normal code path below.
|
||||
*/
|
||||
if (isnan(b)) {
|
||||
t = (a - a) / (a - a); /* raise invalid */
|
||||
return (CMPLX(b + 0.0L + t, b + 0.0L + t)); /* NaN + NaN i */
|
||||
}
|
||||
|
||||
/* Scale to avoid overflow. */
|
||||
if (fabs(a) >= THRESH || fabs(b) >= THRESH) {
|
||||
a *= 0.25;
|
||||
b *= 0.25;
|
||||
scale = 1;
|
||||
/*
|
||||
* Don't scale a or b if this might give (spurious)
|
||||
* underflow. Then the unscaled value is an equivalent
|
||||
* infinitesmal (or 0).
|
||||
*/
|
||||
if (fabs(a) >= 0x1p-1020)
|
||||
a *= 0.25;
|
||||
if (fabs(b) >= 0x1p-1020)
|
||||
b *= 0.25;
|
||||
scale = 2;
|
||||
} else {
|
||||
scale = 0;
|
||||
scale = 1;
|
||||
}
|
||||
|
||||
/* Scale to reduce inaccuracies when both components are denormal. */
|
||||
if (fabs(a) < 0x1p-1022 && fabs(b) < 0x1p-1022) {
|
||||
a *= 0x1p54;
|
||||
b *= 0x1p54;
|
||||
scale = 0x1p-27;
|
||||
}
|
||||
|
||||
/* Algorithm 312, CACM vol 10, Oct 1967. */
|
||||
if (a >= 0) {
|
||||
t = sqrt((a + hypot(a, b)) * 0.5);
|
||||
result = CMPLX(t, b / (2 * t));
|
||||
rx = scale * t;
|
||||
ry = scale * b / (2 * t);
|
||||
} else {
|
||||
t = sqrt((-a + hypot(a, b)) * 0.5);
|
||||
result = CMPLX(fabs(b) / (2 * t), copysign(t, b));
|
||||
rx = scale * fabs(b) / (2 * t);
|
||||
ry = copysign(scale * t, b);
|
||||
}
|
||||
|
||||
/* Rescale. */
|
||||
if (scale)
|
||||
return (result * 2);
|
||||
else
|
||||
return (result);
|
||||
return (CMPLX(rx, ry));
|
||||
}
|
||||
|
||||
#if LDBL_MANT_DIG == 53
|
||||
|
|
|
@ -27,27 +27,21 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csqrtf.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csqrtf.c 336412 2018-07-17 12:01:59Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "math_private.h"
|
||||
|
||||
/*
|
||||
* gcc doesn't implement complex multiplication or division correctly,
|
||||
* so we need to handle infinities specially. We turn on this pragma to
|
||||
* notify conforming c99 compilers that the fast-but-incorrect code that
|
||||
* gcc generates is acceptable, since the special cases have already been
|
||||
* handled.
|
||||
*/
|
||||
#pragma STDC CX_LIMITED_RANGE ON
|
||||
|
||||
float complex
|
||||
csqrtf(float complex z)
|
||||
{
|
||||
float a = crealf(z), b = cimagf(z);
|
||||
double t;
|
||||
float a, b;
|
||||
|
||||
a = creal(z);
|
||||
b = cimag(z);
|
||||
|
||||
/* Handle special cases. */
|
||||
if (z == 0)
|
||||
|
@ -56,7 +50,7 @@ csqrtf(float complex z)
|
|||
return (CMPLXF(INFINITY, b));
|
||||
if (isnan(a)) {
|
||||
t = (b - b) / (b - b); /* raise invalid if b is not a NaN */
|
||||
return (CMPLXF(a, t)); /* return NaN + NaN i */
|
||||
return (CMPLXF(a + 0.0L + t, a + 0.0L + t)); /* NaN + NaN i */
|
||||
}
|
||||
if (isinf(a)) {
|
||||
/*
|
||||
|
@ -70,10 +64,10 @@ csqrtf(float complex z)
|
|||
else
|
||||
return (CMPLXF(a, copysignf(b - b, b)));
|
||||
}
|
||||
/*
|
||||
* The remaining special case (b is NaN) is handled just fine by
|
||||
* the normal code path below.
|
||||
*/
|
||||
if (isnan(b)) {
|
||||
t = (a - a) / (a - a); /* raise invalid */
|
||||
return (CMPLXF(b + 0.0L + t, b + 0.0L + t)); /* NaN + NaN i */
|
||||
}
|
||||
|
||||
/*
|
||||
* We compute t in double precision to avoid overflow and to
|
||||
|
@ -82,9 +76,9 @@ csqrtf(float complex z)
|
|||
*/
|
||||
if (a >= 0) {
|
||||
t = sqrt((a + hypot(a, b)) * 0.5);
|
||||
return (CMPLXF(t, b / (2.0 * t)));
|
||||
return (CMPLXF(t, b / (2 * t)));
|
||||
} else {
|
||||
t = sqrt((-a + hypot(a, b)) * 0.5);
|
||||
return (CMPLXF(fabsf(b) / (2.0 * t), copysignf(t, b)));
|
||||
return (CMPLXF(fabsf(b) / (2 * t), copysignf(t, b)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csqrtl.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_csqrtl.c 336488 2018-07-19 15:04:10Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <float.h>
|
||||
|
@ -36,32 +36,28 @@ __FBSDID("$FreeBSD: head/lib/msun/src/s_csqrtl.c 326219 2017-11-26 02:00:33Z pfg
|
|||
#include "math_private.h"
|
||||
|
||||
/*
|
||||
* gcc doesn't implement complex multiplication or division correctly,
|
||||
* so we need to handle infinities specially. We turn on this pragma to
|
||||
* notify conforming c99 compilers that the fast-but-incorrect code that
|
||||
* gcc generates is acceptable, since the special cases have already been
|
||||
* handled.
|
||||
*/
|
||||
#pragma STDC CX_LIMITED_RANGE ON
|
||||
|
||||
/*
|
||||
* We risk spurious overflow for components >= LDBL_MAX / (1 + sqrt(2)).
|
||||
* Rather than determining the fully precise value at which we might
|
||||
* overflow, just use a threshold of approximately LDBL_MAX / 4.
|
||||
* Several thresholds require a 15-bit exponent and also the usual bias.
|
||||
* s_logl.c and e_hypotl have less hard-coding but end up requiring the
|
||||
* same for the exponent and more for the mantissa.
|
||||
*/
|
||||
#if LDBL_MAX_EXP != 0x4000
|
||||
#error "Unsupported long double format"
|
||||
#else
|
||||
#define THRESH 0x1p16382L
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Overflow must be avoided for components >= LDBL_MAX / (1 + sqrt(2)).
|
||||
* The precise threshold is nontrivial to determine and spell, so use a
|
||||
* lower threshold of approximaely LDBL_MAX / 4, and don't use LDBL_MAX
|
||||
* to spell this since LDBL_MAX is broken on i386 (it overflows in 53-bit
|
||||
* precision).
|
||||
*/
|
||||
#define THRESH 0x1p16382L
|
||||
|
||||
long double complex
|
||||
csqrtl(long double complex z)
|
||||
{
|
||||
long double complex result;
|
||||
long double a, b;
|
||||
long double t;
|
||||
int scale;
|
||||
long double a, b, rx, ry, scale, t;
|
||||
|
||||
a = creall(z);
|
||||
b = cimagl(z);
|
||||
|
@ -73,7 +69,7 @@ csqrtl(long double complex z)
|
|||
return (CMPLXL(INFINITY, b));
|
||||
if (isnan(a)) {
|
||||
t = (b - b) / (b - b); /* raise invalid if b is not a NaN */
|
||||
return (CMPLXL(a, t)); /* return NaN + NaN i */
|
||||
return (CMPLXL(a + 0.0L + t, a + 0.0L + t)); /* NaN + NaN i */
|
||||
}
|
||||
if (isinf(a)) {
|
||||
/*
|
||||
|
@ -87,32 +83,44 @@ csqrtl(long double complex z)
|
|||
else
|
||||
return (CMPLXL(a, copysignl(b - b, b)));
|
||||
}
|
||||
/*
|
||||
* The remaining special case (b is NaN) is handled just fine by
|
||||
* the normal code path below.
|
||||
*/
|
||||
if (isnan(b)) {
|
||||
t = (a - a) / (a - a); /* raise invalid */
|
||||
return (CMPLXL(b + 0.0L + t, b + 0.0L + t)); /* NaN + NaN i */
|
||||
}
|
||||
|
||||
/* Scale to avoid overflow. */
|
||||
if (fabsl(a) >= THRESH || fabsl(b) >= THRESH) {
|
||||
a *= 0.25;
|
||||
b *= 0.25;
|
||||
scale = 1;
|
||||
/*
|
||||
* Don't scale a or b if this might give (spurious)
|
||||
* underflow. Then the unscaled value is an equivalent
|
||||
* infinitesmal (or 0).
|
||||
*/
|
||||
if (fabsl(a) >= 0x1p-16380L)
|
||||
a *= 0.25;
|
||||
if (fabsl(b) >= 0x1p-16380L)
|
||||
b *= 0.25;
|
||||
scale = 2;
|
||||
} else {
|
||||
scale = 0;
|
||||
scale = 1;
|
||||
}
|
||||
|
||||
/* Scale to reduce inaccuracies when both components are denormal. */
|
||||
if (fabsl(a) < 0x1p-16382L && fabsl(b) < 0x1p-16382L) {
|
||||
a *= 0x1p64;
|
||||
b *= 0x1p64;
|
||||
scale = 0x1p-32;
|
||||
}
|
||||
|
||||
/* Algorithm 312, CACM vol 10, Oct 1967. */
|
||||
if (a >= 0) {
|
||||
t = sqrtl((a + hypotl(a, b)) * 0.5);
|
||||
result = CMPLXL(t, b / (2 * t));
|
||||
rx = scale * t;
|
||||
ry = scale * b / (2 * t);
|
||||
} else {
|
||||
t = sqrtl((-a + hypotl(a, b)) * 0.5);
|
||||
result = CMPLXL(fabsl(b) / (2 * t), copysignl(t, b));
|
||||
rx = scale * fabsl(b) / (2 * t);
|
||||
ry = copysignl(scale * t, b);
|
||||
}
|
||||
|
||||
/* Rescale. */
|
||||
if (scale)
|
||||
return (result * 2);
|
||||
else
|
||||
return (result);
|
||||
return (CMPLXL(rx, ry));
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_ctanh.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_ctanh.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
@ -104,8 +104,8 @@ ctanh(double complex z)
|
|||
*/
|
||||
if (ix >= 0x7ff00000) {
|
||||
if ((ix & 0xfffff) | lx) /* x is NaN */
|
||||
return (CMPLX((x + 0) * (y + 0),
|
||||
y == 0 ? y : (x + 0) * (y + 0)));
|
||||
return (CMPLX(nan_mix(x, y),
|
||||
y == 0 ? y : nan_mix(x, y)));
|
||||
SET_HIGH_WORD(x, hx - 0x40000000); /* x = copysign(1, x) */
|
||||
return (CMPLX(x, copysign(0, isinf(y) ? y : sin(y) * cos(y))));
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_ctanhf.c 326219 2017-11-26 02:00:33Z pfg $");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_ctanhf.c 336362 2018-07-17 07:42:14Z bde $");
|
||||
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
@ -53,8 +53,8 @@ ctanhf(float complex z)
|
|||
|
||||
if (ix >= 0x7f800000) {
|
||||
if (ix & 0x7fffff)
|
||||
return (CMPLXF((x + 0) * (y + 0),
|
||||
y == 0 ? y : (x + 0) * (y + 0)));
|
||||
return (CMPLXF(nan_mix(x, y),
|
||||
y == 0 ? y : nan_mix(x, y)));
|
||||
SET_FLOAT_WORD(x, hx - 0x40000000);
|
||||
return (CMPLXF(x,
|
||||
copysignf(0, isinf(y) ? y : sinf(y) * cosf(y))));
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_remquo.c 336663 2018-07-24 10:10:16Z bde $");
|
||||
|
||||
#include <float.h>
|
||||
|
||||
|
@ -44,7 +44,7 @@ remquo(double x, double y, int *quo)
|
|||
/* purge off exception values */
|
||||
if((hy|ly)==0||(hx>=0x7ff00000)|| /* y=0,or x not finite */
|
||||
((hy|((ly|-ly)>>31))>0x7ff00000)) /* or y is NaN */
|
||||
return (x*y)/(x*y);
|
||||
return nan_mix_op(x, y, *)/nan_mix_op(x, y, *);
|
||||
if(hx<=hy) {
|
||||
if((hx<hy)||(lx<ly)) {
|
||||
q = 0;
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_remquof.c 336663 2018-07-24 10:10:16Z bde $");
|
||||
|
||||
#include "math.h"
|
||||
#include "math_private.h"
|
||||
|
@ -41,7 +41,7 @@ remquof(float x, float y, int *quo)
|
|||
|
||||
/* purge off exception values */
|
||||
if(hy==0||hx>=0x7f800000||hy>0x7f800000) /* y=0,NaN;or x not finite */
|
||||
return (x*y)/(x*y);
|
||||
return nan_mix_op(x, y, *)/nan_mix_op(x, y, *);
|
||||
if(hx<hy) {
|
||||
q = 0;
|
||||
goto fixup; /* |x|<|y| return x or x-y */
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
__FBSDID("$FreeBSD: head/lib/msun/src/s_remquol.c 336665 2018-07-24 11:50:05Z bde $");
|
||||
|
||||
#include <float.h>
|
||||
#include <stdint.h>
|
||||
|
@ -79,14 +79,13 @@ remquol(long double x, long double y, int *quo)
|
|||
sxy = sx ^ uy.bits.sign;
|
||||
ux.bits.sign = 0; /* |x| */
|
||||
uy.bits.sign = 0; /* |y| */
|
||||
x = ux.e;
|
||||
|
||||
/* purge off exception values */
|
||||
if((uy.bits.exp|uy.bits.manh|uy.bits.manl)==0 || /* y=0 */
|
||||
(ux.bits.exp == BIAS + LDBL_MAX_EXP) || /* or x not finite */
|
||||
(uy.bits.exp == BIAS + LDBL_MAX_EXP &&
|
||||
((uy.bits.manh&~LDBL_NBIT)|uy.bits.manl)!=0)) /* or y is NaN */
|
||||
return (x*y)/(x*y);
|
||||
return nan_mix_op(x, y, *)/nan_mix_op(x, y, *);
|
||||
if(ux.bits.exp<=uy.bits.exp) {
|
||||
if((ux.bits.exp<uy.bits.exp) ||
|
||||
(ux.bits.manh<=uy.bits.manh &&
|
||||
|
@ -126,7 +125,6 @@ remquol(long double x, long double y, int *quo)
|
|||
/* fix point fmod */
|
||||
n = ix - iy;
|
||||
q = 0;
|
||||
|
||||
while(n--) {
|
||||
hz=hx-hy;lz=lx-ly; if(lx<ly) hz -= 1;
|
||||
if(hz<0){hx = hx+hx+(lx>>MANL_SHIFT); lx = lx+lx;}
|
||||
|
@ -154,9 +152,8 @@ remquol(long double x, long double y, int *quo)
|
|||
} else {
|
||||
ux.bits.exp = iy + BIAS;
|
||||
}
|
||||
ux.bits.sign = 0;
|
||||
x = ux.e;
|
||||
fixup:
|
||||
x = ux.e; /* |x| */
|
||||
y = fabsl(y);
|
||||
if (y < LDBL_MIN * 2) {
|
||||
if (x+x>y || (x+x==y && (q & 1))) {
|
||||
|
@ -167,11 +164,9 @@ fixup:
|
|||
q++;
|
||||
x-=y;
|
||||
}
|
||||
|
||||
ux.e = x;
|
||||
ux.bits.sign ^= sx;
|
||||
x = ux.e;
|
||||
|
||||
q &= 0x7fffffff;
|
||||
*quo = (sxy ? -q : q);
|
||||
return x;
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
/* $NetBSD: clog.c,v 1.1 2007/08/20 16:01:35 drochner Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2007 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software written by Stephen L. Moshier.
|
||||
* It is redistributed by the NetBSD Foundation by permission of the author.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 "../src/namespace.h"
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
double complex
|
||||
clog(double complex z)
|
||||
{
|
||||
double complex w;
|
||||
double p, rr;
|
||||
|
||||
rr = cabs(z);
|
||||
p = log(rr);
|
||||
rr = atan2(cimag(z), creal(z));
|
||||
w = p + rr * I;
|
||||
return w;
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
/* $NetBSD: clogf.c,v 1.1 2007/08/20 16:01:35 drochner Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2007 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software written by Stephen L. Moshier.
|
||||
* It is redistributed by the NetBSD Foundation by permission of the author.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 "../src/namespace.h"
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
float complex
|
||||
clogf(float complex z)
|
||||
{
|
||||
float complex w;
|
||||
float p, rr;
|
||||
|
||||
rr = cabsf(z);
|
||||
p = logf(rr);
|
||||
rr = atan2f(cimagf(z), crealf(z));
|
||||
w = p + rr * I;
|
||||
return w;
|
||||
}
|
|
@ -1,47 +0,0 @@
|
|||
/* $NetBSD: clogl.c,v 1.1 2014/10/10 00:48:18 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2007 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software written by Stephen L. Moshier.
|
||||
* It is redistributed by the NetBSD Foundation by permission of the author.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 "../src/namespace.h"
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
long double complex
|
||||
clogl(long double complex z)
|
||||
{
|
||||
long double complex w;
|
||||
long double p, rr;
|
||||
|
||||
rr = cabsl(z);
|
||||
p = logl(rr);
|
||||
rr = atan2l(cimagl(z), creall(z));
|
||||
w = p + rr * I;
|
||||
return w;
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
/* $NetBSD: cpow.c,v 1.1 2007/08/20 16:01:35 drochner Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2007 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software written by Stephen L. Moshier.
|
||||
* It is redistributed by the NetBSD Foundation by permission of the author.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 "../src/namespace.h"
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
double complex
|
||||
cpow(double complex a, double complex z)
|
||||
{
|
||||
double complex w;
|
||||
double x, y, r, theta, absa, arga;
|
||||
|
||||
x = creal(z);
|
||||
y = cimag(z);
|
||||
absa = cabs(a);
|
||||
if (absa == 0.0) {
|
||||
return (0.0 + 0.0 * I);
|
||||
}
|
||||
arga = carg(a);
|
||||
r = pow(absa, x);
|
||||
theta = x * arga;
|
||||
if (y != 0.0) {
|
||||
r = r * exp(-y * arga);
|
||||
theta = theta + y * log(absa);
|
||||
}
|
||||
w = r * cos(theta) + (r * sin(theta)) * I;
|
||||
return w;
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
/* $NetBSD: cpowf.c,v 1.1 2007/08/20 16:01:36 drochner Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2007 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software written by Stephen L. Moshier.
|
||||
* It is redistributed by the NetBSD Foundation by permission of the author.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 "../src/namespace.h"
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
float complex
|
||||
cpowf(float complex a, float complex z)
|
||||
{
|
||||
float complex w;
|
||||
float x, y, r, theta, absa, arga;
|
||||
|
||||
x = crealf(z);
|
||||
y = cimagf(z);
|
||||
absa = cabsf(a);
|
||||
if (absa == 0.0f) {
|
||||
return (0.0f + 0.0f * I);
|
||||
}
|
||||
arga = cargf(a);
|
||||
r = powf(absa, x);
|
||||
theta = x * arga;
|
||||
if (y != 0.0f) {
|
||||
r = r * expf(-y * arga);
|
||||
theta = theta + y * logf(absa);
|
||||
}
|
||||
w = r * cosf(theta) + (r * sinf(theta)) * I;
|
||||
return w;
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
/* $NetBSD: cpowl.c,v 1.1 2014/10/10 00:48:18 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2007 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software written by Stephen L. Moshier.
|
||||
* It is redistributed by the NetBSD Foundation by permission of the author.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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 "../src/namespace.h"
|
||||
#include <complex.h>
|
||||
#include <math.h>
|
||||
|
||||
long double complex
|
||||
cpowl(long double complex a, long double complex z)
|
||||
{
|
||||
long double complex w;
|
||||
long double x, y, r, theta, absa, arga;
|
||||
|
||||
x = creall(z);
|
||||
y = cimagl(z);
|
||||
absa = cabsl(a);
|
||||
if (absa == 0.0L) {
|
||||
return (0.0L + 0.0L * I);
|
||||
}
|
||||
arga = cargl(a);
|
||||
r = powl(absa, x);
|
||||
theta = x * arga;
|
||||
if (y != 0.0L) {
|
||||
r = r * expl(-y * arga);
|
||||
theta = theta + y * logl(absa);
|
||||
}
|
||||
w = r * cosl(theta) + (r * sinl(theta)) * I;
|
||||
return w;
|
||||
}
|
Loading…
Reference in a new issue