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