Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6515 | serge | 1 | /* Public domain. */ |
2 | typedef int SItype __attribute__ ((mode (SI))); |
||
3 | typedef unsigned int USItype __attribute__ ((mode (SI))); |
||
4 | typedef float SFtype __attribute__ ((mode (SF))); |
||
5 | |||
6 | SFtype |
||
7 | __floatunsisf (USItype u) |
||
8 | { |
||
9 | SItype s = (SItype) u; |
||
10 | if (s < 0) |
||
11 | { |
||
12 | /* As in expand_float, compute (u & 1) | (u >> 1) to ensure |
||
13 | correct rounding if a nonzero bit is shifted out. */ |
||
14 | return (SFtype) 2.0 * (SFtype) (SItype) ((u & 1) | (u >> 1)); |
||
15 | } |
||
16 | else |
||
17 | return (SFtype) s; |
||
18 | }> |