OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib/] [newlib/] [libm/] [math/] [w_pow.c] - Diff between revs 39 and 56

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 39 Rev 56
Line 88... Line 88...
            if(y==0.0) {
            if(y==0.0) {
                /* pow(NaN,0.0) */
                /* pow(NaN,0.0) */
                /* error only if _LIB_VERSION == _SVID_ & _XOPEN_ */
                /* error only if _LIB_VERSION == _SVID_ & _XOPEN_ */
                exc.type = DOMAIN;
                exc.type = DOMAIN;
                exc.name = "pow";
                exc.name = "pow";
 
                exc.err = 0;
 
                exc.arg1 = x;
 
                exc.arg2 = y;
                exc.retval = x;
                exc.retval = x;
                if (_LIB_VERSION == _IEEE_ ||
                if (_LIB_VERSION == _IEEE_ ||
                    _LIB_VERSION == _POSIX_) exc.retval = 1.0;
                    _LIB_VERSION == _POSIX_) exc.retval = 1.0;
                else if (!matherr(&exc)) {
                else if (!matherr(&exc)) {
                        errno = EDOM;
                        errno = EDOM;
Line 106... Line 109...
            if(y==0.0) {
            if(y==0.0) {
                /* pow(0.0,0.0) */
                /* pow(0.0,0.0) */
                /* error only if _LIB_VERSION == _SVID_ */
                /* error only if _LIB_VERSION == _SVID_ */
                exc.type = DOMAIN;
                exc.type = DOMAIN;
                exc.name = "pow";
                exc.name = "pow";
 
                exc.err = 0;
 
                exc.arg1 = x;
 
                exc.arg2 = y;
                exc.retval = 0.0;
                exc.retval = 0.0;
                if (_LIB_VERSION != _SVID_) exc.retval = 1.0;
                if (_LIB_VERSION != _SVID_) exc.retval = 1.0;
                else if (!matherr(&exc)) {
                else if (!matherr(&exc)) {
                        errno = EDOM;
                        errno = EDOM;
                }
                }
Line 119... Line 125...
            }
            }
            if(finite(y)&&y<0.0) {
            if(finite(y)&&y<0.0) {
                /* 0**neg */
                /* 0**neg */
                exc.type = DOMAIN;
                exc.type = DOMAIN;
                exc.name = "pow";
                exc.name = "pow";
 
                exc.err = 0;
 
                exc.arg1 = x;
 
                exc.arg2 = y;
                if (_LIB_VERSION == _SVID_)
                if (_LIB_VERSION == _SVID_)
                  exc.retval = 0.0;
                  exc.retval = 0.0;
                else
                else
                  exc.retval = -HUGE_VAL;
                  exc.retval = -HUGE_VAL;
                if (_LIB_VERSION == _POSIX_)
                if (_LIB_VERSION == _POSIX_)
Line 140... Line 149...
            if(finite(x)&&finite(y)) {
            if(finite(x)&&finite(y)) {
                if(isnan(z)) {
                if(isnan(z)) {
                    /* neg**non-integral */
                    /* neg**non-integral */
                    exc.type = DOMAIN;
                    exc.type = DOMAIN;
                    exc.name = "pow";
                    exc.name = "pow";
 
                    exc.err = 0;
 
                    exc.arg1 = x;
 
                    exc.arg2 = y;
                    if (_LIB_VERSION == _SVID_)
                    if (_LIB_VERSION == _SVID_)
                        exc.retval = 0.0;
                        exc.retval = 0.0;
                    else
                    else
                        exc.retval = 0.0/0.0;   /* X/Open allow NaN */
                        exc.retval = 0.0/0.0;   /* X/Open allow NaN */
                    if (_LIB_VERSION == _POSIX_)
                    if (_LIB_VERSION == _POSIX_)
Line 156... Line 168...
                    return exc.retval;
                    return exc.retval;
                } else {
                } else {
                    /* pow(x,y) overflow */
                    /* pow(x,y) overflow */
                    exc.type = OVERFLOW;
                    exc.type = OVERFLOW;
                    exc.name = "pow";
                    exc.name = "pow";
 
                    exc.err = 0;
 
                    exc.arg1 = x;
 
                    exc.arg2 = y;
                    if (_LIB_VERSION == _SVID_) {
                    if (_LIB_VERSION == _SVID_) {
                       exc.retval = HUGE;
                       exc.retval = HUGE;
                       y *= 0.5;
                       y *= 0.5;
                       if(x<0.0&&rint(y)!=y) exc.retval = -HUGE;
                       if(x<0.0&&rint(y)!=y) exc.retval = -HUGE;
                    } else {
                    } else {
Line 180... Line 195...
        }
        }
        if(z==0.0&&finite(x)&&finite(y)) {
        if(z==0.0&&finite(x)&&finite(y)) {
            /* pow(x,y) underflow */
            /* pow(x,y) underflow */
            exc.type = UNDERFLOW;
            exc.type = UNDERFLOW;
            exc.name = "pow";
            exc.name = "pow";
 
            exc.err = 0;
 
            exc.arg1 = x;
 
            exc.arg2 = y;
            exc.retval =  0.0;
            exc.retval =  0.0;
            if (_LIB_VERSION == _POSIX_)
            if (_LIB_VERSION == _POSIX_)
                errno = ERANGE;
                errno = ERANGE;
            else if (!matherr(&exc)) {
            else if (!matherr(&exc)) {
                errno = ERANGE;
                errno = ERANGE;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.