Changeset e6f5766 in mainline for uspace/lib/math/generic/trunc.c


Ignore:
Timestamp:
2015-09-05T10:11:40Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9adb61d
Parents:
01cdd5a
Message:

Use floatN_t types in generic function interfaces.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/math/generic/trunc.c

    r01cdd5a re6f5766  
    5151 *
    5252 */
    53 float32 trunc_float32(float32 val)
     53float32_t float32_trunc(float32_t val)
    5454{
    55         int32_t exp = val.parts.exp - FLOAT32_BIAS;
     55        float32_u v;
     56        int32_t exp;
     57       
     58        v.val = val;
     59        exp = v.data.parts.exp - FLOAT32_BIAS;
    5660       
    5761        if (exp < 0) {
    5862                /* -1 < val < 1 => result is +0 or -0 */
    59                 val.parts.exp = 0;
    60                 val.parts.fraction = 0;
     63                v.data.parts.exp = 0;
     64                v.data.parts.fraction = 0;
    6165        } else if (exp >= FLOAT32_FRACTION_SIZE) {
    6266                if (exp == 1024) {
     
    6872        } else {
    6973                /* Truncate irrelevant fraction bits */
    70                 val.parts.fraction &= ~(UINT32_C(0x007fffff) >> exp);
     74                v.data.parts.fraction &= ~(UINT32_C(0x007fffff) >> exp);
    7175        }
    7276       
    73         return val;
     77        return v.val;
    7478}
    7579
     
    8993 *
    9094 */
    91 float64 trunc_float64(float64 val)
     95float64_t float64_trunc(float64_t val)
    9296{
    93         int32_t exp = val.parts.exp - FLOAT64_BIAS;
     97        float64_u v;
     98        int32_t exp;
     99       
     100        v.val = val;
     101        exp = v.data.parts.exp - FLOAT64_BIAS;
    94102       
    95103        if (exp < 0) {
    96104                /* -1 < val < 1 => result is +0 or -0 */
    97                 val.parts.exp = 0;
    98                 val.parts.fraction = 0;
     105                v.data.parts.exp = 0;
     106                v.data.parts.fraction = 0;
    99107        } else if (exp >= FLOAT64_FRACTION_SIZE) {
    100108                if (exp == 1024) {
     
    106114        } else {
    107115                /* Truncate irrelevant fraction bits */
    108                 val.parts.fraction &= ~(UINT64_C(0x000fffffffffffff) >> exp);
     116                v.data.parts.fraction &= ~(UINT64_C(0x000fffffffffffff) >> exp);
    109117        }
    110118       
    111         return val;
     119        return v.val;
    112120}
    113121
Note: See TracChangeset for help on using the changeset viewer.