From 60b18b55f213cf2cb3fb6f7fa079ed0bb1839bfd Mon Sep 17 00:00:00 2001 From: Luigi Scarso <luigi.scarso@gmail.com> Date: Mon, 18 Mar 2024 00:34:50 +0100 Subject: [PATCH] Sync with MetaPost 2.11 --- source/texk/web2c/luatexdir/luatex_svnversion.h | 2 +- source/texk/web2c/mplibdir/ChangeLog | 5 +++++ source/texk/web2c/mplibdir/mp.w | 4 ++-- source/texk/web2c/mplibdir/mpmathbinary.w | 2 +- source/texk/web2c/mplibdir/mpmathdouble.w | 5 +++++ source/texk/web2c/mplibdir/mpmathinterval.w | 4 ++-- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/source/texk/web2c/luatexdir/luatex_svnversion.h b/source/texk/web2c/luatexdir/luatex_svnversion.h index 90bcf832f..f96e350e5 100644 --- a/source/texk/web2c/luatexdir/luatex_svnversion.h +++ b/source/texk/web2c/luatexdir/luatex_svnversion.h @@ -1,4 +1,4 @@ #ifndef luatex_svn_revision_h #define luatex_svn_revision_h -#define luatex_svn_revision 7614 +#define luatex_svn_revision 7615 #endif diff --git a/source/texk/web2c/mplibdir/ChangeLog b/source/texk/web2c/mplibdir/ChangeLog index 1bce2fdae..eed13ad1b 100644 --- a/source/texk/web2c/mplibdir/ChangeLog +++ b/source/texk/web2c/mplibdir/ChangeLog @@ -1,3 +1,8 @@ +2024-03-18 Luigi Scarso <luigi.scarso@gmail.com> + * Fixed a bug in n_arg for double and binary mode, + where -0.0 was different form 0.0. + Work in progress for the interval mode. + 2024-02-16 Luigi Scarso <luigi.scarso@gmail.com> * Updated manual. MetaPost 2.1 diff --git a/source/texk/web2c/mplibdir/mp.w b/source/texk/web2c/mplibdir/mp.w index 25e9143f2..8466b391c 100644 --- a/source/texk/web2c/mplibdir/mp.w +++ b/source/texk/web2c/mplibdir/mp.w @@ -71,12 +71,12 @@ undergoes any modifications, so that it will be clear which version of @^extensions to \MP@> @^system dependencies@> -@d default_banner "This is MetaPost, Version 2.10" /* printed when \MP\ starts */ +@d default_banner "This is MetaPost, Version 2.11" /* printed when \MP\ starts */ @d true 1 @d false 0 @<Metapost version header@>= -#define metapost_version "2.10" +#define metapost_version "2.11" @ The external library header for \MP\ is |mplib.h|. It contains a few typedefs and the header defintions for the externally used diff --git a/source/texk/web2c/mplibdir/mpmathbinary.w b/source/texk/web2c/mplibdir/mpmathbinary.w index 4ac294641..1c12ffb14 100644 --- a/source/texk/web2c/mplibdir/mpmathbinary.w +++ b/source/texk/web2c/mplibdir/mpmathbinary.w @@ -149,7 +149,7 @@ static double precision_bits_to_digits (mpfr_prec_t i); @d mpfr_negative_p(a) (mpfr_sgn((a))<0) @d mpfr_positive_p(a) (mpfr_sgn((a))>0) -@d checkZero(dec) if (mpfr_zero_p(dec) && mpfr_negative_p(dec)) { +@d checkZero(dec) if (mpfr_zero_p(dec)) { mpfr_set_zero(dec,1); } diff --git a/source/texk/web2c/mplibdir/mpmathdouble.w b/source/texk/web2c/mplibdir/mpmathdouble.w index cb1496936..8f51439c2 100644 --- a/source/texk/web2c/mplibdir/mpmathdouble.w +++ b/source/texk/web2c/mplibdir/mpmathdouble.w @@ -1172,6 +1172,11 @@ void mp_double_n_arg (MP mp, mp_number *ret, mp_number x_orig, mp_number y_orig) @<Handle undefined arg@>; } else { ret->type = mp_angle_type; + /* Consistency with the other numbersystems */ + if (x_orig.data.dval == -0.0) + x_orig.data.dval = 0.0; + if (y_orig.data.dval == -0.0) + y_orig.data.dval = 0.0; ret->data.dval = atan2 (y_orig.data.dval, x_orig.data.dval) * (180.0 / PI) * angle_multiplier; if (ret->data.dval == -0.0) ret->data.dval = 0.0; diff --git a/source/texk/web2c/mplibdir/mpmathinterval.w b/source/texk/web2c/mplibdir/mpmathinterval.w index aa1d90d43..813627565 100644 --- a/source/texk/web2c/mplibdir/mpmathinterval.w +++ b/source/texk/web2c/mplibdir/mpmathinterval.w @@ -1879,8 +1879,8 @@ void mp_interval_n_arg (MP mp, mp_number *ret, mp_number x_orig, mp_number y_ori ret->type = mp_angle_type; mpfi_set_si(oneeighty_angle, 180 * angle_multiplier); mpfi_div(oneeighty_angle, oneeighty_angle, PI_mpfi_t); - checkZero((mpfi_ptr)y_orig.data.num); - checkZero((mpfi_ptr)x_orig.data.num); + /*checkZero((mpfi_ptr)y_orig.data.num);*/ + /*checkZero((mpfi_ptr)x_orig.data.num);*/ mpfi_atan2(atan2val, y_orig.data.num, x_orig.data.num); mpfi_mul(ret->data.num, atan2val, oneeighty_angle); checkZero((mpfi_ptr)ret->data.num); -- GitLab