📄 standard.c
字号:
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("y0: DOMAIN error\n", 17);
}
errno = EDOM;
}
break;
case 9:
/* y0(x<0) = NaN */
exc.type = DOMAIN;
exc.name = "y0";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("y0: DOMAIN error\n", 17);
}
errno = EDOM;
}
break;
case 10:
/* y1(0) = -inf */
exc.type = DOMAIN; /* should be SING for IEEE */
exc.name = "y1";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("y1: DOMAIN error\n", 17);
}
errno = EDOM;
}
break;
case 11:
/* y1(x<0) = NaN */
exc.type = DOMAIN;
exc.name = "y1";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("y1: DOMAIN error\n", 17);
}
errno = EDOM;
}
break;
case 12:
/* yn(n,0) = -inf */
exc.type = DOMAIN; /* should be SING for IEEE */
exc.name = "yn";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("yn: DOMAIN error\n", 17);
}
errno = EDOM;
}
break;
case 13:
/* yn(x<0) = NaN */
exc.type = DOMAIN;
exc.name = "yn";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("yn: DOMAIN error\n", 17);
}
errno = EDOM;
}
break;
case 14:
/* lgamma(finite) overflow */
exc.type = OVERFLOW;
exc.name = "lgamma";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = HUGE;
else
exc.retval = HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = ERANGE;
else if (!matherr(&exc)) {
errno = ERANGE;
}
break;
case 15:
/* lgamma(-integer) or lgamma(0) */
exc.type = SING;
exc.name = "lgamma";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = HUGE;
else
exc.retval = HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("lgamma: SING error\n", 19);
}
errno = EDOM;
}
break;
case 16:
/* log(0) */
exc.type = SING;
exc.name = "log";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = ERANGE;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("log: SING error\n", 16);
}
errno = EDOM;
}
break;
case 17:
/* log(x<0) */
exc.type = DOMAIN;
exc.name = "log";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("log: DOMAIN error\n", 18);
}
errno = EDOM;
}
break;
case 18:
/* log10(0) */
exc.type = SING;
exc.name = "log10";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = ERANGE;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("log10: SING error\n", 18);
}
errno = EDOM;
}
break;
case 19:
/* log10(x<0) */
exc.type = DOMAIN;
exc.name = "log10";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = -HUGE;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("log10: DOMAIN error\n", 20);
}
errno = EDOM;
}
break;
case 20:
/* pow(0.0,0.0) */
/* error only if cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID */
exc.type = DOMAIN;
exc.name = "pow";
exc.retval = zero;
if (cyg_libm_get_compat_mode() != CYGNUM_LIBM_COMPAT_SVID) exc.retval = 1.0;
else if (!matherr(&exc)) {
(void) WRITE2("pow(0,0): DOMAIN error\n", 23);
errno = EDOM;
}
break;
case 21:
/* pow(x,y) overflow */
exc.type = OVERFLOW;
exc.name = "pow";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
exc.retval = HUGE;
y *= 0.5;
if(x<zero&&rint(y)!=y) exc.retval = -HUGE;
} else {
exc.retval = HUGE_VAL;
y *= 0.5;
if(x<zero&&rint(y)!=y) exc.retval = -HUGE_VAL;
}
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = ERANGE;
else if (!matherr(&exc)) {
errno = ERANGE;
}
break;
case 22:
/* pow(x,y) underflow */
exc.type = UNDERFLOW;
exc.name = "pow";
exc.retval = zero;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = ERANGE;
else if (!matherr(&exc)) {
errno = ERANGE;
}
break;
case 23:
/* 0**neg */
exc.type = DOMAIN;
exc.name = "pow";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = zero;
else
exc.retval = -HUGE_VAL;
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
}
errno = EDOM;
}
break;
case 24:
/* neg**non-integral */
exc.type = DOMAIN;
exc.name = "pow";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = zero;
else
exc.retval = zero/zero; /* X/Open allow NaN */
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = EDOM;
else if (!matherr(&exc)) {
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID) {
(void) WRITE2("neg**non-integral: DOMAIN error\n", 32);
}
errno = EDOM;
}
break;
case 25:
/* sinh(finite) overflow */
exc.type = OVERFLOW;
exc.name = "sinh";
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)
exc.retval = ( (x>zero) ? HUGE : -HUGE);
else
exc.retval = ( (x>zero) ? HUGE_VAL : -HUGE_VAL);
if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)
errno = ERANGE;
else if (!matherr(&exc)) {
errno = ERANGE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -