Changeset 9b0a6b4 in mainline for uspace/lib/softfloat/generic/add.c


Ignore:
Timestamp:
2012-04-13T06:36:25Z (12 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
90f067d9
Parents:
e61aa80 (diff), d11a181 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/softfloat/generic/add.c

    re61aa80 r9b0a6b4  
    3939#include <common.h>
    4040
    41 /**
    42  * Add two single-precision floats with the same signs.
     41/** Add two single-precision floats with the same sign.
    4342 *
    4443 * @param a First input operand.
     
    4645 * @return Result of addition.
    4746 */
    48 float32 addFloat32(float32 a, float32 b)
     47float32 add_float32(float32 a, float32 b)
    4948{
    5049        int expdiff;
     
    5352        expdiff = a.parts.exp - b.parts.exp;
    5453        if (expdiff < 0) {
    55                 if (isFloat32NaN(b)) {
    56                         /* TODO: fix SigNaN */
    57                         if (isFloat32SigNaN(b)) {
     54                if (is_float32_nan(b)) {
     55                        /* TODO: fix SigNaN */
     56                        if (is_float32_signan(b)) {
    5857                        }
    5958
     
    7170                expdiff *= -1;
    7271        } else {
    73                 if ((isFloat32NaN(a)) || (isFloat32NaN(b))) {
    74                         /* TODO: fix SigNaN */
    75                         if (isFloat32SigNaN(a) || isFloat32SigNaN(b)) {
    76                         }
    77                         return (isFloat32NaN(a) ? a : b);
     72                if ((is_float32_nan(a)) || (is_float32_nan(b))) {
     73                        /* TODO: fix SigNaN */
     74                        if (is_float32_signan(a) || is_float32_signan(b)) {
     75                        }
     76                        return (is_float32_nan(a) ? a : b);
    7877                }
    7978               
     
    150149}
    151150
    152 /**
    153  * Add two double-precision floats with the same signs.
     151/** Add two double-precision floats with the same sign.
    154152 *
    155153 * @param a First input operand.
     
    157155 * @return Result of addition.
    158156 */
    159 float64 addFloat64(float64 a, float64 b)
     157float64 add_float64(float64 a, float64 b)
    160158{
    161159        int expdiff;
     
    165163        expdiff = ((int) a.parts.exp) - b.parts.exp;
    166164        if (expdiff < 0) {
    167                 if (isFloat64NaN(b)) {
    168                         /* TODO: fix SigNaN */
    169                         if (isFloat64SigNaN(b)) {
    170                         }
    171 
    172                         return b;
    173                 }
    174                
    175                 /* b is infinity and a not */   
    176                 if (b.parts.exp == FLOAT64_MAX_EXPONENT) { 
     165                if (is_float64_nan(b)) {
     166                        /* TODO: fix SigNaN */
     167                        if (is_float64_signan(b)) {
     168                        }
     169
     170                        return b;
     171                }
     172               
     173                /* b is infinity and a not */
     174                if (b.parts.exp == FLOAT64_MAX_EXPONENT) {
    177175                        return b;
    178176                }
     
    184182                expdiff *= -1;
    185183        } else {
    186                 if (isFloat64NaN(a)) {
    187                         /* TODO: fix SigNaN */
    188                         if (isFloat64SigNaN(a) || isFloat64SigNaN(b)) {
     184                if (is_float64_nan(a)) {
     185                        /* TODO: fix SigNaN */
     186                        if (is_float64_signan(a) || is_float64_signan(b)) {
    189187                        }
    190188                        return a;
     
    265263}
    266264
    267 /**
    268  * Add two quadruple-precision floats with the same signs.
     265/** Add two quadruple-precision floats with the same sign.
    269266 *
    270267 * @param a First input operand.
     
    272269 * @return Result of addition.
    273270 */
    274 float128 addFloat128(float128 a, float128 b)
     271float128 add_float128(float128 a, float128 b)
    275272{
    276273        int expdiff;
     
    280277        expdiff = ((int) a.parts.exp) - b.parts.exp;
    281278        if (expdiff < 0) {
    282                 if (isFloat128NaN(b)) {
    283                         /* TODO: fix SigNaN */
    284                         if (isFloat128SigNaN(b)) {
     279                if (is_float128_nan(b)) {
     280                        /* TODO: fix SigNaN */
     281                        if (is_float128_signan(b)) {
    285282                        }
    286283
     
    301298                expdiff *= -1;
    302299        } else {
    303                 if (isFloat128NaN(a)) {
    304                         /* TODO: fix SigNaN */
    305                         if (isFloat128SigNaN(a) || isFloat128SigNaN(b)) {
     300                if (is_float128_nan(a)) {
     301                        /* TODO: fix SigNaN */
     302                        if (is_float128_signan(a) || is_float128_signan(b)) {
    306303                        }
    307304                        return a;
Note: See TracChangeset for help on using the changeset viewer.