+
+
+# external, non-method arithmetic
+
+cpdef Posit16 p16_round(Posit16 a1):
+ cdef cposit.posit16_t f = cposit.p16_roundToInt(a1._c_posit)
+ return Posit16.from_c_posit(f)
+
+cpdef Posit16 p16_add(Posit16 a1, Posit16 a2):
+ cdef cposit.posit16_t f = cposit.p16_add(a1._c_posit, a2._c_posit)
+ return Posit16.from_c_posit(f)
+
+cpdef Posit16 p16_sub(Posit16 a1, Posit16 a2):
+ cdef cposit.posit16_t f = cposit.p16_sub(a1._c_posit, a2._c_posit)
+ return Posit16.from_c_posit(f)
+
+cpdef Posit16 p16_mul(Posit16 a1, Posit16 a2):
+ cdef cposit.posit16_t f = cposit.p16_mul(a1._c_posit, a2._c_posit)
+ return Posit16.from_c_posit(f)
+
+cpdef Posit16 p16_fma(Posit16 a1, Posit16 a2, Posit16 a3):
+ cdef cposit.posit16_t f = cposit.p16_mulAdd(a1._c_posit, a2._c_posit, a3._c_posit)
+ return Posit16.from_c_posit(f)
+
+cpdef Posit16 p16_qma(Posit16 a3, Posit16 a1, Posit16 a2):
+ cdef cposit.posit16_t f = cposit.p16_mulAdd(a1._c_posit, a2._c_posit, a3._c_posit)
+ return Posit16.from_c_posit(f)
+
+cpdef Posit16 p16_div(Posit16 a1, Posit16 a2):
+ cdef cposit.posit16_t f = cposit.p16_div(a1._c_posit, a2._c_posit)
+ return Posit16.from_c_posit(f)
+
+cpdef Posit16 p16_sqrt(Posit16 a1):
+ cdef cposit.posit16_t f = cposit.p16_sqrt(a1._c_posit)
+ return Posit16.from_c_posit(f)
+
+cpdef bint p16_eq(Posit16 a1, Posit16 a2):
+ return cposit.p16_eq(a1._c_posit, a2._c_posit)
+
+cpdef bint p16_le(Posit16 a1, Posit16 a2):
+ return cposit.p16_le(a1._c_posit, a2._c_posit)
+
+cpdef bint p16_lt(Posit16 a1, Posit16 a2):
+ return cposit.p16_lt(a1._c_posit, a2._c_posit)
+
+cpdef Posit8 p16_to_p8(Posit16 a1):
+ cdef cposit.posit8_t f = cposit.p16_to_p8(a1._c_posit)
+ return Posit8.from_c_posit(f)
+
+cpdef Quire16 p16_to_q16(Posit16 a1):
+ cdef cposit.quire16_t f
+ cposit.q16_clr(f)
+ f = cposit.q16_fdp_add(f, a1._c_posit, posit16_one)
+ return Quire16.from_c_quire(f)
+
+cpdef Quire16 q16_qma(Quire16 a3, Posit16 a1, Posit16 a2):
+ cdef cposit.quire16_t f = cposit.q16_fdp_add(a3._c_quire, a1._c_posit, a2._c_posit)
+ return Quire16.from_c_quire(f)
+
+cpdef Quire16 q16_qms(Quire16 a3, Posit16 a1, Posit16 a2):
+ cdef cposit.quire16_t f = cposit.q16_fdp_sub(a3._c_quire, a1._c_posit, a2._c_posit)
+ return Quire16.from_c_quire(f)
+
+cpdef Posit16 q16_to_p16(Quire16 a1):
+ cpdef cposit.posit16_t f = cposit.q16_to_p16(a1._c_quire)
+ return Posit16.from_c_posit(f)