- fixed failure when extracting to OCaml
- added
IEEE754.BinarySingleNaNwhere NaN have no payload - proved adequacy of Coq 8.11 floating-point numbers in
IEEE754.PrimFloat - added theorems about rounding to nearest, tie breaking to zero
- ensured compatibility from Coq 8.7 to 8.11
- added function
Bfma - ensured compatibility from Coq 8.7 to 8.10
- changed matching order in
Bcompare - improved behavior of
Binary.vfunctions with respect to NaNs - ensured compatibility from Coq 8.7 to 8.9
- added functions
BpredandBsucc - added theorems on optimal relative error bounds for plus and square root
- made installation also install source files
- stripped the
F*_prefix from all the file names, renamed some files:Definitions -> DefsAppli -> IEEE754
- renamed
ln_betaintomag - renamed
canonic_expintocexp,canonicintocanonical - renamed all theorems ending with
unicitybyunique - changed
FLX_,FIX_,FLT_,FLXN_,FTZ_formatinto inductive types - changed
nan_plinto a boolean predicate - replaced
Z2Rwith Coq 8.7'sIZR - removed
Zevenand its theorems in favor ofZ.evenof the standard library - modified statements of
Rcompare_sqr,ulp_DN,mult_error_FLT,mag_div - added theorems about the remainder being in the format (in
Div_sqrt_error.v) - made
Fdiv_coreandFsqrt_coregeneric with respect to the format - renamed theorems more uniformly:
bpow_plus1 -> bpow_plus_1mag_lt_pos -> lt_magF2R_le_reg -> le_F2RF2R_le_compat -> F2R_leF2R_lt_reg -> lt_F2RF2R_lt_compat -> F2R_ltF2R_eq_reg -> eq_F2RF2R_eq_compat -> F2R_eqF2R_eq_0_reg -> eq_0_F2RF2R_ge_0_reg -> ge_0_F2RF2R_le_0_reg -> le_0_F2RF2R_gt_0_reg -> gt_0_F2RF2R_lt_0_reg -> lt_0_F2RF2R_le_0_compat -> F2R_le_0F2R_ge_0_compat -> F2R_ge_0F2R_gt_0_compat -> F2R_gt_0F2R_lt_0_compat -> F2R_lt_0F2R_neq_0_compat -> F2R_neq_0Fnum_ge_0_compat -> Fnum_ge_0Fnum_le_0_compat -> Fnum_le_0round_ZR_pos -> round_ZR_DNround_ZR_neg -> round_ZR_UPround_AW_pos -> round_ZR_UPround_AW_neg -> round_ZR_DNZnearest_N -> Znearest_halfRnd_DN_UP_pt_N -> Rnd_N_pt_DN_UPRnd_DN_pt_N -> Rnd_N_pt_DNRnd_UP_pt_N -> Rnd_N_pt_UPRnd_DN_UP_pt_sym -> Rnd_UP_pt_oppRnd_UP_DN_pt_sym -> Rnd_DN_pt_oppRnd_DN_UP_sym -> Rnd_DN_oppRnd_N_pt_sym -> Rnd_N_pt_opp_invRnd_N_pt_pos -> Rnd_N_pt_ge_0Rnd_N_pt_neg -> Rnd_N_pt_le_0Rnd_NG_pt_sym -> Rnd_NG_pt_opp_invRnd_NA_N_pt -> Rnd_NA_pt_NRnd_odd_pt_sym -> Rnd_odd_pt_opp_invle_pred_lt -> pred_ge_gtlt_succ_le -> succ_gt_gele_round_DN_lt_UP -> round_DN_ge_UP_gtround_UP_le_gt_DN -> round_UP_le_DN_ltround_DN_eq_betw -> round_DN_eqround_UP_eq_betw -> round_UP_eqround_plus_eq_zero -> round_plus_neq_0(and modified statement)round_odd_prop -> round_N_odddouble_round_*_beta_ge_* -> round_round_*_radix_ge_*double_round_* -> round_round_*
- ensured compatibility from Coq 8.4 to 8.8
- ensured compatibility from Coq 8.4 to 8.7
- removed some hypotheses on some lemmas of
Fcore_ulp - added lemmas to
Fprop_plus_error - improved examples
- ensured compatibility from Coq 8.4 to 8.6
- ensured compatibility with both Coq 8.4 and 8.5
- ensured compatibility with both Coq 8.4 and 8.5
(Flocq now provides its own version of
iter_pos) - redefined
ulp, so thatulp 0is meaningful - renamed, generalized, and added lemmas in
Fcore_ulp - extended predecessor and successor to nonpositive values
(the previous definition of
predhas been renamedpred_pos) - removed some hypotheses on lemmas of
Fprop_relative.v - added more examples
Average: proof on Sterbenz's average and correctly-rounded averageCody_Waite: Cody & Waite's approximation of exponentialCompute: effective FP computations with an example ofsqrt(sqr(x))in radix 5 and precision 3Division_u16: integer division using floating-point FMATriangle: Kahan's algorithm for the area of a triangle
- moved some lemmas from
Fcalc_digits.vtoFcore_digits.vand made them axiom-free - added theorems about double rounding being innocuous (
Fappli_double_round.v) - added example about double rounding in odd radix
- improved a bit the efficiency of IEEE-754 arithmetic
- moved some lemmas from
Fcalc_digits.vtoFcore_digits.vand made them axiom-free - used the square root from the standard library instead of a custom one
- added an example about
sqrt(sqr(x))
- fixed
installtarget for case-insensitive filesystems
- fixed regeneration of
Flocq_version.v
- added theorems about rounding to odd and double rounding
- improved handling of special values of IEEE-754 arithmetic
- ensured compatibility with both Coq 8.3 and 8.4
- improved support for rounding toward and away from zero
- proved that formats are stable by arbitrary rounding or ulp addition
- generalized usage of
ln_beta
- changed rounding modes from records to
R -> Zfunctions as arguments to theroundfunctionrndDN -> ZfloorrndUP -> ZceilrndZE -> ZtruncrndNE -> ZnearestErndNA -> ZnearestA
- added typeclasses for automatic inference of properties:
Valid_expforZ -> Zfunctions describing formatsValid_rndforR -> Zfunctions describing rounding modesExp_not_FTZforZ -> Zfunctions describing formats with subnormalMonotone_expforZ -> Zfunctions describing regular formatsExists_NEfor radix/formats supporting rounding to nearest even
- removed theorems superseded by typeclasses:
FIX_exp_correct,FLX_exp_correct,FLT_exp_correct,FTZ_exp_correctFIX_exp_monotone,FLX_exp_monotone,FLT_monotoneRnd_NE_pt_FIX,Rnd_NE_pt_FLX,Rnd_NE_pt_FLTround_NE_pt_FLX,round_NE_pt_FLTZrnd_opp_le,Zrnd_Z2R_opp
- removed example file
Fappli_sqrt_FLT_ne.v - split theorems on equivalence between specific and generic formats
into both directions:
FIX_format_genericandgeneric_format_FIXFLX_format_genericandgeneric_format_FLXFLT_format_genericandgeneric_format_FLTFTZ_format_genericandgeneric_format_FTZ
- modified correctness theorems for IEEE-754 operators so that they also mention finiteness of the results
- added a
Flocq_version.Flocq_versionCoq variable for Flocq detection and version testing in configure scripts - moved parts of some files into other files:
Fcore_Raux -> Fcore_ZauxFcalc_digits -> Fcore_digitsFappli_IEEE -> Fappli_IEEE_bits
- renamed functions:
canonic_exponent -> canonic_expdigits -> Zdigitsbounded_prec -> canonic_mantissaBsign_FF -> sign_FFshl -> shl_alignshl_fexp -> shl_align_fexpbinary_round_sign -> binary_round_auxbinary_round_sign_shl -> binary_round
- renamed theorems more uniformly:
Rabs_Rminus_pos -> Rabs_minus_leexp_increasing_weak -> exp_leln_beta_monotone -> ln_beta_leln_beta_monotone_abs -> ln_beta_le_absabs_F2R -> F2R_Zabs(changed direction)opp_F2R -> F2R_Zopp(changed direction)scaled_mantissa_bpow -> scaled_mantissa_mult_bpowround_monotone -> round_leround_monotone_l -> round_ge_genericround_monotone_r -> round_le_genericround_monotone_abs_l -> abs_round_ge_genericround_monotone_abs_r -> abs_round_le_genericgeneric_format_canonic_exponent -> generic_format_F2R(modified hypothesis)canonic_exponent_round -> canonic_exp_round_gegeneric_N_pt -> round_N_ptround_pred_pos_imp_rnd -> round_pred_ge_0round_pred_rnd_imp_pos -> round_pred_gt_0round_pred_neg_imp_rnd -> round_pred_le_0round_pred_rnd_imp_neg -> round_pred_lt_0ulp_le_pos -> ulp_le_idsucc_lt_le -> succ_le_ltulp_monotone -> ulp_leulp_DN_pt_eq -> ulp_DNformat_pred -> generic_format_predpred_ulp -> pred_plus_ulppred_lt -> pred_lt_idFLT_generic_format_FLX -> generic_format_FLT_FLXFLX_generic_format_FLT -> generic_format_FLX_FLTFIX_generic_format_FLT -> generic_format_FIX_FLTFLT_generic_format_FIX -> generic_format_FLT_FIXFLT_round_FLX -> round_FLT_FLXFTZ_round -> round_FTZ_FLXFTZ_round_small -> round_FTZ_smallFLT_canonic_FLX -> canonic_exp_FLT_FLXFLT_canonic_FIX -> canonic_exp_FLT_FIXcanonic_exponent_opp -> canonic_exp_oppcanonic_exponent_abs -> canonic_exp_abscanonic_exponent_fexp -> canonic_exp_fexpcanonic_exponent_fexp_pos -> canonic_exp_fexp_poscanonic_exponent_DN -> canonic_exp_DNcanonic_exp_ge -> abs_lt_bpow_prec(modified hypotheses)Fopp_F2R -> F2R_oppFabs_F2R -> F2R_absplus_F2R -> F2R_plusminus_F2R -> F2R_minusmult_F2R -> F2R_multdigits_abs -> Zdigits_absdigits_ge_0 -> Zdigits_ge_0digits_gt_0 -> Zdigits_gt_0ln_beta_F2R_Zdigits -> ln_beta_F2R_Zdigitsdigits_shift -> Zdigits_mult_Zpowerdigits_Zpower -> Zdigits_Zpowerdigits_le -> Zdigits_lelt_digits -> lt_ZdigitsZpower_le_digits -> Zpower_le_Zdigitsdigits_le_Zpower -> Zdigits_le_ZpowerZpower_gt_digits -> Zpower_gt_Zdigitsdigits_gt_Zpower -> Zdigits_gt_Zpowerdigits_mult_strong -> Zdigits_mult_strongdigits_mult -> Zdigits_multdigits_mult_ge -> Zdigits_mult_gedigits_shr -> Zdigits_div_Zpowerformat_add -> generic_format_plus_prec(modified hypothesis)format_nx -> ex_Fexp_canonicgeneric_relative_error -> relative_errorgeneric_relative_error_ex -> relative_error_exgeneric_relative_error_F2R -> relative_error_F2R_emingeneric_relative_error_F2R_ex -> relative_error_F2R_emin_exgeneric_relative_error_2 -> relative_error_roundgeneric_relative_error_F2R_2 -> relative_error_round_F2R_emingeneric_relative_error_N -> relative_error_Ngeneric_relative_error_N_ex -> relative_error_N_exgeneric_relative_error_N_F2R -> relative_error_N_F2R_emingeneric_relative_error_N_F2R_ex -> relative_error_N_F2R_emin_exgeneric_relative_error_N_2 -> relative_error_N_roundgeneric_relative_error_N_F2R_2 -> relative_error_N_round_F2R_eminrelative_error_FLT_F2R -> relative_error_FLT_F2R_eminrelative_error_FLT_F2R_ex -> relative_error_FLT_F2R_emin_exrelative_error_N_FLT_2 -> relative_error_N_FLT_roundrelative_error_N_FLT_F2R -> relative_error_N_FLT_F2R_eminrelative_error_N_FLT_F2R_ex -> relative_error_N_FLT_F2R_emin_exrelative_error_N_FLT_F2R_2 -> relative_error_N_FLT_round_F2R_eminrelative_error_FLX_2 -> relative_error_FLX_roundrelative_error_N_FLX_2 -> relative_error_N_FLX_roundcanonic_bounded_prec -> canonic_canonic_mantissaB2R_lt_emax -> abs_B2R_lt_emaxbinary_unicity -> B2FF_injfinite_binary_unicity -> B2R_injbinary_round_sign_correct -> binary_round_aux_correctshl_correct -> shl_align_correctsnd_shl -> snd_shl_alignshl_fexp_correct -> shl_align_fexp_correctbinary_round_sign_shl_correct -> binary_round_correct
- improved efficiency of IEEE-754 addition
- fixed compilation with Coq 8.3
- fixed overflow handling in IEEE-754 formats with directed rounding
- added IEEE-754 binary32 and 64 formats, including infinities and NaN
- simplified effective rounding for negative reals
- proved monotonicity of exponent functions for common formats
- initial release