1b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
2b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project/* @(#)k_standard.c 1.3 95/01/18 */
3b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project/*
4b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * ====================================================
5b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
6b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *
7b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Developed at SunSoft, a Sun Microsystems, Inc. business.
8b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Permission to use, copy, modify, and distribute this
9b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * software is freely granted, provided that this notice
10b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * is preserved.
11b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * ====================================================
12b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *
13b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project */
14b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
15b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#include "fdlibm.h"
16b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#include <errno.h>
17b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
18b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#ifndef _USE_WRITE
19b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#include <stdio.h>			/* fputs(), stderr */
20b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#define	WRITE2(u,v)	fputs(u, stderr)
21b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#else	/* !defined(_USE_WRITE) */
22b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#include <unistd.h>			/* write */
23b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#define	WRITE2(u,v)	write(2, u, v)
24b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#undef fflush
25b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#endif	/* !defined(_USE_WRITE) */
26b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
27b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectstatic double zero = 0.0;	/* used as const */
28b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
29b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project/*
30b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Standard conformance (non-IEEE) on exception cases.
31b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Mapping:
32b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	1 -- ieee_acos(|x|>1)
33b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	2 -- ieee_asin(|x|>1)
34b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	3 -- ieee_atan2(+-0,+-0)
35b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	4 -- hypot overflow
36b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	5 -- cosh overflow
37b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	6 -- exp overflow
38b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	7 -- exp underflow
39b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	8 -- ieee_y0(0)
40b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	9 -- ieee_y0(-ve)
41b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	10-- ieee_y1(0)
42b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	11-- ieee_y1(-ve)
43b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	12-- ieee_yn(0)
44b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	13-- ieee_yn(-ve)
45b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	14-- ieee_lgamma(finite) overflow
46b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	15-- ieee_lgamma(-integer)
47b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	16-- ieee_log(0)
48b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	17-- ieee_log(x<0)
49b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	18-- ieee_log10(0)
50b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	19-- ieee_log10(x<0)
51b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	20-- ieee_pow(0.0,0.0)
52b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	21-- ieee_pow(x,y) overflow
53b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	22-- ieee_pow(x,y) underflow
54b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	23-- ieee_pow(0,negative)
55b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	24-- ieee_pow(neg,non-integral)
56b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	25-- ieee_sinh(finite) overflow
57b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	26-- ieee_sqrt(negative)
58b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *      27-- ieee_fmod(x,0)
59b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *      28-- ieee_remainder(x,0)
60b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	29-- acosh(x<1)
61b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	30-- atanh(|x|>1)
62b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	31-- atanh(|x|=1)
63b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	32-- scalb overflow
64b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	33-- scalb underflow
65b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	34-- ieee_j0(|x|>X_TLOSS)
66b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	35-- ieee_y0(x>X_TLOSS)
67b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	36-- ieee_j1(|x|>X_TLOSS)
68b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	37-- ieee_y1(x>X_TLOSS)
69b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	38-- ieee_jn(|x|>X_TLOSS, n)
70b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	39-- ieee_yn(x>X_TLOSS, n)
71b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	40-- ieee_gamma(finite) overflow
72b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	41-- ieee_gamma(-integer)
73b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project *	42-- ieee_pow(NaN,0.0)
74b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project */
75b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
76b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
77b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#ifdef __STDC__
78b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	double __kernel_standard(double x, double y, int type)
79b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#else
80b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	double __kernel_standard(x,y,type)
81b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	double x,y; int type;
82b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#endif
83b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project{
84b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	struct exception exc;
85b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#ifndef HUGE_VAL	/* this is the only routine that uses HUGE_VAL */
86b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#define HUGE_VAL inf
87b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	double inf = 0.0;
88b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
89b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	__HI(inf) = 0x7ff00000;	/* set inf to infinite */
90b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#endif
91b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project
92b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#ifdef _USE_WRITE
93b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	(void) fflush(stdout);
94b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#endif
95b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	exc.arg1 = x;
96b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	exc.arg2 = y;
97b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	switch(type) {
98b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 1:
99b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_acos(|x|>1) */
100b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
101b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "acos";
102b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = zero;
103b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
104b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
105b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
106b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if(_LIB_VERSION == _SVID_) {
107b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		    (void) WRITE2("acos: DOMAIN error\n", 19);
108b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  }
109b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
110b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
111b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
112b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 2:
113b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_asin(|x|>1) */
114b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
115b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "asin";
116b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = zero;
117b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if(_LIB_VERSION == _POSIX_)
118b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
119b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
120b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if(_LIB_VERSION == _SVID_) {
121b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		    	(void) WRITE2("asin: DOMAIN error\n", 19);
122b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  }
123b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
124b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
125b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
126b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 3:
127b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_atan2(+-0,+-0) */
128b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.arg1 = y;
129b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.arg2 = x;
130b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
131b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "atan2";
132b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = zero;
133b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if(_LIB_VERSION == _POSIX_)
134b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
135b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
136b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if(_LIB_VERSION == _SVID_) {
137b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("atan2: DOMAIN error\n", 20);
138b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
139b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
140b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
141b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
142b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 4:
143b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_hypot(finite,finite) overflow */
144b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = OVERFLOW;
145b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "hypot";
146b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
147b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = HUGE;
148b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
149b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = HUGE_VAL;
150b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
151b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
152b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
153b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
154b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
155b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
156b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 5:
157b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_cosh(finite) overflow */
158b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = OVERFLOW;
159b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "cosh";
160b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
161b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = HUGE;
162b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
163b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = HUGE_VAL;
164b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
165b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
166b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
167b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
168b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
169b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
170b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 6:
171b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_exp(finite) overflow */
172b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = OVERFLOW;
173b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "exp";
174b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
175b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = HUGE;
176b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
177b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = HUGE_VAL;
178b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
179b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
180b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
181b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
182b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
183b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
184b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 7:
185b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_exp(finite) underflow */
186b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = UNDERFLOW;
187b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "exp";
188b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = zero;
189b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
190b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
191b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
192b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
193b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
194b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
195b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 8:
196b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_y0(0) = -inf */
197b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;	/* should be SING for IEEE */
198b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "y0";
199b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
200b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
201b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
202b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
203b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
204b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
205b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
206b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
207b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("y0: DOMAIN error\n", 17);
208b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
209b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
210b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
211b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
212b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 9:
213b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_y0(x<0) = NaN */
214b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
215b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "y0";
216b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
217b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
218b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
219b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
220b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
221b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
222b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
223b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
224b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("y0: DOMAIN error\n", 17);
225b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
226b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
227b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
228b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
229b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 10:
230b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_y1(0) = -inf */
231b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;	/* should be SING for IEEE */
232b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "y1";
233b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
234b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
235b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
236b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
237b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
238b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
239b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
240b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
241b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("y1: DOMAIN error\n", 17);
242b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
243b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
244b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
245b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
246b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 11:
247b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_y1(x<0) = NaN */
248b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
249b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "y1";
250b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
251b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
252b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
253b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
254b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
255b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
256b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
257b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
258b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("y1: DOMAIN error\n", 17);
259b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
260b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
261b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
262b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
263b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 12:
264b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_yn(n,0) = -inf */
265b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;	/* should be SING for IEEE */
266b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "yn";
267b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
268b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
269b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
270b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
271b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
272b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
273b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
274b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
275b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("yn: DOMAIN error\n", 17);
276b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
277b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
278b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
279b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
280b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 13:
281b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_yn(x<0) = NaN */
282b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
283b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "yn";
284b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
285b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
286b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
287b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
288b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
289b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
290b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
291b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
292b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("yn: DOMAIN error\n", 17);
293b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
294b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
295b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
296b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
297b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 14:
298b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_lgamma(finite) overflow */
299b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = OVERFLOW;
300b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "lgamma";
301b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _SVID_)
302b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  exc.retval = HUGE;
303b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else
304b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  exc.retval = HUGE_VAL;
305b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
306b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
307b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
308b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
309b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
310b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
311b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 15:
312b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_lgamma(-integer) or ieee_lgamma(0) */
313b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = SING;
314b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "lgamma";
315b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _SVID_)
316b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  exc.retval = HUGE;
317b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else
318b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  exc.retval = HUGE_VAL;
319b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
320b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
321b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
322b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
323b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("lgamma: SING error\n", 19);
324b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
325b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
326b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
327b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
328b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 16:
329b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_log(0) */
330b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = SING;
331b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "log";
332b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
333b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
334b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
335b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
336b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
337b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
338b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
339b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
340b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("log: SING error\n", 16);
341b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
342b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
343b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
344b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
345b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 17:
346b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_log(x<0) */
347b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
348b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "log";
349b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
350b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
351b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
352b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
353b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
354b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
355b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
356b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
357b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("log: DOMAIN error\n", 18);
358b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
359b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
360b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
361b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
362b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 18:
363b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_log10(0) */
364b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = SING;
365b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "log10";
366b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
367b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
368b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
369b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
370b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
371b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
372b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
373b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
374b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("log10: SING error\n", 18);
375b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
376b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
377b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
378b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
379b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 19:
380b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_log10(x<0) */
381b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
382b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "log10";
383b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
384b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE;
385b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
386b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
387b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
388b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
389b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
390b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
391b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("log10: DOMAIN error\n", 20);
392b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
393b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
394b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
395b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
396b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 20:
397b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_pow(0.0,0.0) */
398b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* error only if _LIB_VERSION == _SVID_ */
399b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
400b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "pow";
401b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = zero;
402b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION != _SVID_) exc.retval = 1.0;
403b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
404b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("pow(0,0): DOMAIN error\n", 23);
405b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = EDOM;
406b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
407b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
408b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 21:
409b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_pow(x,y) overflow */
410b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = OVERFLOW;
411b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "pow";
412b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_) {
413b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = HUGE;
414b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  y *= 0.5;
415b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if(x<zero&&ieee_rint(y)!=y) exc.retval = -HUGE;
416b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		} else {
417b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = HUGE_VAL;
418b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  y *= 0.5;
419b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if(x<zero&&ieee_rint(y)!=y) exc.retval = -HUGE_VAL;
420b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
421b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
422b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
423b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
424b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
425b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
426b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
427b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 22:
428b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_pow(x,y) underflow */
429b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = UNDERFLOW;
430b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "pow";
431b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval =  zero;
432b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
433b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
434b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
435b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
436b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
437b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
438b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 23:
439b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* 0**neg */
440b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
441b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "pow";
442b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
443b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = zero;
444b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
445b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = -HUGE_VAL;
446b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
447b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
448b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
449b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
450b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
451b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
452b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
453b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
454b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
455b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 24:
456b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* neg**non-integral */
457b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
458b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "pow";
459b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
460b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		    exc.retval = zero;
461b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
462b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		    exc.retval = zero/zero;	/* X/Open allow NaN */
463b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
464b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		   errno = EDOM;
465b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
466b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
467b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("neg**non-integral: DOMAIN error\n", 32);
468b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
469b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
470b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
471b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
472b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 25:
473b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_sinh(finite) overflow */
474b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = OVERFLOW;
475b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "sinh";
476b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
477b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = ( (x>zero) ? HUGE : -HUGE);
478b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
479b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = ( (x>zero) ? HUGE_VAL : -HUGE_VAL);
480b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
481b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
482b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
483b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
484b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
485b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
486b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 26:
487b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_sqrt(x<0) */
488b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
489b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "sqrt";
490b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _SVID_)
491b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = zero;
492b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
493b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  exc.retval = zero/zero;
494b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
495b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
496b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
497b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
498b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("sqrt: DOMAIN error\n", 19);
499b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
500b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
501b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
502b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
503b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project            case 27:
504b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                /* ieee_fmod(x,0) */
505b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = DOMAIN;
506b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "fmod";
507b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _SVID_)
508b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                    exc.retval = x;
509b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else
510b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		    exc.retval = zero/zero;
511b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
512b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
513b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
514b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  if (_LIB_VERSION == _SVID_) {
515b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                    (void) WRITE2("fmod:  DOMAIN error\n", 20);
516b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  }
517b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
518b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
519b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                break;
520b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project            case 28:
521b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                /* ieee_remainder(x,0) */
522b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = DOMAIN;
523b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "remainder";
524b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero/zero;
525b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
526b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
527b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
528b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  if (_LIB_VERSION == _SVID_) {
529b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                    (void) WRITE2("remainder: DOMAIN error\n", 24);
530b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  }
531b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
532b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
533b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                break;
534b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project            case 29:
535b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                /* acosh(x<1) */
536b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = DOMAIN;
537b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "acosh";
538b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero/zero;
539b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
540b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
541b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
542b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  if (_LIB_VERSION == _SVID_) {
543b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                    (void) WRITE2("acosh: DOMAIN error\n", 20);
544b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  }
545b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
546b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
547b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                break;
548b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project            case 30:
549b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                /* atanh(|x|>1) */
550b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = DOMAIN;
551b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "atanh";
552b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero/zero;
553b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
554b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
555b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
556b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  if (_LIB_VERSION == _SVID_) {
557b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                    (void) WRITE2("atanh: DOMAIN error\n", 20);
558b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  }
559b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
560b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
561b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                break;
562b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project            case 31:
563b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                /* atanh(|x|=1) */
564b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = SING;
565b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "atanh";
566b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = x/zero;	/* sign(x)*inf */
567b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
568b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
569b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
570b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  if (_LIB_VERSION == _SVID_) {
571b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                    (void) WRITE2("atanh: SING error\n", 18);
572b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  }
573b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = EDOM;
574b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
575b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                break;
576b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 32:
577b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* scalb overflow; SVID also returns +-HUGE_VAL */
578b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = OVERFLOW;
579b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "scalb";
580b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = x > zero ? HUGE_VAL : -HUGE_VAL;
581b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
582b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
583b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
584b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
585b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
586b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
587b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 33:
588b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* scalb underflow */
589b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = UNDERFLOW;
590b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "scalb";
591b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = ieee_copysign(zero,x);
592b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
593b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
594b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
595b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = ERANGE;
596b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
597b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
598b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 34:
599b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_j0(|x|>X_TLOSS) */
600b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = TLOSS;
601b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "j0";
602b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero;
603b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
604b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
605b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
606b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        if (_LIB_VERSION == _SVID_) {
607b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(exc.name, 2);
608b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(": TLOSS error\n", 14);
609b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        }
610b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
611b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
612b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
613b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 35:
614b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_y0(x>X_TLOSS) */
615b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = TLOSS;
616b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "y0";
617b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero;
618b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
619b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
620b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
621b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        if (_LIB_VERSION == _SVID_) {
622b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(exc.name, 2);
623b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(": TLOSS error\n", 14);
624b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        }
625b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
626b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
627b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
628b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 36:
629b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_j1(|x|>X_TLOSS) */
630b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = TLOSS;
631b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "j1";
632b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero;
633b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
634b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
635b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
636b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        if (_LIB_VERSION == _SVID_) {
637b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(exc.name, 2);
638b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(": TLOSS error\n", 14);
639b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        }
640b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
641b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
642b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
643b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 37:
644b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_y1(x>X_TLOSS) */
645b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = TLOSS;
646b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "y1";
647b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero;
648b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
649b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
650b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
651b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        if (_LIB_VERSION == _SVID_) {
652b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(exc.name, 2);
653b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(": TLOSS error\n", 14);
654b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        }
655b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
656b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
657b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
658b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 38:
659b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_jn(|x|>X_TLOSS) */
660b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = TLOSS;
661b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "jn";
662b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero;
663b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
664b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
665b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
666b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        if (_LIB_VERSION == _SVID_) {
667b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(exc.name, 2);
668b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(": TLOSS error\n", 14);
669b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        }
670b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
671b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
672b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
673b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 39:
674b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_yn(x>X_TLOSS) */
675b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.type = TLOSS;
676b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.name = "yn";
677b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                exc.retval = zero;
678b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
679b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
680b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
681b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        if (_LIB_VERSION == _SVID_) {
682b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(exc.name, 2);
683b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                                (void) WRITE2(": TLOSS error\n", 14);
684b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        }
685b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                        errno = ERANGE;
686b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
687b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
688b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 40:
689b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_gamma(finite) overflow */
690b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = OVERFLOW;
691b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "gamma";
692b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _SVID_)
693b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  exc.retval = HUGE;
694b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else
695b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  exc.retval = HUGE_VAL;
696b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _POSIX_)
697b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = ERANGE;
698b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else if (!ieee_matherr(&exc)) {
699b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  errno = ERANGE;
700b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                }
701b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
702b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 41:
703b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_gamma(-integer) or ieee_gamma(0) */
704b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = SING;
705b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "gamma";
706b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                if (_LIB_VERSION == _SVID_)
707b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  exc.retval = HUGE;
708b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                else
709b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project                  exc.retval = HUGE_VAL;
710b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _POSIX_)
711b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
712b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
713b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  if (_LIB_VERSION == _SVID_) {
714b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			(void) WRITE2("gamma: SING error\n", 18);
715b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		      }
716b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		  errno = EDOM;
717b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
718b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
719b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	    case 42:
720b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* ieee_pow(NaN,0.0) */
721b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		/* error only if _LIB_VERSION == _SVID_ & _XOPEN_ */
722b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.type = DOMAIN;
723b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.name = "pow";
724b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		exc.retval = x;
725b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		if (_LIB_VERSION == _IEEE_ ||
726b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		    _LIB_VERSION == _POSIX_) exc.retval = 1.0;
727b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		else if (!ieee_matherr(&exc)) {
728b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project			errno = EDOM;
729b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		}
730b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project		break;
731b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	}
732b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project	return exc.retval;
733b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project}
734