|
Lines 676-681
cdef class Float32:
Link Here
|
| 676 |
cdef cfloat.float64_t f = cfloat.f32_to_f64(self._c_float) |
676 |
cdef cfloat.float64_t f = cfloat.f32_to_f64(self._c_float) |
| 677 |
return Float64.from_c_float(f) |
677 |
return Float64.from_c_float(f) |
| 678 |
|
678 |
|
|
|
679 |
######## |
| 680 |
# integer conversions |
| 681 |
######## |
| 682 |
|
| 683 |
# u/i32 <-> f16 |
| 684 |
|
| 685 |
cpdef Float16 i32_to_f16(int32_t value): |
| 686 |
cdef cfloat.float16_t f = cfloat.i32_to_f16(value) |
| 687 |
return Float16.from_c_float(f) |
| 688 |
|
| 689 |
cpdef Float16 ui32_to_f16(uint32_t value): |
| 690 |
cdef cfloat.float16_t f = cfloat.ui32_to_f16(value) |
| 691 |
return Float16.from_c_float(f) |
| 692 |
|
| 693 |
cpdef uint32_t f16_to_ui32(Float16 a1): |
| 694 |
cdef uint32_t i = cfloat.f16_to_ui32(a1._c_float, |
| 695 |
cfloat.softfloat_roundingMode, True) |
| 696 |
return i |
| 697 |
|
| 698 |
cpdef int32_t f16_to_i32(Float16 a1): |
| 699 |
cdef int32_t i = cfloat.f16_to_i32(a1._c_float, |
| 700 |
cfloat.softfloat_roundingMode, True) |
| 701 |
return i |
| 702 |
|
| 703 |
# u/i32 <-> f32 |
| 704 |
|
| 705 |
cpdef Float32 i32_to_f32(int32_t value): |
| 706 |
cdef cfloat.float32_t f = cfloat.i32_to_f32(value) |
| 707 |
return Float32.from_c_float(f) |
| 708 |
|
| 709 |
cpdef Float32 ui32_to_f32(uint32_t value): |
| 710 |
cdef cfloat.float32_t f = cfloat.ui32_to_f32(value) |
| 711 |
return Float32.from_c_float(f) |
| 712 |
|
| 713 |
cpdef uint32_t f32_to_ui32(Float32 a1): |
| 714 |
cdef uint32_t i = cfloat.f32_to_ui32(a1._c_float, |
| 715 |
cfloat.softfloat_roundingMode, True) |
| 716 |
return i |
| 717 |
|
| 718 |
cpdef int32_t f32_to_i32(Float32 a1): |
| 719 |
cdef int32_t i = cfloat.f32_to_i32(a1._c_float, |
| 720 |
cfloat.softfloat_roundingMode, True) |
| 721 |
return i |
| 722 |
|
| 723 |
# u/i32 <-> f64 |
| 724 |
|
| 725 |
cpdef Float64 i32_to_f64(int32_t value): |
| 726 |
cdef cfloat.float64_t f = cfloat.i32_to_f64(value) |
| 727 |
return Float64.from_c_float(f) |
| 728 |
|
| 729 |
cpdef Float64 ui32_to_f64(uint32_t value): |
| 730 |
cdef cfloat.float64_t f = cfloat.ui32_to_f64(value) |
| 731 |
return Float64.from_c_float(f) |
| 732 |
|
| 733 |
cpdef uint32_t f64_to_ui32(Float64 a1): |
| 734 |
cdef uint32_t i = cfloat.f64_to_ui32(a1._c_float, |
| 735 |
cfloat.softfloat_roundingMode, True) |
| 736 |
return i |
| 737 |
|
| 738 |
cpdef int32_t f64_to_i32(Float64 a1): |
| 739 |
cdef int32_t i = cfloat.f64_to_i32(a1._c_float, |
| 740 |
cfloat.softfloat_roundingMode, True) |
| 741 |
return i |
| 742 |
|
| 743 |
# u/i64 <-> f16 |
| 744 |
|
| 745 |
cpdef Float16 i64_to_f16(int32_t value): |
| 746 |
cdef cfloat.float16_t f = cfloat.i64_to_f16(value) |
| 747 |
return Float16.from_c_float(f) |
| 748 |
|
| 749 |
cpdef Float16 ui64_to_f16(uint32_t value): |
| 750 |
cdef cfloat.float16_t f = cfloat.ui64_to_f16(value) |
| 751 |
return Float16.from_c_float(f) |
| 752 |
|
| 753 |
cpdef uint32_t f16_to_ui64(Float16 a1): |
| 754 |
cdef uint32_t i = cfloat.f16_to_ui64(a1._c_float, |
| 755 |
cfloat.softfloat_roundingMode, True) |
| 756 |
return i |
| 757 |
|
| 758 |
cpdef int32_t f16_to_i64(Float16 a1): |
| 759 |
cdef int32_t i = cfloat.f16_to_i64(a1._c_float, |
| 760 |
cfloat.softfloat_roundingMode, True) |
| 761 |
return i |
| 762 |
|
| 763 |
# u/i64 <-> f32 |
| 764 |
|
| 765 |
cpdef Float32 i64_to_f32(int32_t value): |
| 766 |
cdef cfloat.float32_t f = cfloat.i64_to_f32(value) |
| 767 |
return Float32.from_c_float(f) |
| 768 |
|
| 769 |
cpdef Float32 ui64_to_f32(uint32_t value): |
| 770 |
cdef cfloat.float32_t f = cfloat.ui64_to_f32(value) |
| 771 |
return Float32.from_c_float(f) |
| 772 |
|
| 773 |
cpdef uint32_t f32_to_ui64(Float32 a1): |
| 774 |
cdef uint32_t i = cfloat.f32_to_ui64(a1._c_float, |
| 775 |
cfloat.softfloat_roundingMode, True) |
| 776 |
return i |
| 777 |
|
| 778 |
cpdef int32_t f32_to_i64(Float32 a1): |
| 779 |
cdef int32_t i = cfloat.f32_to_i64(a1._c_float, |
| 780 |
cfloat.softfloat_roundingMode, True) |
| 781 |
return i |
| 782 |
|
| 783 |
# u/i64 <-> f64 |
| 784 |
|
| 785 |
cpdef Float64 i64_to_f64(int64_t value): |
| 786 |
cdef cfloat.float64_t f = cfloat.i64_to_f64(value) |
| 787 |
return Float64.from_c_float(f) |
| 788 |
|
| 789 |
cpdef Float64 ui64_to_f64(uint64_t value): |
| 790 |
cdef cfloat.float64_t f = cfloat.ui64_to_f64(value) |
| 791 |
return Float64.from_c_float(f) |
| 792 |
|
| 793 |
cpdef uint64_t f64_to_ui64(Float64 a1): |
| 794 |
cdef uint64_t i = cfloat.f64_to_ui64(a1._c_float, |
| 795 |
cfloat.softfloat_roundingMode, True) |
| 796 |
return i |
| 797 |
|
| 798 |
cpdef int64_t f64_to_i64(Float64 a1): |
| 799 |
cdef int64_t i = cfloat.f64_to_i64(a1._c_float, |
| 800 |
cfloat.softfloat_roundingMode, True) |
| 801 |
return i |
| 679 |
|
802 |
|
| 680 |
# external, non-method arithmetic |
803 |
# external, non-method arithmetic |
| 681 |
|
804 |
|
| 682 |
- |
|
|