Rev 874 | Rev 876 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 874 | Rev 875 | ||
---|---|---|---|
Line 439... | Line 439... | ||
439 | } |
439 | } |
440 | 440 | ||
441 | 441 | ||
442 | float32 uint64_to_float32(__u64 i) |
442 | float32 uint64_to_float32(__u64 i) |
443 | { |
443 | { |
- | 444 | int counter; |
|
- | 445 | __s32 exp; |
|
- | 446 | float32 result; |
|
- | 447 | ||
- | 448 | result.parts.sign = 0; |
|
- | 449 | result.parts.fraction = 0; |
|
- | 450 | ||
- | 451 | counter = countZeroes64(i); |
|
- | 452 | ||
- | 453 | exp = FLOAT32_BIAS + 64 - counter - 1; |
|
- | 454 | ||
- | 455 | if (counter == 64) { |
|
- | 456 | result.binary = 0; |
|
- | 457 | return result; |
|
- | 458 | } |
|
- | 459 | ||
- | 460 | /* Shift all to the first 31 bits (31. will be hidden 1)*/ |
|
- | 461 | if (counter > 33) { |
|
- | 462 | i <<= counter - 1 - 32; |
|
- | 463 | } else { |
|
- | 464 | i >>= 1 + 32 - counter; |
|
- | 465 | } |
|
- | 466 | ||
- | 467 | roundFloat32(&exp, &i); |
|
- | 468 | ||
- | 469 | result.parts.fraction = i >> 7; |
|
- | 470 | result.parts.exp = exp; |
|
- | 471 | return result; |
|
444 | } |
472 | } |
445 | 473 | ||
446 | float32 int64_to_float32(__s64 i) |
474 | float32 int64_to_float32(__s64 i) |
447 | { |
475 | { |
448 | float32 result; |
476 | float32 result; |