On 2/7/21 9:46 PM, Taylor Simpson wrote: > +uint64_t conv_sf_to_8u(float32 in, float_status *fp_status); > +uint32_t conv_sf_to_4u(float32 in, float_status *fp_status); > +int64_t conv_sf_to_8s(float32 in, float_status *fp_status); > +int32_t conv_sf_to_4s(float32 in, float_status *fp_status); > + > +uint64_t conv_df_to_8u(float64 in, float_status *fp_status); > +uint32_t conv_df_to_4u(float64 in, float_status *fp_status); > +int64_t conv_df_to_8s(float64 in, float_status *fp_status); > +int32_t conv_df_to_4s(float64 in, float_status *fp_status);
You need to either use the normal float conversion routines, or document what the differences are. > +static uint64_t conv_f64_to_8u_n(float64 in, int will_negate, > + float_status *fp_status) > +{ > + uint8_t sign = float64_is_neg(in); > + if (float64_is_infinity(in)) { > + float_raise(float_flag_invalid, fp_status); > + if (float64_is_neg(in)) { > + return 0ULL; This isn't right for will_negate. r~