mirror of git://sourceware.org/git/glibc.git
* sysdeps/i386/fpu/s_cos.S: Set errno for ±Inf.
* sysdeps/i386/fpu/s_cosf.S: Likewise. * sysdeps/i386/fpu/s_cosl.S: Likewise. * sysdeps/i386/fpu/s_sin.S: Likewise. * sysdeps/i386/fpu/s_sinf.S: Likewise. * sysdeps/i386/fpu/s_sinl.S: Likewise. * sysdeps/ieee754/dbl-64/s_sin.c: Likewise. * sysdeps/ieee754/flt-32/s_cosf.c: Likewise. * sysdeps/ieee754/flt-32/s_sinf.c: Likewise. * sysdeps/ieee754/ldbl-96/s_cosl.c: Likewise. * sysdeps/ieee754/ldbl-96/s_sinl.c: Likewise. * sysdeps/x86_64/fpu/s_cosl.S: Likewise. * sysdeps/x86_64/fpu/s_sinl.S: Likewise. * math/libm-test.inc: Add tests for errno after sin/cos calls with ±Inf.
This commit is contained in:
parent
4bbf8999f4
commit
0c59a1963e
16
ChangeLog
16
ChangeLog
|
|
@ -1,5 +1,21 @@
|
||||||
2009-04-25 Ulrich Drepper <drepper@redhat.com>
|
2009-04-25 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/i386/fpu/s_cos.S: Set errno for ±Inf.
|
||||||
|
* sysdeps/i386/fpu/s_cosf.S: Likewise.
|
||||||
|
* sysdeps/i386/fpu/s_cosl.S: Likewise.
|
||||||
|
* sysdeps/i386/fpu/s_sin.S: Likewise.
|
||||||
|
* sysdeps/i386/fpu/s_sinf.S: Likewise.
|
||||||
|
* sysdeps/i386/fpu/s_sinl.S: Likewise.
|
||||||
|
* sysdeps/ieee754/dbl-64/s_sin.c: Likewise.
|
||||||
|
* sysdeps/ieee754/flt-32/s_cosf.c: Likewise.
|
||||||
|
* sysdeps/ieee754/flt-32/s_sinf.c: Likewise.
|
||||||
|
* sysdeps/ieee754/ldbl-96/s_cosl.c: Likewise.
|
||||||
|
* sysdeps/ieee754/ldbl-96/s_sinl.c: Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/s_cosl.S: Likewise.
|
||||||
|
* sysdeps/x86_64/fpu/s_sinl.S: Likewise.
|
||||||
|
* math/libm-test.inc: Add tests for errno after sin/cos calls with
|
||||||
|
±Inf.
|
||||||
|
|
||||||
* stdlib/strtod_l.c (round_and_return): We have to set errno to
|
* stdlib/strtod_l.c (round_and_return): We have to set errno to
|
||||||
ERANGE for underflows.
|
ERANGE for underflows.
|
||||||
* stdlib/tst-strtod.c (tests): Two tests should set errno to ERANGE.
|
* stdlib/tst-strtod.c (tests): Two tests should set errno to ERANGE.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 1997-2006, 2007 Free Software Foundation, Inc.
|
/* Copyright (C) 1997-2006, 2007, 2009 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
||||||
|
|
||||||
|
|
@ -1993,9 +1993,15 @@ cos_test (void)
|
||||||
|
|
||||||
TEST_f_f (cos, 0, 1);
|
TEST_f_f (cos, 0, 1);
|
||||||
TEST_f_f (cos, minus_zero, 1);
|
TEST_f_f (cos, minus_zero, 1);
|
||||||
|
errno = 0;
|
||||||
TEST_f_f (cos, plus_infty, nan_value, INVALID_EXCEPTION);
|
TEST_f_f (cos, plus_infty, nan_value, INVALID_EXCEPTION);
|
||||||
|
check_int ("errno for cos(+inf) == EDOM", errno, EDOM, 0, 0, 0);
|
||||||
|
errno = 0;
|
||||||
TEST_f_f (cos, minus_infty, nan_value, INVALID_EXCEPTION);
|
TEST_f_f (cos, minus_infty, nan_value, INVALID_EXCEPTION);
|
||||||
|
check_int ("errno for cos(-inf) == EDOM", errno, EDOM, 0, 0, 0);
|
||||||
|
errno = 0;
|
||||||
TEST_f_f (cos, nan_value, nan_value);
|
TEST_f_f (cos, nan_value, nan_value);
|
||||||
|
check_int ("errno for cos(NaN) unchanged", errno, 0, 0, 0, 0);
|
||||||
|
|
||||||
TEST_f_f (cos, M_PI_6l * 2.0, 0.5);
|
TEST_f_f (cos, M_PI_6l * 2.0, 0.5);
|
||||||
TEST_f_f (cos, M_PI_6l * 4.0, -0.5);
|
TEST_f_f (cos, M_PI_6l * 4.0, -0.5);
|
||||||
|
|
@ -5497,9 +5503,15 @@ sin_test (void)
|
||||||
|
|
||||||
TEST_f_f (sin, 0, 0);
|
TEST_f_f (sin, 0, 0);
|
||||||
TEST_f_f (sin, minus_zero, minus_zero);
|
TEST_f_f (sin, minus_zero, minus_zero);
|
||||||
|
errno = 0;
|
||||||
TEST_f_f (sin, plus_infty, nan_value, INVALID_EXCEPTION);
|
TEST_f_f (sin, plus_infty, nan_value, INVALID_EXCEPTION);
|
||||||
|
check_int ("errno for sin(+inf) == EDOM", errno, EDOM, 0, 0, 0);
|
||||||
|
errno = 0;
|
||||||
TEST_f_f (sin, minus_infty, nan_value, INVALID_EXCEPTION);
|
TEST_f_f (sin, minus_infty, nan_value, INVALID_EXCEPTION);
|
||||||
|
check_int ("errno for sin(-inf) == EDOM", errno, EDOM, 0, 0, 0);
|
||||||
|
errno = 0;
|
||||||
TEST_f_f (sin, nan_value, nan_value);
|
TEST_f_f (sin, nan_value, nan_value);
|
||||||
|
check_int ("errno for sin(NaN) unchanged", errno, 0, 0, 0, 0);
|
||||||
|
|
||||||
TEST_f_f (sin, M_PI_6l, 0.5);
|
TEST_f_f (sin, M_PI_6l, 0.5);
|
||||||
TEST_f_f (sin, -M_PI_6l, -0.5);
|
TEST_f_f (sin, -M_PI_6l, -0.5);
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
# ifdef __USE_POSIX
|
# ifdef __USE_POSIX
|
||||||
# define L_ctermid @L_ctermid@
|
# define L_ctermid @L_ctermid@
|
||||||
# ifndef __USE_XOPEN2K
|
# if !defined __USE_XOPEN2K || defined __USE_GNU
|
||||||
# define L_cuserid @L_cuserid@
|
# define L_cuserid @L_cuserid@
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,24 @@
|
||||||
/*
|
/*
|
||||||
* Written by J.T. Conklin <jtc@netbsd.org>.
|
* Written by J.T. Conklin <jtc@netbsd.org>.
|
||||||
|
* Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
|
||||||
* Public domain.
|
* Public domain.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __need_Emath
|
||||||
|
#include <bits/errno.h>
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
|
|
||||||
RCSID("$NetBSD: s_cos.S,v 1.5 1995/05/08 23:54:00 jtc Exp $")
|
RCSID("$NetBSD: s_cos.S,v 1.5 1995/05/08 23:54:00 jtc Exp $")
|
||||||
|
|
||||||
ENTRY(__cos)
|
ENTRY(__cos)
|
||||||
fldl 4(%esp)
|
fldl 4(%esp)
|
||||||
fcos
|
fxam
|
||||||
|
fstsw %ax
|
||||||
|
movb $0x45, %dh
|
||||||
|
andb %ah, %dh
|
||||||
|
cmpb $0x05, %dh
|
||||||
|
je 3f
|
||||||
|
4: fcos
|
||||||
fnstsw %ax
|
fnstsw %ax
|
||||||
testl $0x400,%eax
|
testl $0x400,%eax
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
|
@ -25,5 +34,21 @@ ENTRY(__cos)
|
||||||
fstp %st(1)
|
fstp %st(1)
|
||||||
fcos
|
fcos
|
||||||
ret
|
ret
|
||||||
|
3:
|
||||||
|
#ifdef PIC
|
||||||
|
pushl %ebx
|
||||||
|
cfi_adjust_cfa_offset (4)
|
||||||
|
cfi_rel_offset (ebx, 0)
|
||||||
|
LOAD_PIC_REG (bx)
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
popl %ebx
|
||||||
|
cfi_adjust_cfa_offset (-4)
|
||||||
|
cfi_restore (ebx)
|
||||||
|
#else
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
#endif
|
||||||
|
jmp 4b
|
||||||
END (__cos)
|
END (__cos)
|
||||||
weak_alias (__cos, cos)
|
weak_alias (__cos, cos)
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,24 @@
|
||||||
/*
|
/*
|
||||||
* Written by J.T. Conklin <jtc@netbsd.org>.
|
* Written by J.T. Conklin <jtc@netbsd.org>.
|
||||||
|
* Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
|
||||||
* Public domain.
|
* Public domain.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __need_Emath
|
||||||
|
#include <bits/errno.h>
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
|
|
||||||
RCSID("$NetBSD: s_cosf.S,v 1.3 1995/05/08 23:55:16 jtc Exp $")
|
RCSID("$NetBSD: s_cosf.S,v 1.3 1995/05/08 23:55:16 jtc Exp $")
|
||||||
|
|
||||||
ENTRY(__cosf)
|
ENTRY(__cosf)
|
||||||
flds 4(%esp)
|
flds 4(%esp)
|
||||||
fcos
|
fxam
|
||||||
|
fstsw %ax
|
||||||
|
movb $0x45, %dh
|
||||||
|
andb %ah, %dh
|
||||||
|
cmpb $0x05, %dh
|
||||||
|
je 3f
|
||||||
|
4: fcos
|
||||||
fnstsw %ax
|
fnstsw %ax
|
||||||
testl $0x400,%eax
|
testl $0x400,%eax
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
|
@ -25,5 +34,21 @@ ENTRY(__cosf)
|
||||||
fstp %st(1)
|
fstp %st(1)
|
||||||
fcos
|
fcos
|
||||||
ret
|
ret
|
||||||
|
3:
|
||||||
|
#ifdef PIC
|
||||||
|
pushl %ebx
|
||||||
|
cfi_adjust_cfa_offset (4)
|
||||||
|
cfi_rel_offset (ebx, 0)
|
||||||
|
LOAD_PIC_REG (bx)
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
popl %ebx
|
||||||
|
cfi_adjust_cfa_offset (-4)
|
||||||
|
cfi_restore (ebx)
|
||||||
|
#else
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
#endif
|
||||||
|
jmp 4b
|
||||||
END (__cosf)
|
END (__cosf)
|
||||||
weak_alias (__cosf, cosf)
|
weak_alias (__cosf, cosf)
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,22 @@
|
||||||
* Public domain.
|
* Public domain.
|
||||||
*
|
*
|
||||||
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
||||||
|
* Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __need_Emath
|
||||||
|
#include <bits/errno.h>
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
|
|
||||||
RCSID("$NetBSD: $")
|
|
||||||
|
|
||||||
ENTRY(__cosl)
|
ENTRY(__cosl)
|
||||||
fldt 4(%esp)
|
fldt 4(%esp)
|
||||||
fcos
|
fxam
|
||||||
|
fstsw %ax
|
||||||
|
movb $0x45, %dh
|
||||||
|
andb %ah, %dh
|
||||||
|
cmpb $0x05, %dh
|
||||||
|
je 3f
|
||||||
|
4: fcos
|
||||||
fnstsw %ax
|
fnstsw %ax
|
||||||
testl $0x400,%eax
|
testl $0x400,%eax
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
|
@ -27,5 +34,21 @@ ENTRY(__cosl)
|
||||||
fstp %st(1)
|
fstp %st(1)
|
||||||
fcos
|
fcos
|
||||||
ret
|
ret
|
||||||
|
3:
|
||||||
|
#ifdef PIC
|
||||||
|
pushl %ebx
|
||||||
|
cfi_adjust_cfa_offset (4)
|
||||||
|
cfi_rel_offset (ebx, 0)
|
||||||
|
LOAD_PIC_REG (bx)
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
popl %ebx
|
||||||
|
cfi_adjust_cfa_offset (-4)
|
||||||
|
cfi_restore (ebx)
|
||||||
|
#else
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
#endif
|
||||||
|
jmp 4b
|
||||||
END (__cosl)
|
END (__cosl)
|
||||||
weak_alias (__cosl, cosl)
|
weak_alias (__cosl, cosl)
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,24 @@
|
||||||
/*
|
/*
|
||||||
* Written by J.T. Conklin <jtc@netbsd.org>.
|
* Written by J.T. Conklin <jtc@netbsd.org>.
|
||||||
|
* Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
|
||||||
* Public domain.
|
* Public domain.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __need_Emath
|
||||||
|
#include <bits/errno.h>
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
|
|
||||||
RCSID("$NetBSD: s_sin.S,v 1.5 1995/05/09 00:25:54 jtc Exp $")
|
RCSID("$NetBSD: s_sin.S,v 1.5 1995/05/09 00:25:54 jtc Exp $")
|
||||||
|
|
||||||
ENTRY(__sin)
|
ENTRY(__sin)
|
||||||
fldl 4(%esp)
|
fldl 4(%esp)
|
||||||
fsin
|
fxam
|
||||||
|
fstsw %ax
|
||||||
|
movb $0x45, %dh
|
||||||
|
andb %ah, %dh
|
||||||
|
cmpb $0x05, %dh
|
||||||
|
je 3f
|
||||||
|
4: fsin
|
||||||
fnstsw %ax
|
fnstsw %ax
|
||||||
testl $0x400,%eax
|
testl $0x400,%eax
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
|
@ -25,5 +34,21 @@ ENTRY(__sin)
|
||||||
fstp %st(1)
|
fstp %st(1)
|
||||||
fsin
|
fsin
|
||||||
ret
|
ret
|
||||||
|
3:
|
||||||
|
#ifdef PIC
|
||||||
|
pushl %ebx
|
||||||
|
cfi_adjust_cfa_offset (4)
|
||||||
|
cfi_rel_offset (ebx, 0)
|
||||||
|
LOAD_PIC_REG (bx)
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
popl %ebx
|
||||||
|
cfi_adjust_cfa_offset (-4)
|
||||||
|
cfi_restore (ebx)
|
||||||
|
#else
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
#endif
|
||||||
|
jmp 4b
|
||||||
END (__sin)
|
END (__sin)
|
||||||
weak_alias (__sin, sin)
|
weak_alias (__sin, sin)
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,24 @@
|
||||||
/*
|
/*
|
||||||
* Written by J.T. Conklin <jtc@netbsd.org>.
|
* Written by J.T. Conklin <jtc@netbsd.org>.
|
||||||
|
* Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
|
||||||
* Public domain.
|
* Public domain.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __need_Emath
|
||||||
|
#include <bits/errno.h>
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
|
|
||||||
RCSID("$NetBSD: s_sinf.S,v 1.3 1995/05/09 00:27:53 jtc Exp $")
|
RCSID("$NetBSD: s_sinf.S,v 1.3 1995/05/09 00:27:53 jtc Exp $")
|
||||||
|
|
||||||
ENTRY(__sinf)
|
ENTRY(__sinf)
|
||||||
flds 4(%esp)
|
flds 4(%esp)
|
||||||
fsin
|
fxam
|
||||||
|
fstsw %ax
|
||||||
|
movb $0x45, %dh
|
||||||
|
andb %ah, %dh
|
||||||
|
cmpb $0x05, %dh
|
||||||
|
je 3f
|
||||||
|
4: fsin
|
||||||
fnstsw %ax
|
fnstsw %ax
|
||||||
testl $0x400,%eax
|
testl $0x400,%eax
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
|
@ -25,5 +34,21 @@ ENTRY(__sinf)
|
||||||
fstp %st(1)
|
fstp %st(1)
|
||||||
fsin
|
fsin
|
||||||
ret
|
ret
|
||||||
|
3:
|
||||||
|
#ifdef PIC
|
||||||
|
pushl %ebx
|
||||||
|
cfi_adjust_cfa_offset (4)
|
||||||
|
cfi_rel_offset (ebx, 0)
|
||||||
|
LOAD_PIC_REG (bx)
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
popl %ebx
|
||||||
|
cfi_adjust_cfa_offset (-4)
|
||||||
|
cfi_restore (ebx)
|
||||||
|
#else
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
#endif
|
||||||
|
jmp 4b
|
||||||
END (__sinf)
|
END (__sinf)
|
||||||
weak_alias (__sinf, sinf)
|
weak_alias (__sinf, sinf)
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,22 @@
|
||||||
* Public domain.
|
* Public domain.
|
||||||
*
|
*
|
||||||
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
||||||
|
* Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __need_Emath
|
||||||
|
#include <bits/errno.h>
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
|
|
||||||
RCSID("$NetBSD: $")
|
|
||||||
|
|
||||||
ENTRY(__sinl)
|
ENTRY(__sinl)
|
||||||
fldt 4(%esp)
|
fldt 4(%esp)
|
||||||
fsin
|
fxam
|
||||||
|
fstsw %ax
|
||||||
|
movb $0x45, %dh
|
||||||
|
andb %ah, %dh
|
||||||
|
cmpb $0x05, %dh
|
||||||
|
je 3f
|
||||||
|
4: fsin
|
||||||
fnstsw %ax
|
fnstsw %ax
|
||||||
testl $0x400,%eax
|
testl $0x400,%eax
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
|
@ -27,5 +34,21 @@ ENTRY(__sinl)
|
||||||
fstp %st(1)
|
fstp %st(1)
|
||||||
fsin
|
fsin
|
||||||
ret
|
ret
|
||||||
|
3:
|
||||||
|
#ifdef PIC
|
||||||
|
pushl %ebx
|
||||||
|
cfi_adjust_cfa_offset (4)
|
||||||
|
cfi_rel_offset (ebx, 0)
|
||||||
|
LOAD_PIC_REG (bx)
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
popl %ebx
|
||||||
|
cfi_adjust_cfa_offset (-4)
|
||||||
|
cfi_restore (ebx)
|
||||||
|
#else
|
||||||
|
call __errno_location@PLT
|
||||||
|
movl $EDOM, (%eax)
|
||||||
|
#endif
|
||||||
|
jmp 4b
|
||||||
END (__sinl)
|
END (__sinl)
|
||||||
weak_alias (__sinl, sinl)
|
weak_alias (__sinl, sinl)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* IBM Accurate Mathematical Library
|
* IBM Accurate Mathematical Library
|
||||||
* written by International Business Machines Corp.
|
* written by International Business Machines Corp.
|
||||||
* Copyright (C) 2001 Free Software Foundation
|
* Copyright (C) 2001, 2009 Free Software Foundation
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU Lesser General Public License as published by
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
|
@ -48,6 +48,7 @@
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include "endian.h"
|
#include "endian.h"
|
||||||
#include "mydefs.h"
|
#include "mydefs.h"
|
||||||
#include "usncs.h"
|
#include "usncs.h"
|
||||||
|
|
@ -329,7 +330,11 @@ double __sin(double x){
|
||||||
} /* else if (k < 0x7ff00000 ) */
|
} /* else if (k < 0x7ff00000 ) */
|
||||||
|
|
||||||
/*--------------------- |x| > 2^1024 ----------------------------------*/
|
/*--------------------- |x| > 2^1024 ----------------------------------*/
|
||||||
else return x / x;
|
else {
|
||||||
|
if (k == 0x7ff00000 && u.i[LOW_HALF] == 0)
|
||||||
|
__set_errno (EDOM);
|
||||||
|
return x / x;
|
||||||
|
}
|
||||||
return 0; /* unreachable */
|
return 0; /* unreachable */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -572,7 +577,11 @@ double __cos(double x)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
else return x / x; /* |x| > 2^1024 */
|
else {
|
||||||
|
if (k == 0x7ff00000 && u.i[LOW_HALF] == 0)
|
||||||
|
__set_errno (EDOM);
|
||||||
|
return x / x; /* |x| > 2^1024 */
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
*
|
*
|
||||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||||
* Permission to use, copy, modify, and distribute this
|
* 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.
|
* is preserved.
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
static char rcsid[] = "$NetBSD: s_cosf.c,v 1.4 1995/05/10 20:47:03 jtc Exp $";
|
static char rcsid[] = "$NetBSD: s_cosf.c,v 1.4 1995/05/10 20:47:03 jtc Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "math_private.h"
|
#include "math_private.h"
|
||||||
|
|
||||||
|
|
@ -43,7 +44,11 @@ static float one=1.0;
|
||||||
if(ix <= 0x3f490fd8) return __kernel_cosf(x,z);
|
if(ix <= 0x3f490fd8) return __kernel_cosf(x,z);
|
||||||
|
|
||||||
/* cos(Inf or NaN) is NaN */
|
/* cos(Inf or NaN) is NaN */
|
||||||
else if (ix>=0x7f800000) return x-x;
|
else if (ix>=0x7f800000) {
|
||||||
|
if (ix == 0x7f800000)
|
||||||
|
__set_errno (EDOM);
|
||||||
|
return x-x;
|
||||||
|
}
|
||||||
|
|
||||||
/* argument reduction needed */
|
/* argument reduction needed */
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
*
|
*
|
||||||
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
* Developed at SunPro, a Sun Microsystems, Inc. business.
|
||||||
* Permission to use, copy, modify, and distribute this
|
* 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.
|
* is preserved.
|
||||||
* ====================================================
|
* ====================================================
|
||||||
*/
|
*/
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
static char rcsid[] = "$NetBSD: s_sinf.c,v 1.4 1995/05/10 20:48:16 jtc Exp $";
|
static char rcsid[] = "$NetBSD: s_sinf.c,v 1.4 1995/05/10 20:48:16 jtc Exp $";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "math_private.h"
|
#include "math_private.h"
|
||||||
|
|
||||||
|
|
@ -37,7 +38,11 @@ static char rcsid[] = "$NetBSD: s_sinf.c,v 1.4 1995/05/10 20:48:16 jtc Exp $";
|
||||||
if(ix <= 0x3f490fd8) return __kernel_sinf(x,z,0);
|
if(ix <= 0x3f490fd8) return __kernel_sinf(x,z,0);
|
||||||
|
|
||||||
/* sin(Inf or NaN) is NaN */
|
/* sin(Inf or NaN) is NaN */
|
||||||
else if (ix>=0x7f800000) return x-x;
|
else if (ix>=0x7f800000) {
|
||||||
|
if (ix == 0x7f800000)
|
||||||
|
__set_errno (EDOM);
|
||||||
|
return x-x;
|
||||||
|
}
|
||||||
|
|
||||||
/* argument reduction needed */
|
/* argument reduction needed */
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ static char rcsid[] = "$NetBSD: $";
|
||||||
* TRIG(x) returns trig(x) nearly rounded
|
* TRIG(x) returns trig(x) nearly rounded
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "math_private.h"
|
#include "math_private.h"
|
||||||
|
|
||||||
|
|
@ -71,7 +72,11 @@ static char rcsid[] = "$NetBSD: $";
|
||||||
return __kernel_cosl(x,z);
|
return __kernel_cosl(x,z);
|
||||||
|
|
||||||
/* cos(Inf or NaN) is NaN */
|
/* cos(Inf or NaN) is NaN */
|
||||||
else if (se==0x7fff) return x-x;
|
else if (se==0x7fff) {
|
||||||
|
if ((i0 | i1) == 0)
|
||||||
|
__set_errno (EDOM);
|
||||||
|
return x-x;
|
||||||
|
}
|
||||||
|
|
||||||
/* argument reduction needed */
|
/* argument reduction needed */
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ static char rcsid[] = "$NetBSD: $";
|
||||||
* TRIG(x) returns trig(x) nearly rounded
|
* TRIG(x) returns trig(x) nearly rounded
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
#include "math_private.h"
|
#include "math_private.h"
|
||||||
|
|
||||||
|
|
@ -71,7 +72,11 @@ static char rcsid[] = "$NetBSD: $";
|
||||||
return __kernel_sinl(x,z,0);
|
return __kernel_sinl(x,z,0);
|
||||||
|
|
||||||
/* sin(Inf or NaN) is NaN */
|
/* sin(Inf or NaN) is NaN */
|
||||||
else if (se==0x7fff) return x-x;
|
else if (se==0x7fff) {
|
||||||
|
if ((i0 | i1) == 0)
|
||||||
|
__set_errno (EDOM);
|
||||||
|
return x-x;
|
||||||
|
}
|
||||||
|
|
||||||
/* argument reduction needed */
|
/* argument reduction needed */
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,22 @@
|
||||||
*
|
*
|
||||||
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
||||||
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
|
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
|
||||||
|
* Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __need_Emath
|
||||||
|
#include <bits/errno.h>
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
|
|
||||||
RCSID("$NetBSD: $")
|
|
||||||
|
|
||||||
ENTRY(__cosl)
|
ENTRY(__cosl)
|
||||||
fldt 8(%rsp)
|
fldt 8(%rsp)
|
||||||
fcos
|
fxam
|
||||||
|
fstsw %ax
|
||||||
|
movb $0x45, %dh
|
||||||
|
andb %ah, %dh
|
||||||
|
cmpb $0x05, %dh
|
||||||
|
je 3f
|
||||||
|
4: fcos
|
||||||
fnstsw %ax
|
fnstsw %ax
|
||||||
testl $0x400,%eax
|
testl $0x400,%eax
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
|
@ -28,5 +35,8 @@ ENTRY(__cosl)
|
||||||
fstp %st(1)
|
fstp %st(1)
|
||||||
fcos
|
fcos
|
||||||
ret
|
ret
|
||||||
|
3: call __errno_location@PLT
|
||||||
|
movl $EDOM, (%rax)
|
||||||
|
jmp 4b
|
||||||
END (__cosl)
|
END (__cosl)
|
||||||
weak_alias (__cosl, cosl)
|
weak_alias (__cosl, cosl)
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,22 @@
|
||||||
*
|
*
|
||||||
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
||||||
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
|
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
|
||||||
|
* Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define __need_Emath
|
||||||
|
#include <bits/errno.h>
|
||||||
#include <machine/asm.h>
|
#include <machine/asm.h>
|
||||||
|
|
||||||
ENTRY(__sinl)
|
ENTRY(__sinl)
|
||||||
fldt 8(%rsp)
|
fldt 8(%rsp)
|
||||||
fsin
|
fxam
|
||||||
|
fstsw %ax
|
||||||
|
movb $0x45, %dh
|
||||||
|
andb %ah, %dh
|
||||||
|
cmpb $0x05, %dh
|
||||||
|
je 3f
|
||||||
|
4: fsin
|
||||||
fnstsw %ax
|
fnstsw %ax
|
||||||
testl $0x400,%eax
|
testl $0x400,%eax
|
||||||
jnz 1f
|
jnz 1f
|
||||||
|
|
@ -26,5 +35,8 @@ ENTRY(__sinl)
|
||||||
fstp %st(1)
|
fstp %st(1)
|
||||||
fsin
|
fsin
|
||||||
ret
|
ret
|
||||||
|
3: call __errno_location@PLT
|
||||||
|
movl $EDOM, (%rax)
|
||||||
|
jmp 4b
|
||||||
END (__sinl)
|
END (__sinl)
|
||||||
weak_alias (__sinl, sinl)
|
weak_alias (__sinl, sinl)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue