⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 standard.c

📁 ecos为实时嵌入式操作系统
💻 C
📖 第 1 页 / 共 3 页
字号:
                /* sqrt(x<0) */                exc.type = DOMAIN;                exc.name = "sqrt";                if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)                  exc.retval = zero;                else                  exc.retval = zero/zero;                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("sqrt: DOMAIN error\n", 19);                      }                  errno = EDOM;                }                break;            case 27:                /* fmod(x,0) */                exc.type = DOMAIN;                exc.name = "fmod";                if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID)                    exc.retval = x;                else                    exc.retval = zero/zero;                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("fmod:  DOMAIN error\n", 20);                  }                  errno = EDOM;                }                break;            case 28:                /* remainder(x,0) */                exc.type = DOMAIN;                exc.name = "remainder";                exc.retval = zero/zero;                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("remainder: DOMAIN error\n", 24);                  }                  errno = EDOM;                }                break;            case 29:                /* acosh(x<1) */                exc.type = DOMAIN;                exc.name = "acosh";                exc.retval = zero/zero;                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("acosh: DOMAIN error\n", 20);                  }                  errno = EDOM;                }                break;            case 30:                /* atanh(|x|>1) */                exc.type = DOMAIN;                exc.name = "atanh";                exc.retval = zero/zero;                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("atanh: DOMAIN error\n", 20);                  }                  errno = EDOM;                }                break;            case 31:                /* atanh(|x|=1) */                exc.type = SING;                exc.name = "atanh";                exc.retval = x/zero;    /* sign(x)*inf */                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("atanh: SING error\n", 18);                  }                  errno = EDOM;                }                break;            case 32:                /* scalb overflow; SVID also returns +-HUGE_VAL */                exc.type = OVERFLOW;                exc.name = "scalb";                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;                }                break;            case 33:                /* scalb underflow */                exc.type = UNDERFLOW;                exc.name = "scalb";                exc.retval = copysign(zero,x);                if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)                  errno = ERANGE;                else if (!matherr(&exc)) {                        errno = ERANGE;                }                break;            case 34:                /* j0(|x|>X_TLOSS) */                exc.type = TLOSS;                exc.name = "j0";                exc.retval = zero;                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(exc.name, 2);                                (void) WRITE2(": TLOSS error\n", 14);                        }                        errno = ERANGE;                }                        break;            case 35:                /* y0(x>X_TLOSS) */                exc.type = TLOSS;                exc.name = "y0";                exc.retval = zero;                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(exc.name, 2);                                (void) WRITE2(": TLOSS error\n", 14);                        }                        errno = ERANGE;                }                        break;            case 36:                /* j1(|x|>X_TLOSS) */                exc.type = TLOSS;                exc.name = "j1";                exc.retval = zero;                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(exc.name, 2);                                (void) WRITE2(": TLOSS error\n", 14);                        }                        errno = ERANGE;                }                        break;            case 37:                /* y1(x>X_TLOSS) */                exc.type = TLOSS;                exc.name = "y1";                exc.retval = zero;                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(exc.name, 2);                                (void) WRITE2(": TLOSS error\n", 14);                        }                        errno = ERANGE;                }                        break;            case 38:                /* jn(|x|>X_TLOSS) */                exc.type = TLOSS;                exc.name = "jn";                exc.retval = zero;                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(exc.name, 2);                                (void) WRITE2(": TLOSS error\n", 14);                        }                        errno = ERANGE;                }                        break;            case 39:                /* yn(x>X_TLOSS) */                exc.type = TLOSS;                exc.name = "yn";                exc.retval = zero;                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(exc.name, 2);                                (void) WRITE2(": TLOSS error\n", 14);                        }                        errno = ERANGE;                }                        break;            case 40:                /* gamma(finite) overflow */                exc.type = OVERFLOW;                exc.name = "gamma";                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 41:                /* gamma(-integer) or gamma(0) */                exc.type = SING;                exc.name = "gamma";                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("gamma: SING error\n", 18);                      }                  errno = EDOM;                }                break;            case 42:                /* pow(NaN,0.0) */                /* error only if cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_SVID & CYGNUM_LIBM_COMPAT_XOPEN */                exc.type = DOMAIN;                exc.name = "pow";                exc.retval = x;                if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_IEEE ||                    cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX) exc.retval = 1.0;                else if (!matherr(&exc)) {                        errno = EDOM;                }                break;            case 43:                /* ldexp overflow; SVID also returns +-HUGE_VAL */                exc.type = OVERFLOW;                exc.name = "ldexp";                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;                }                break;            case 44:                /* ldexp underflow */                exc.type = UNDERFLOW;                exc.name = "ldexp";                exc.retval = copysign(zero,x);                if (cyg_libm_get_compat_mode() == CYGNUM_LIBM_COMPAT_POSIX)                  errno = ERANGE;                else if (!matherr(&exc)) {                        errno = ERANGE;                }                break;        }        return exc.retval; }#endif // ifdef CYGPKG_LIBM// EOF standard.c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -