Ignore:
File:
1 edited

Legend:

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

    r88d5c1e r9d58539  
    3939#include <common.h>
    4040
    41 /** Add two single-precision floats with the same sign.
     41/**
     42 * Add two single-precision floats with the same signs.
    4243 *
    4344 * @param a First input operand.
     
    4546 * @return Result of addition.
    4647 */
    47 float32 add_float32(float32 a, float32 b)
     48float32 addFloat32(float32 a, float32 b)
    4849{
    4950        int expdiff;
     
    5253        expdiff = a.parts.exp - b.parts.exp;
    5354        if (expdiff < 0) {
    54                 if (is_float32_nan(b)) {
    55                         /* TODO: fix SigNaN */
    56                         if (is_float32_signan(b)) {
     55                if (isFloat32NaN(b)) {
     56                        /* TODO: fix SigNaN */
     57                        if (isFloat32SigNaN(b)) {
    5758                        }
    5859
     
    7071                expdiff *= -1;
    7172        } else {
    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);
     73                if ((isFloat32NaN(a)) || (isFloat32NaN(b))) {
     74                        /* TODO: fix SigNaN */
     75                        if (isFloat32SigNaN(a) || isFloat32SigNaN(b)) {
     76                        }
     77                        return (isFloat32NaN(a) ? a : b);
    7778                }
    7879               
     
    149150}
    150151
    151 /** Add two double-precision floats with the same sign.
     152/**
     153 * Add two double-precision floats with the same signs.
    152154 *
    153155 * @param a First input operand.
     
    155157 * @return Result of addition.
    156158 */
    157 float64 add_float64(float64 a, float64 b)
     159float64 addFloat64(float64 a, float64 b)
    158160{
    159161        int expdiff;
     
    163165        expdiff = ((int) a.parts.exp) - b.parts.exp;
    164166        if (expdiff < 0) {
    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) {
     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) { 
    175177                        return b;
    176178                }
     
    182184                expdiff *= -1;
    183185        } else {
    184                 if (is_float64_nan(a)) {
    185                         /* TODO: fix SigNaN */
    186                         if (is_float64_signan(a) || is_float64_signan(b)) {
     186                if (isFloat64NaN(a)) {
     187                        /* TODO: fix SigNaN */
     188                        if (isFloat64SigNaN(a) || isFloat64SigNaN(b)) {
    187189                        }
    188190                        return a;
     
    263265}
    264266
    265 /** Add two quadruple-precision floats with the same sign.
     267/**
     268 * Add two quadruple-precision floats with the same signs.
    266269 *
    267270 * @param a First input operand.
     
    269272 * @return Result of addition.
    270273 */
    271 float128 add_float128(float128 a, float128 b)
     274float128 addFloat128(float128 a, float128 b)
    272275{
    273276        int expdiff;
     
    277280        expdiff = ((int) a.parts.exp) - b.parts.exp;
    278281        if (expdiff < 0) {
    279                 if (is_float128_nan(b)) {
    280                         /* TODO: fix SigNaN */
    281                         if (is_float128_signan(b)) {
     282                if (isFloat128NaN(b)) {
     283                        /* TODO: fix SigNaN */
     284                        if (isFloat128SigNaN(b)) {
    282285                        }
    283286
     
    298301                expdiff *= -1;
    299302        } else {
    300                 if (is_float128_nan(a)) {
    301                         /* TODO: fix SigNaN */
    302                         if (is_float128_signan(a) || is_float128_signan(b)) {
     303                if (isFloat128NaN(a)) {
     304                        /* TODO: fix SigNaN */
     305                        if (isFloat128SigNaN(a) || isFloat128SigNaN(b)) {
    303306                        }
    304307                        return a;
Note: See TracChangeset for help on using the changeset viewer.