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 float x, pinf, pzero, ninf, nzero;
182 Int ieflag, *ix, sbit1, sbit2, negone=-1, errornum;
183
184
185
186
188
189 pinf = *rmax / *rmin;
190 pzero = 1.0 / pinf;
191 pinf = 1.0 / pzero;
192
193 if( pzero != 0.0 ){
194 printf("pzero = %g should be zero\n",pzero);
195 *isieee = 0;
196 return ;
197 }
198 if( ieflag == 1 ){
199 sbit1 = (*((
Int *)&pzero) >> 31) & 1;
200 sbit2 = (*((
Int *)&pinf) >> 31) & 1;
201 }
202 if( sbit1 == 1 ){
203 printf("Sign of positive infinity is incorrect\n");
204 *isieee = 0;
205 }
206 if( sbit2 == 1 ){
207 printf("Sign of positive zero is incorrect\n");
208 *isieee = 0;
209 }
210
211 ninf = -pinf;
212 nzero = 1.0 / ninf;
213 ninf = 1.0 / nzero;
214
215 if( nzero != 0.0 ){
216 printf("nzero = %g should be zero\n",nzero);
217 *isieee = 0;
218 }
219 if( ieflag == 1 ){
220 sbit1 = (*((
Int *)&nzero) >> 31) & 1;
221 sbit2 = (*((
Int *)&ninf) >> 31) & 1;
222 }
223 if( sbit1 == 0 ){
224 printf("Sign of negative infinity is incorrect\n");
225 *isieee = 0;
226 }
227 if( sbit2 == 0 ){
228 printf("Sign of negative zero is incorrect\n");
229 *isieee = 0;
230 }
231}
void pslasnbt_(Int *ieflag)