-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtan.h
More file actions
196 lines (196 loc) · 14.9 KB
/
Copy pathtan.h
File metadata and controls
196 lines (196 loc) · 14.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
// Copyright (C) 1988-1994 Sun Microsystems, Inc. 2550 Garcia Avenue
// Mountain View, California 94043 All rights reserved.
//
// Any person is hereby authorized to download, copy, use, create bug fixes,
// and distribute, subject to the following conditions:
//
// 1. the software may not be redistributed for a fee except as
// reasonable to cover media costs;
// 2. any copy of the software must include this notice, as well as
// any other embedded copyright notices; and
// 3. any distribution of this software or derivative works thereof
// must comply with all applicable U.S. export control laws.
//
// THE SOFTWARE IS MADE AVAILABLE "AS IS" AND WITHOUT EXPRESS OR IMPLIED
// WARRANTY OF ANY KIND, INCLUDING BUT NOT LIMITED TO THE IMPLIED
// WARRANTIES OF DESIGN, MERCHANTIBILITY, FITNESS FOR A PARTICULAR
// PURPOSE, NON-INFRINGEMENT, PERFORMANCE OR CONFORMANCE TO
// SPECIFICATIONS.
//
// BY DOWNLOADING AND/OR USING THIS SOFTWARE, THE USER WAIVES ALL CLAIMS
// AGAINST SUN MICROSYSTEMS, INC. AND ITS AFFILIATED COMPANIES IN ANY
// JURISDICTION, INCLUDING BUT NOT LIMITED TO CLAIMS FOR DAMAGES OR
// EQUITABLE RELIEF BASED ON LOSS OF DATA, AND SPECIFICALLY WAIVES EVEN
// UNKNOWN OR UNANTICIPATED CLAIMS OR LOSSES, PRESENT AND FUTURE.
//
// IN NO EVENT WILL SUN MICROSYSTEMS, INC. OR ANY OF ITS AFFILIATED
// COMPANIES BE LIABLE FOR ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL,
// INDIRECT AND CONSEQUENTIAL DAMAGES, EVEN IF IT HAS BEEN ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGES.
//
// This file is provided with no support and without any obligation on the
// part of Sun Microsystems, Inc. ("Sun") or any of its affiliated
// companies to assist in its use, correction, modification or
// enhancement. Nevertheless, and without creating any obligation on its
// part, Sun welcomes your comments concerning the software and requests
// that they be sent to fdlibm-comments@sunpro.sun.com.
// tand(+-max)
// tand(tiny) is tiny
T(RN, 0x1p-30, 0x1p-30, -0x1.555556p-10, INEXACT)
T(RN, -0x1p-30, -0x1p-30, 0x1.555556p-10, INEXACT)
T(RN, 0x1p-1022, 0x1p-1022, 0x0p+0, INEXACT)
T(RN, -0x1p-1022, -0x1p-1022, 0x0p+0, INEXACT)
T(RN, 0x1p-1074, 0x1p-1074, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, -0x1p-1074, -0x1p-1074, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, 0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RN, -0x0p+0, -0x0p+0, 0x0p+0, 0)
T(RZ, 0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RZ, -0x0p+0, -0x0p+0, 0x0p+0, 0)
T(RU, 0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RU, -0x0p+0, -0x0p+0, 0x0p+0, 0)
T(RD, 0x0p+0, 0x0p+0, 0x0p+0, 0)
T(RD, -0x0p+0, -0x0p+0, 0x0p+0, 0)
// tand(nan or inf) is nan
T(RN, inf, nan, 0x0p+0, INVALID)
T(RN, -inf, nan, 0x0p+0, INVALID)
T(RN, nan, nan, 0x0p+0, 0)
T(RN, nan, nan, 0x0p+0, 0)
// tand(+-pi/4) is +-1 within 16 ulp
T(RN, 0x1.921fb54442d18p-1, 0x1.fffffffffffffp-1, -0x1.cb3b3ap-2, INEXACT)
T(RN, -0x1.921fb54442d18p-1, -0x1.fffffffffffffp-1, 0x1.cb3b3ap-2, INEXACT)
T(RZ, 0x1.921fb54442d18p-1, 0x1.fffffffffffffp-1, -0x1.cb3b3ap-2, INEXACT)
T(RZ, -0x1.921fb54442d18p-1, -0x1.fffffffffffffp-1, 0x1.cb3b3ap-2, INEXACT)
T(RU, 0x1.921fb54442d18p-1, 0x1p+0, 0x1.1a6264p-2, INEXACT)
T(RU, -0x1.921fb54442d18p-1, -0x1.fffffffffffffp-1, 0x1.cb3b3ap-2, INEXACT)
T(RD, 0x1.921fb54442d18p-1, 0x1.fffffffffffffp-1, -0x1.cb3b3ap-2, INEXACT)
T(RD, -0x1.921fb54442d18p-1, -0x1p+0, -0x1.1a6264p-2, INEXACT)
T(RD, 0x1p-1022, 0x1p-1022, 0x0p+0, INEXACT)
T(RD, 0x1.0000000000001p-1022, 0x1.0000000000001p-1022, 0x0p+0, INEXACT)
T(RD, 0x1.0000000000002p-1022, 0x1.0000000000002p-1022, 0x0p+0, INEXACT)
T(RD, 0x1.ffffffffffffbp-1022, 0x1.ffffffffffffbp-1022, 0x0p+0, INEXACT)
T(RD, 0x1p-1021, 0x1p-1021, 0x0p+0, INEXACT)
T(RD, 0x1.0000000000003p-1021, 0x1.0000000000003p-1021, 0x0p+0, INEXACT)
T(RD, 0x1p-1020, 0x1p-1020, 0x0p+0, INEXACT)
T(RD, 0x1.8p-27, 0x1.8p-27, -0x1.2p-2, INEXACT)
T(RD, 0x1p-26, 0x1p-26, -0x1.555556p-2, INEXACT)
T(RD, 0x1p-1074, 0x1p-1074, 0x0p+0, INEXACT|UNDERFLOW)
T(RD, 0x1p-1073, 0x1p-1073, 0x0p+0, INEXACT|UNDERFLOW)
T(RD, 0x1.2p-1071, 0x1.2p-1071, 0x0p+0, INEXACT|UNDERFLOW)
T(RD, 0x1p-1024, 0x1p-1024, 0x0p+0, INEXACT|UNDERFLOW)
T(RD, 0x1p-1023, 0x1p-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RD, 0x1.ffffffffffffcp-1023, 0x1.ffffffffffffcp-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RD, 0x1.ffffffffffffep-1023, 0x1.ffffffffffffep-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RD, nan, nan, 0x0p+0, 0)
T(RD, nan, nan, 0x0p+0, 0)
T(RD, inf, nan, 0x0p+0, INVALID)
T(RD, -inf, nan, 0x0p+0, INVALID)
T(RD, -0x1p-1022,-0x1.0000000000001p-1022, -0x1p+0, INEXACT)
T(RD,-0x1.0000000000001p-1022,-0x1.0000000000002p-1022, -0x1p+0, INEXACT)
T(RD,-0x1.0000000000002p-1022,-0x1.0000000000003p-1022, -0x1p+0, INEXACT)
T(RD, -0x1p-1021,-0x1.0000000000001p-1021, -0x1p+0, INEXACT)
T(RD, -0x1p-1020,-0x1.0000000000001p-1020, -0x1p+0, INEXACT)
T(RD, -0x1.8p-27, -0x1.8000000000001p-27, -0x1.7p-1, INEXACT)
T(RD, -0x1p-26, -0x1.0000000000001p-26, -0x1.555556p-1, INEXACT)
T(RD, -0x1p-1074, -0x1p-1073, -0x1p+0, INEXACT|UNDERFLOW)
T(RD, -0x1p-1073, -0x1.8p-1073, -0x1p+0, INEXACT|UNDERFLOW)
T(RD, -0x1p-1024,-0x1.0000000000004p-1024, -0x1p+0, INEXACT|UNDERFLOW)
T(RD, -0x1p-1023,-0x1.0000000000002p-1023, -0x1p+0, INEXACT|UNDERFLOW)
T(RD,-0x1.ffffffffffffcp-1023,-0x1.ffffffffffffep-1023, -0x1p+0, INEXACT|UNDERFLOW)
T(RD,-0x1.ffffffffffffep-1023, -0x1p-1022, -0x1p+0, INEXACT|UNDERFLOW)
T(RN, 0x1.0000000000001p-1022, 0x1.0000000000001p-1022, 0x0p+0, INEXACT)
T(RN, 0x1.0000000000002p-1022, 0x1.0000000000002p-1022, 0x0p+0, INEXACT)
T(RN, 0x1.ffffffffffffbp-1022, 0x1.ffffffffffffbp-1022, 0x0p+0, INEXACT)
T(RN, 0x1p-1021, 0x1p-1021, 0x0p+0, INEXACT)
T(RN, 0x1.0000000000003p-1021, 0x1.0000000000003p-1021, 0x0p+0, INEXACT)
T(RN, 0x1p-1020, 0x1p-1020, 0x0p+0, INEXACT)
T(RN, 0x1.8p-27, 0x1.8p-27, -0x1.2p-2, INEXACT)
T(RN, 0x1p-26, 0x1p-26, -0x1.555556p-2, INEXACT)
T(RN,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022, 0x0p+0, INEXACT)
T(RN,-0x1.0000000000002p-1022,-0x1.0000000000002p-1022, 0x0p+0, INEXACT)
T(RN,-0x1.ffffffffffffbp-1022,-0x1.ffffffffffffbp-1022, 0x0p+0, INEXACT)
T(RN, -0x1p-1021, -0x1p-1021, 0x0p+0, INEXACT)
T(RN,-0x1.0000000000003p-1021,-0x1.0000000000003p-1021, 0x0p+0, INEXACT)
T(RN, -0x1p-1020, -0x1p-1020, 0x0p+0, INEXACT)
T(RN, -0x1.8p-27, -0x1.8p-27, 0x1.2p-2, INEXACT)
T(RN, -0x1p-26, -0x1p-26, 0x1.555556p-2, INEXACT)
T(RN, 0x1p-1073, 0x1p-1073, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, 0x1.2p-1071, 0x1.2p-1071, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, 0x1p-1024, 0x1p-1024, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, 0x1p-1023, 0x1p-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, 0x1.ffffffffffffcp-1023, 0x1.ffffffffffffcp-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, 0x1.ffffffffffffep-1023, 0x1.ffffffffffffep-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, -0x1p-1073, -0x1p-1073, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, -0x1.2p-1071, -0x1.2p-1071, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, -0x1p-1024, -0x1p-1024, 0x0p+0, INEXACT|UNDERFLOW)
T(RN, -0x1p-1023, -0x1p-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RN,-0x1.ffffffffffffcp-1023,-0x1.ffffffffffffcp-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RN,-0x1.ffffffffffffep-1023,-0x1.ffffffffffffep-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RU, -0x1p-1022, -0x1p-1022, 0x0p+0, INEXACT)
T(RU,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022, 0x0p+0, INEXACT)
T(RU,-0x1.0000000000002p-1022,-0x1.0000000000002p-1022, 0x0p+0, INEXACT)
T(RU,-0x1.ffffffffffffbp-1022,-0x1.ffffffffffffbp-1022, 0x0p+0, INEXACT)
T(RU, -0x1p-1021, -0x1p-1021, 0x0p+0, INEXACT)
T(RU,-0x1.0000000000003p-1021,-0x1.0000000000003p-1021, 0x0p+0, INEXACT)
T(RU, -0x1p-1020, -0x1p-1020, 0x0p+0, INEXACT)
T(RU, -0x1.8p-27, -0x1.8p-27, 0x1.2p-2, INEXACT)
T(RU, -0x1p-26, -0x1p-26, 0x1.555556p-2, INEXACT)
T(RU, -0x1p-1074, -0x1p-1074, 0x0p+0, INEXACT|UNDERFLOW)
T(RU, -0x1p-1073, -0x1p-1073, 0x0p+0, INEXACT|UNDERFLOW)
T(RU, -0x1.2p-1071, -0x1.2p-1071, 0x0p+0, INEXACT|UNDERFLOW)
T(RU, -0x1p-1024, -0x1p-1024, 0x0p+0, INEXACT|UNDERFLOW)
T(RU, -0x1p-1023, -0x1p-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RU,-0x1.ffffffffffffcp-1023,-0x1.ffffffffffffcp-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RU,-0x1.ffffffffffffep-1023,-0x1.ffffffffffffep-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RU, nan, nan, 0x0p+0, 0)
T(RU, nan, nan, 0x0p+0, 0)
T(RU, inf, nan, 0x0p+0, INVALID)
T(RU, -inf, nan, 0x0p+0, INVALID)
T(RU, 0x1p-1022, 0x1.0000000000001p-1022, 0x1p+0, INEXACT)
T(RU, 0x1.0000000000001p-1022, 0x1.0000000000002p-1022, 0x1p+0, INEXACT)
T(RU, 0x1.0000000000002p-1022, 0x1.0000000000003p-1022, 0x1p+0, INEXACT)
T(RU, 0x1p-1021, 0x1.0000000000001p-1021, 0x1p+0, INEXACT)
T(RU, 0x1p-1020, 0x1.0000000000001p-1020, 0x1p+0, INEXACT)
T(RU, 0x1.8p-27, 0x1.8000000000001p-27, 0x1.7p-1, INEXACT)
T(RU, 0x1p-26, 0x1.0000000000001p-26, 0x1.555556p-1, INEXACT)
T(RU, 0x1p-1074, 0x1p-1073, 0x1p+0, INEXACT|UNDERFLOW)
T(RU, 0x1p-1073, 0x1.8p-1073, 0x1p+0, INEXACT|UNDERFLOW)
T(RU, 0x1p-1024, 0x1.0000000000004p-1024, 0x1p+0, INEXACT|UNDERFLOW)
T(RU, 0x1p-1023, 0x1.0000000000002p-1023, 0x1p+0, INEXACT|UNDERFLOW)
T(RU, 0x1.ffffffffffffcp-1023, 0x1.ffffffffffffep-1023, 0x1p+0, INEXACT|UNDERFLOW)
T(RU, 0x1.ffffffffffffep-1023, 0x1p-1022, 0x1p+0, INEXACT|UNDERFLOW)
T(RZ, 0x1p-1022, 0x1p-1022, 0x0p+0, INEXACT)
T(RZ, 0x1.0000000000001p-1022, 0x1.0000000000001p-1022, 0x0p+0, INEXACT)
T(RZ, 0x1.0000000000002p-1022, 0x1.0000000000002p-1022, 0x0p+0, INEXACT)
T(RZ, 0x1.ffffffffffffbp-1022, 0x1.ffffffffffffbp-1022, 0x0p+0, INEXACT)
T(RZ, 0x1p-1021, 0x1p-1021, 0x0p+0, INEXACT)
T(RZ, 0x1.0000000000003p-1021, 0x1.0000000000003p-1021, 0x0p+0, INEXACT)
T(RZ, 0x1p-1020, 0x1p-1020, 0x0p+0, INEXACT)
T(RZ, 0x1.8p-27, 0x1.8p-27, -0x1.2p-2, INEXACT)
T(RZ, 0x1p-26, 0x1p-26, -0x1.555556p-2, INEXACT)
T(RZ, -0x1p-1022, -0x1p-1022, 0x0p+0, INEXACT)
T(RZ,-0x1.0000000000001p-1022,-0x1.0000000000001p-1022, 0x0p+0, INEXACT)
T(RZ,-0x1.0000000000002p-1022,-0x1.0000000000002p-1022, 0x0p+0, INEXACT)
T(RZ,-0x1.ffffffffffffbp-1022,-0x1.ffffffffffffbp-1022, 0x0p+0, INEXACT)
T(RZ, -0x1p-1021, -0x1p-1021, 0x0p+0, INEXACT)
T(RZ,-0x1.0000000000003p-1021,-0x1.0000000000003p-1021, 0x0p+0, INEXACT)
T(RZ, -0x1p-1020, -0x1p-1020, 0x0p+0, INEXACT)
T(RZ, -0x1.8p-27, -0x1.8p-27, 0x1.2p-2, INEXACT)
T(RZ, -0x1p-26, -0x1p-26, 0x1.555556p-2, INEXACT)
T(RZ, 0x1p-1074, 0x1p-1074, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, 0x1p-1073, 0x1p-1073, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, 0x1.2p-1071, 0x1.2p-1071, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, 0x1p-1024, 0x1p-1024, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, 0x1p-1023, 0x1p-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, 0x1.ffffffffffffcp-1023, 0x1.ffffffffffffcp-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, 0x1.ffffffffffffep-1023, 0x1.ffffffffffffep-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, -0x1p-1074, -0x1p-1074, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, -0x1p-1073, -0x1p-1073, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, -0x1.2p-1071, -0x1.2p-1071, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, -0x1p-1024, -0x1p-1024, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, -0x1p-1023, -0x1p-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ,-0x1.ffffffffffffcp-1023,-0x1.ffffffffffffcp-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ,-0x1.ffffffffffffep-1023,-0x1.ffffffffffffep-1023, 0x0p+0, INEXACT|UNDERFLOW)
T(RZ, nan, nan, 0x0p+0, 0)
T(RZ, nan, nan, 0x0p+0, 0)
T(RZ, inf, nan, 0x0p+0, INVALID)
T(RZ, -inf, nan, 0x0p+0, INVALID)