View | Details | Raw Unified | Return to bug 111
Collapse All | Expand All

(-)a/sfpy/float.pyx (-1 / +123 lines)
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
- 

Return to bug 111