Changeset e6f5766 in mainline for uspace/lib/math/generic/trunc.c
- Timestamp:
- 2015-09-05T10:11:40Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9adb61d
- Parents:
- 01cdd5a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/math/generic/trunc.c
r01cdd5a re6f5766 51 51 * 52 52 */ 53 float32 trunc_float32(float32val)53 float32_t float32_trunc(float32_t val) 54 54 { 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; 56 60 57 61 if (exp < 0) { 58 62 /* -1 < val < 1 => result is +0 or -0 */ 59 v al.parts.exp = 0;60 v al.parts.fraction = 0;63 v.data.parts.exp = 0; 64 v.data.parts.fraction = 0; 61 65 } else if (exp >= FLOAT32_FRACTION_SIZE) { 62 66 if (exp == 1024) { … … 68 72 } else { 69 73 /* Truncate irrelevant fraction bits */ 70 v al.parts.fraction &= ~(UINT32_C(0x007fffff) >> exp);74 v.data.parts.fraction &= ~(UINT32_C(0x007fffff) >> exp); 71 75 } 72 76 73 return v al;77 return v.val; 74 78 } 75 79 … … 89 93 * 90 94 */ 91 float64 trunc_float64(float64val)95 float64_t float64_trunc(float64_t val) 92 96 { 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; 94 102 95 103 if (exp < 0) { 96 104 /* -1 < val < 1 => result is +0 or -0 */ 97 v al.parts.exp = 0;98 v al.parts.fraction = 0;105 v.data.parts.exp = 0; 106 v.data.parts.fraction = 0; 99 107 } else if (exp >= FLOAT64_FRACTION_SIZE) { 100 108 if (exp == 1024) { … … 106 114 } else { 107 115 /* Truncate irrelevant fraction bits */ 108 v al.parts.fraction &= ~(UINT64_C(0x000fffffffffffff) >> exp);116 v.data.parts.fraction &= ~(UINT64_C(0x000fffffffffffff) >> exp); 109 117 } 110 118 111 return v al;119 return v.val; 112 120 } 113 121
Note:
See TracChangeset
for help on using the changeset viewer.