2021-09-03 16:30:36 +00:00
|
|
|
# Files shared with other projects. Pass a file path to the
|
|
|
|
|
# get_glibc_shared_code() function in the python library
|
|
|
|
|
# scripts/glibc_shared_code.py to get a dict object with this information. See
|
|
|
|
|
# the library sources for more information.
|
|
|
|
|
|
|
|
|
|
# The headers on most of these files indicate that glibc is the canonical
|
|
|
|
|
# source for these files, although in many cases there seem to be useful
|
|
|
|
|
# changes in the gnulib versions that could be merged back in. Not all gnulib
|
|
|
|
|
# files contain such a header and it is not always consistent in its format, so
|
|
|
|
|
# it would be useful to make sure that all gnulib files that are using glibc as
|
|
|
|
|
# upstream have a greppable header.
|
|
|
|
|
#
|
|
|
|
|
# These files are quite hard to find without a header to grep for and each file
|
|
|
|
|
# has to be compared manually so this list is likely incomplete or may contain
|
|
|
|
|
# errors.
|
|
|
|
|
gnulib:
|
|
|
|
|
argp/argp-ba.c
|
|
|
|
|
argp/argp-ba.c
|
|
|
|
|
argp/argp-eexst.c
|
|
|
|
|
argp/argp-fmtstream.c
|
|
|
|
|
argp/argp-fmtstream.h
|
|
|
|
|
argp/argp-fs-xinl.c
|
|
|
|
|
argp/argp-help.c
|
|
|
|
|
argp/argp-namefrob.h
|
|
|
|
|
argp/argp-parse.c
|
|
|
|
|
argp/argp-pv.c
|
|
|
|
|
argp/argp-pvh.c
|
|
|
|
|
argp/argp-xinl.c
|
|
|
|
|
argp/argp.h
|
|
|
|
|
dirent/alphasort.c
|
|
|
|
|
dirent/scandir.c
|
include: Sync gnulib intprops
It syncs with gnulib commit 1790ef25d81983d1d25a77d452c0080345df459b.
The main change is to proper support clang by using builtins. It
fixes a sprof build issue, where previous version uses the generic
code path when building with clang:
sprof.c:682:8: error: result of comparison of constant 288230376151711743 with expression of type 'Elf64_Half' (aka 'unsigned short') is always false [-Werror,-Wtautological-constant-out-of-range-compare]
682 | if (INT_MULTIPLY_WRAPV (ehdr2.e_shnum, sizeof (ElfW(Shdr)), &size))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/intprops.h:415:34: note: expanded from macro 'INT_MULTIPLY_WRAPV'
415 | _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/intprops.h:504:45: note: expanded from macro '_GL_INT_OP_WRAPV'
504 | : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow))
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
../include/intprops.h:511:41: note: expanded from macro '_GL_INT_OP_WRAPV_LONGISH'
511 | : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
512 | unsigned long int, 0, ULONG_MAX)) \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/intprops.h:533:4: note: expanded from macro '_GL_INT_OP_CALC'
533 | (overflow (a, b, tmin, tmax) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/intprops.h:608:22: note: expanded from macro '_GL_INT_MULTIPLY_RANGE_OVERFLOW'
608 | : (tmax) / (b) < (a)))
| ~~~~~~~~~~~~ ^ ~~~
1 error generated.
Reviewed-by: Collin Funk <collin.funk1@gmail.com>
2025-10-28 17:08:10 +00:00
|
|
|
# Merged from gnulib 2025-10-29 (gnulib commit 1790ef25d8)
|
2021-09-22 00:53:13 +00:00
|
|
|
include/intprops.h
|
include: Sync gnulib intprops
It syncs with gnulib commit 1790ef25d81983d1d25a77d452c0080345df459b.
The main change is to proper support clang by using builtins. It
fixes a sprof build issue, where previous version uses the generic
code path when building with clang:
sprof.c:682:8: error: result of comparison of constant 288230376151711743 with expression of type 'Elf64_Half' (aka 'unsigned short') is always false [-Werror,-Wtautological-constant-out-of-range-compare]
682 | if (INT_MULTIPLY_WRAPV (ehdr2.e_shnum, sizeof (ElfW(Shdr)), &size))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/intprops.h:415:34: note: expanded from macro 'INT_MULTIPLY_WRAPV'
415 | _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/intprops.h:504:45: note: expanded from macro '_GL_INT_OP_WRAPV'
504 | : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow))
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
../include/intprops.h:511:41: note: expanded from macro '_GL_INT_OP_WRAPV_LONGISH'
511 | : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
512 | unsigned long int, 0, ULONG_MAX)) \
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/intprops.h:533:4: note: expanded from macro '_GL_INT_OP_CALC'
533 | (overflow (a, b, tmin, tmax) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/intprops.h:608:22: note: expanded from macro '_GL_INT_MULTIPLY_RANGE_OVERFLOW'
608 | : (tmax) / (b) < (a)))
| ~~~~~~~~~~~~ ^ ~~~
1 error generated.
Reviewed-by: Collin Funk <collin.funk1@gmail.com>
2025-10-28 17:08:10 +00:00
|
|
|
include/intprops-internal.h
|
2021-09-22 00:53:13 +00:00
|
|
|
# Merged from gnulib 2021-09-21
|
|
|
|
|
include/regex.h
|
2021-09-03 16:30:36 +00:00
|
|
|
locale/programs/3level.h
|
|
|
|
|
# Merged from gnulib 2014-6-23
|
|
|
|
|
malloc/obstack.c
|
|
|
|
|
# Merged from gnulib 2014-6-23
|
|
|
|
|
malloc/obstack.h
|
|
|
|
|
# Merged from gnulib 2014-07-10
|
|
|
|
|
misc/error.c
|
|
|
|
|
misc/error.h
|
|
|
|
|
misc/getpass.c
|
|
|
|
|
misc/mkdtemp.c
|
2021-09-22 00:53:13 +00:00
|
|
|
# Merged from gnulib 2021-09-21
|
|
|
|
|
misc/sys/cdefs.h
|
2021-09-03 16:30:36 +00:00
|
|
|
posix/fnmatch_loop.c
|
|
|
|
|
# Intended to be the same. Gnulib copy contains glibc changes.
|
|
|
|
|
posix/getopt.c
|
|
|
|
|
# Intended to be the same. Gnulib copy contains glibc changes.
|
|
|
|
|
posix/getopt1.c
|
|
|
|
|
# Intended to be the same. Gnulib copy contains glibc changes.
|
|
|
|
|
posix/getopt_int.h
|
|
|
|
|
posix/glob.c
|
2021-09-22 00:53:13 +00:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-03 16:30:36 +00:00
|
|
|
posix/regcomp.c
|
2021-09-22 00:53:13 +00:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-03 16:30:36 +00:00
|
|
|
posix/regex.c
|
2021-09-22 00:53:13 +00:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-03 16:30:36 +00:00
|
|
|
posix/regex.h
|
2021-09-22 00:53:13 +00:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-03 16:30:36 +00:00
|
|
|
posix/regex_internal.c
|
2021-09-22 00:53:13 +00:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-03 16:30:36 +00:00
|
|
|
posix/regex_internal.h
|
2021-09-22 00:53:13 +00:00
|
|
|
# Merged from gnulib 2021-09-21
|
2021-09-03 16:30:36 +00:00
|
|
|
posix/regexec.c
|
|
|
|
|
posix/spawn.c
|
|
|
|
|
posix/spawn_faction_addclose.c
|
|
|
|
|
posix/spawn_faction_adddup2.c
|
|
|
|
|
posix/spawn_faction_addopen.c
|
|
|
|
|
posix/spawn_faction_destroy.c
|
|
|
|
|
posix/spawn_faction_init.c
|
|
|
|
|
posix/spawn_int.h
|
|
|
|
|
posix/spawnattr_destroy.c
|
|
|
|
|
posix/spawnattr_getdefault.c
|
|
|
|
|
posix/spawnattr_getflags.c
|
|
|
|
|
posix/spawnattr_getpgroup.c
|
|
|
|
|
posix/spawnattr_getschedparam.c
|
|
|
|
|
posix/spawnattr_getschedpolicy.c
|
|
|
|
|
posix/spawnattr_getsigmask.c
|
|
|
|
|
posix/spawnattr_init.c
|
|
|
|
|
posix/spawnattr_setdefault.c
|
|
|
|
|
posix/spawnattr_setflags.c
|
|
|
|
|
posix/spawnattr_setpgroup.c
|
|
|
|
|
posix/spawnattr_setschedparam.c
|
|
|
|
|
posix/spawnattr_setschedpolicy.c
|
|
|
|
|
posix/spawnattr_setsigmask.c
|
|
|
|
|
posix/spawnp.c
|
|
|
|
|
stdlib/atoll.c
|
|
|
|
|
stdlib/getsubopt.c
|
|
|
|
|
stdlib/setenv.c
|
|
|
|
|
stdlib/strtoll.c
|
|
|
|
|
stdlib/strtoul.c
|
|
|
|
|
# Merged from gnulib 2014-6-26, needs merge back
|
|
|
|
|
string/memchr.c
|
|
|
|
|
string/memcmp.c
|
|
|
|
|
string/memmem.c
|
|
|
|
|
string/mempcpy.c
|
|
|
|
|
string/memrchr.c
|
|
|
|
|
string/rawmemchr.c
|
|
|
|
|
string/stpcpy.c
|
|
|
|
|
string/stpncpy.c
|
|
|
|
|
string/str-two-way.h
|
|
|
|
|
string/strcasestr.c
|
|
|
|
|
string/strcspn.c
|
|
|
|
|
string/strdup.c
|
|
|
|
|
string/strndup.c
|
|
|
|
|
string/strpbrk.c
|
|
|
|
|
string/strsignal.c
|
|
|
|
|
string/strstr.c
|
|
|
|
|
string/strtok_r.c
|
|
|
|
|
string/strverscmp.c
|
2023-10-10 19:22:39 +00:00
|
|
|
# Merged from gnulib 2024-04-08 (gnulib commit 3238349628)
|
|
|
|
|
stdio-common/tmpdir.c
|
|
|
|
|
stdio-common/tmpdir.h
|
2021-09-03 16:30:36 +00:00
|
|
|
sysdeps/generic/pty-private.h
|
|
|
|
|
sysdeps/generic/siglist.h
|
|
|
|
|
sysdeps/posix/euidaccess.c
|
|
|
|
|
sysdeps/posix/gai_strerror.c
|
|
|
|
|
sysdeps/posix/getcwd.c
|
|
|
|
|
sysdeps/posix/pwrite.c
|
|
|
|
|
sysdeps/posix/spawni.c
|
2023-10-10 19:22:39 +00:00
|
|
|
# Merged from gnulib 2024-04-08 (gnulib commit 3238349628)
|
2021-09-03 16:30:36 +00:00
|
|
|
sysdeps/posix/tempname.c
|
|
|
|
|
# Merged from gnulib 2014-6-27
|
|
|
|
|
time/mktime.c
|
|
|
|
|
time/mktime-internal.h
|
|
|
|
|
time/strptime.c
|
|
|
|
|
time/timegm.c
|
|
|
|
|
|
|
|
|
|
# The last merge was 2014-12-11 and merged gettext 0.19.3 into glibc with a
|
|
|
|
|
# patch submitted to the gettext mailing list for changes that could be merged
|
|
|
|
|
# back.
|
|
|
|
|
#
|
|
|
|
|
# This commit was omitted from the merge as it does not appear to be compatible
|
|
|
|
|
# with how glibc expects things to work:
|
|
|
|
|
#
|
|
|
|
|
# commit 279b57fc367251666f00e8e2b599b83703451afb
|
|
|
|
|
# Author: Bruno Haible <bruno@clisp.org>
|
|
|
|
|
# Date: Fri Jun 14 12:03:49 2002 +0000
|
|
|
|
|
#
|
|
|
|
|
# Make absolute pathnames inside $LANGUAGE work.
|
|
|
|
|
gettext:
|
|
|
|
|
intl/bindtextdom.c
|
|
|
|
|
intl/dcgettext.c
|
|
|
|
|
intl/dcigettext.c
|
|
|
|
|
intl/dcngettext.c
|
|
|
|
|
intl/dgettext.c
|
|
|
|
|
intl/dngettext.c
|
|
|
|
|
intl/explodename.c
|
|
|
|
|
intl/finddomain.c
|
|
|
|
|
intl/gettext.c
|
|
|
|
|
intl/gettextP.h
|
|
|
|
|
intl/gmo.h
|
|
|
|
|
intl/hash-string.c
|
|
|
|
|
intl/hash-string.h
|
|
|
|
|
intl/l10nflist.c
|
|
|
|
|
intl/loadinfo.h
|
|
|
|
|
intl/loadmsgcat.c
|
|
|
|
|
intl/locale.alias
|
|
|
|
|
intl/localealias.c
|
|
|
|
|
intl/ngettext.c
|
|
|
|
|
intl/plural-exp.c
|
|
|
|
|
intl/plural-exp.h
|
|
|
|
|
intl/plural.y
|
|
|
|
|
intl/textdomain.c
|
|
|
|
|
|
2024-10-24 12:30:25 +00:00
|
|
|
# The following files are bundled from upstream Linux 6.10 for FUSE testing
|
|
|
|
|
# support.
|
|
|
|
|
linux:
|
|
|
|
|
support/bundled/linux/COPYING
|
|
|
|
|
support/bundled/linux/LICENSES
|
|
|
|
|
support/bundled/linux/LICENSES/exceptions/Linux-syscall-note
|
|
|
|
|
support/bundled/linux/LICENSES/preferred/GPL-2.0
|
|
|
|
|
support/bundled/linux/include/uapi/linux/fuse.h
|
|
|
|
|
|
2021-09-03 16:30:36 +00:00
|
|
|
# The following files are shared with the upstream Unicode project and must be
|
|
|
|
|
# updated regularly to stay in sync with the upstream unicode releases.
|
|
|
|
|
#
|
2024-09-12 13:02:55 +00:00
|
|
|
# Merged from Unicode 16.0.0 release.
|
2021-09-03 16:30:36 +00:00
|
|
|
unicode:
|
|
|
|
|
localedata/unicode-gen/UnicodeData.txt
|
|
|
|
|
localedata/unicode-gen/unicode-license.txt
|
|
|
|
|
localedata/unicode-gen/DerivedCoreProperties.txt
|
|
|
|
|
localedata/unicode-gen/EastAsianWidth.txt
|
localedata: Fix several issues with the set of characters considered 0-width [BZ #31370]
= `Default_Ignorable_Code_Point`s should have width 0 =
Unicode specifies (https://www.unicode.org/faq/unsup_char.html#3) that characters
with the `Default_Ignorable_Code_Point` property
> should be rendered as completely invisible (and non advancing, i.e. “zero width”),
if not explicitly supported in rendering.
Hence, `wcwidth()` should give them all a width of 0, with two exceptions:
- the soft hyphen (U+00AD SOFT HYPHEN) is assigned width 1 by longstanding precedent
- U+115F HANGUL CHOSEONG FILLER needs a carveout
due to the unique behavior of the conjoining Korean jamo characters.
One composed Hangul "syllable block" like 퓛
is made up of two to three individual component characters, or "jamo".
These are all assigned an `East_Asian_Width` of `Wide`
by Unicode, which would normally mean they would all be assigned
width 2 by glibc; a combination of (leading choseong jamo) +
(medial jungseong jamo) + (trailing jongseong jamo) would then have width 2 + 2 + 2 = 6.
However, glibc (and other wcwidth implementations) special-cases jungseong and jongseong,
assigning them all width 0,
to ensure that the complete block has width 2 + 0 + 0 = 2 as it should.
U+115F is meant for use in syllable blocks
that are intentionally missing a leading jamo;
it must be assigned a width of 2 even though it has no visible display
to ensure that the complete block has width 2.
However, `wcwidth()` currently (before this patch)
incorrectly assigns non-zero width to
U+3164 HANGUL FILLER and U+FFA0 HALFWIDTH HANGUL FILLER;
this commit fixes that.
Unicode spec references:
- Hangul: §3.12 https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf#G24646 and
§18.6 https://www.unicode.org/versions/Unicode15.0.0/ch18.pdf#G31028
- `Default_Ignorable_Code_Point`: §5.21 https://www.unicode.org/versions/Unicode15.0.0/ch05.pdf#G40095.
= Non-`Default_Ignorable_Code_Point` format controls should be visible =
The Unicode Standard, §5.21 - Characters Ignored for Display
(https://www.unicode.org/versions/Unicode15.0.0/ch05.pdf#G40095)
says the following:
> A small number of format characters (General_Category = Cf )
> are also not given the Default_Ignorable_Code_Point property.
> This may surprise implementers, who often assume
> that all format characters are generally ignored in fallback display.
> The exact list of these exceptional format characters
> can be found in the Unicode Character Database.
> There are, however, three important sets of such format characters to note:
>
> - prepended concatenation marks
> - interlinear annotation characters
> - Egyptian hieroglyph format controls
>
> The prepended concatenation marks always have a visible display.
> See “Prepended Concatenation Marks” in [*Section 23.2, Layout Controls*](https://www.unicode.org/versions/Unicode15.1.0/ch23.pdf#M9.35858.HeadingBreak.132.Layout.Controls)
> for more discussion of the use and display of these signs.
>
> The other two notable sets of format characters that exceptionally are not ignored
> in fallback display consist of the interlinear annotation characters,
> U+FFF9 INTERLINEAR ANNOTATION ANCHOR through
> U+FFFB INTERLINEAR ANNOTATION TERMINATOR,
> and the Egyptian hieroglyph format controls,
> U+13430 EGYPTIAN HIEROGLYPH VERTICAL JOINER through
> U+1343F EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE.
> These characters should have a visible glyph display for fallback rendering,
> because if they are not displayed,
> it is too easy to misread the resulting displayed text.
> See “Annotation Characters” in [*Section 23.8, Specials*](https://www.unicode.org/versions/Unicode15.1.0/ch23.pdf#M9.21335.Heading.133.Specials),
> as well as [*Section 11.4, Egyptian Hieroglyphs*](https://www.unicode.org/versions/Unicode15.1.0/ch11.pdf#M9.73291.Heading.1418.Egyptian.Hieroglyphs)
> for more discussion of the use and display of these characters.
glibc currently correctly assigns non-zero width to the prepended concatenation marks,
but it incorrectly gives zero width to the interlinear annotation characters
(which a generic terminal cannot interpret)
and the Egyptian hieroglyph format controls
(which are not widely supported in rendering implementations at present).
This commit fixes both these issues as well.
= Derive Hangul syllable type from Unicode data =
Previosuly, the jungseong and jongseong jamo ranges
were hard-coded into the script. With this commit, they are instead parsed
from the HangulSyllableType.txt data file published by Unicode.
This does not affect the end result.
Signed-off-by: Jules Bertholet <julesbertholet@quoi.xyz>
2024-02-23 20:54:57 +00:00
|
|
|
localedata/unicode-gen/HangulSyllableType.txt
|
2021-09-03 16:30:36 +00:00
|
|
|
|
|
|
|
|
# The following files are shared with the upstream tzcode project and must be
|
|
|
|
|
# updated regularly to stay in sync with the upstream releases.
|
|
|
|
|
#
|
2024-09-05 12:33:09 +00:00
|
|
|
# Currently synced to TZDB 2024b, announced and distributed here:
|
|
|
|
|
# https://github.com/eggert/tz/releases/tag/2024b
|
2021-09-03 16:30:36 +00:00
|
|
|
tzcode:
|
|
|
|
|
timezone/private.h
|
|
|
|
|
timezone/tzfile.h
|
timezone: sync to TZDB 2024a
Sync tzselect, zdump, zic to TZDB 2024a.
This patch incorporates the following TZDB source code changes,
listed roughly in descending order of importance.
zic now supports links to links, needed for future tzdata
zic now defaults to '-b slim'
zic now updates output files atomically
zic has new options -R, -l -, -p -
zic -r now uses -00 for unspecified timestamps
zdump now uses [lo,hi) for both -c and -t
Fix several integer overflow bugs
zic now checks input bytes more carefully
Simplify and fix new TZDIR setup
Default time_t to 64 bits on glibc 2.34+ 32-bit
zic now generates TZ strings that conform to POSIX when all-year DST
zic -v now shows extreme-int tm_year transitions
Fix zic bug in last time type of Asia/Gaza etc.
Fix zic bug with Palestine after 2075
Fix bug uncovered by recent change to Iran history
Fix 'zic -b fat' bug with Port Moresby 32-bit data
Fix zic bug with -r @X where X is deduced from TZ
Fix bug with zic -r cutoff before 1st transition
Fix leap second expiry and truncation
Fix zic bug on Linux 2.6.16 and 2.6.17
Fix bug with 'zic -d /a/b/c' if /a is unwriteable
Don't mistruncate TZif files at leap seconds
Fix zdump undefined behavior if !USE_LTZ
zdump -v reports localtime+gmtime failures better
Fix zdump diagnostic for missing timezone
Don't assume nonempty argv
Port better to C23
Do not assume negative >> behavior
I18nize zdump a bit better
Port zdump to right_only installations
New tzselect menu option 'now'
tzselect can now use current time to help choose
Improve tzselect behavior for Turkey etc.
tzselect: do not create temporary files
tzselect: work around mawk bug with {2,}
tzselect: Port to POSIX awk, which prohibits -v newlines
Do not use empty RE in tzselect
Don't set TZ in tzselect
Avoid sed, expr in tzselect
tzselect: Fix problems with spaces in TZDIR
Improve tzselect diagnostics
Remove zic workaround for Qt bug 53071
Remove zic support for "min" in Rule lines
Remove zic support for zic -y, Rule TYPEs, pacificnew
Remove tzselect workaround for Bash 1.14.7 bug
* SHARED-FILES: Update to match current sync.
* config.h.in (HAVE_STRERROR): Remove; no longer needed.
* timezone/Makefile ($(objpfx)zic.o): Depend on tzdir.h.
($(objpfx)tzdir.h): New rule to build a placeholder.
* timezone/private.h, timezone/tzfile.h, timezone/version:
* timezone/zdump.c, timezone/zic.c: Copy verbatim from TZDB 2024a.
2024-04-07 06:39:53 +00:00
|
|
|
timezone/tzselect.ksh
|
|
|
|
|
timezone/version
|
2021-09-03 16:30:36 +00:00
|
|
|
timezone/zdump.c
|
|
|
|
|
timezone/zic.c
|
|
|
|
|
|
|
|
|
|
# The following files are shared with the upstream tzdata project but is not
|
|
|
|
|
# synchronized regularly. The data files themselves are used only for testing
|
|
|
|
|
# purposes and their data is never used to generate any output. We synchronize
|
|
|
|
|
# them only to stay on top of newer data that might help with testing.
|
|
|
|
|
#
|
timezone: sync to TZDB 2024a
Sync tzselect, zdump, zic to TZDB 2024a.
This patch incorporates the following TZDB source code changes,
listed roughly in descending order of importance.
zic now supports links to links, needed for future tzdata
zic now defaults to '-b slim'
zic now updates output files atomically
zic has new options -R, -l -, -p -
zic -r now uses -00 for unspecified timestamps
zdump now uses [lo,hi) for both -c and -t
Fix several integer overflow bugs
zic now checks input bytes more carefully
Simplify and fix new TZDIR setup
Default time_t to 64 bits on glibc 2.34+ 32-bit
zic now generates TZ strings that conform to POSIX when all-year DST
zic -v now shows extreme-int tm_year transitions
Fix zic bug in last time type of Asia/Gaza etc.
Fix zic bug with Palestine after 2075
Fix bug uncovered by recent change to Iran history
Fix 'zic -b fat' bug with Port Moresby 32-bit data
Fix zic bug with -r @X where X is deduced from TZ
Fix bug with zic -r cutoff before 1st transition
Fix leap second expiry and truncation
Fix zic bug on Linux 2.6.16 and 2.6.17
Fix bug with 'zic -d /a/b/c' if /a is unwriteable
Don't mistruncate TZif files at leap seconds
Fix zdump undefined behavior if !USE_LTZ
zdump -v reports localtime+gmtime failures better
Fix zdump diagnostic for missing timezone
Don't assume nonempty argv
Port better to C23
Do not assume negative >> behavior
I18nize zdump a bit better
Port zdump to right_only installations
New tzselect menu option 'now'
tzselect can now use current time to help choose
Improve tzselect behavior for Turkey etc.
tzselect: do not create temporary files
tzselect: work around mawk bug with {2,}
tzselect: Port to POSIX awk, which prohibits -v newlines
Do not use empty RE in tzselect
Don't set TZ in tzselect
Avoid sed, expr in tzselect
tzselect: Fix problems with spaces in TZDIR
Improve tzselect diagnostics
Remove zic workaround for Qt bug 53071
Remove zic support for "min" in Rule lines
Remove zic support for zic -y, Rule TYPEs, pacificnew
Remove tzselect workaround for Bash 1.14.7 bug
* SHARED-FILES: Update to match current sync.
* config.h.in (HAVE_STRERROR): Remove; no longer needed.
* timezone/Makefile ($(objpfx)zic.o): Depend on tzdir.h.
($(objpfx)tzdir.h): New rule to build a placeholder.
* timezone/private.h, timezone/tzfile.h, timezone/version:
* timezone/zdump.c, timezone/zic.c: Copy verbatim from TZDB 2024a.
2024-04-07 06:39:53 +00:00
|
|
|
# Currently synced to tzcode 2009i, announced and distributed here:
|
|
|
|
|
# https://mm.icann.org/pipermail/tz/2009-June/040697.html
|
|
|
|
|
# https://data.iana.org/time-zones/releases/tzdata2009i.tar.gz
|
2021-09-03 16:30:36 +00:00
|
|
|
tzdata:
|
|
|
|
|
timezone/africa
|
|
|
|
|
timezone/antarctica
|
|
|
|
|
timezone/asia
|
|
|
|
|
timezone/australasia
|
|
|
|
|
timezone/europe
|
|
|
|
|
timezone/northamerica
|
|
|
|
|
timezone/southamerica
|
|
|
|
|
timezone/pacificnew
|
|
|
|
|
timezone/etcetera
|
|
|
|
|
timezone/factory
|
|
|
|
|
timezone/backward
|
|
|
|
|
timezone/systemv
|
|
|
|
|
timezone/solar87
|
|
|
|
|
timezone/solar88
|
|
|
|
|
timezone/solar89
|
|
|
|
|
timezone/iso3166.tab
|
|
|
|
|
timezone/zone.tab
|
|
|
|
|
timezone/leapseconds
|
|
|
|
|
# This is yearistype.sh in the parent project
|
|
|
|
|
timezone/yearistype
|
replace tgammaf by the CORE-MATH implementation
The CORE-MATH implementation is correctly rounded (for any rounding mode).
This can be checked by exhaustive tests in a few minutes since there are
less than 2^32 values to check against for example GNU MPFR.
This patch also adds some bench values for tgammaf.
Tested on x86_64 and x86 (cfarm26).
With the initial GNU libc code it gave on an Intel(R) Core(TM) i7-8700:
"tgammaf": {
"": {
"duration": 3.50188e+09,
"iterations": 2e+07,
"max": 602.891,
"min": 65.1415,
"mean": 175.094
}
}
With the new code:
"tgammaf": {
"": {
"duration": 3.30825e+09,
"iterations": 5e+07,
"max": 211.592,
"min": 32.0325,
"mean": 66.1649
}
}
With the initial GNU libc code it gave on cfarm26 (i686):
"tgammaf": {
"": {
"duration": 3.70505e+09,
"iterations": 6e+06,
"max": 2420.23,
"min": 243.154,
"mean": 617.509
}
}
With the new code:
"tgammaf": {
"": {
"duration": 3.24497e+09,
"iterations": 1.8e+07,
"max": 1238.15,
"min": 101.155,
"mean": 180.276
}
}
Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Changes in v2:
- include <math.h> (fix the linknamespace failures)
- restored original benchtests/strcoll-inputs/filelist#en_US.UTF-8 file
- restored original wrapper code (math/w_tgammaf_compat.c),
except for the dealing with the sign
- removed the tgammaf/float entries in all libm-test-ulps files
- address other comments from Joseph Myers
(https://sourceware.org/pipermail/libc-alpha/2024-July/158736.html)
Changes in v3:
- pass NULL argument for signgam from w_tgammaf_compat.c
- use of math_narrow_eval
- added more comments
Changes in v4:
- initialize local_signgam to 0 in math/w_tgamma_template.c
- replace sysdeps/ieee754/dbl-64/gamma_productf.c by dummy file
Changes in v5:
- do not mention local_signgam any more in math/w_tgammaf_compat.c
- initialize local_signgam to 1 instead of 0 in w_tgamma_template.c
and added comment
Changes in v6:
- pass NULL as 2nd argument of __ieee754_gammaf_r in
w_tgammaf_compat.c, and check for NULL in e_gammaf_r.c
Changes in v7:
- added Signed-off-by line for Alexei Sibidanov (author of the code)
Changes in v8:
- added Signed-off-by line for Paul Zimmermann (submitted of the patch)
Changes in v9:
- address comments from review by Adhemerval Zanella
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-10-08 09:28:04 +00:00
|
|
|
|
2025-08-25 16:38:20 +00:00
|
|
|
# The following files are imported from the CORE-MATH project, with
|
|
|
|
|
# adjustments made to follow glibc code style, to utilize internal error
|
|
|
|
|
# handling functions, and to implement minor fixes for ABIs with
|
|
|
|
|
# FLT_EVAL_METHOD equal to 2 (i386). Additionally, extra optimizations
|
|
|
|
|
# are applied to share the internal data table across different
|
|
|
|
|
# implementations.
|
|
|
|
|
#
|
|
|
|
|
# The project is distribute here:
|
|
|
|
|
# https://gitlab.inria.fr/core-math/core-math/
|
|
|
|
|
core-math:
|
math: Use acosh from CORE-MATH
The current implementation precision shows the following accuracy, on
two different ranges ([1,21) and [21, DBL_MAX)) with 10e9 uniform
randomly generated numbers (first column is the accuracy in ULP, with
'0' being correctly rounded, second is the number of samples with the
corresponding precision):
* range [1,21]
* FE_TONEAREST
0: 8931139411 89.31%
1: 1068697545 10.69%
2: 163044 0.00%
* FE_UPWARD
0: 7936620731 79.37%
1: 2062594522 20.63%
2: 783977 0.01%
3: 770 0.00%
* FE_DOWNWARD
0: 7936459794 79.36%
1: 2062734117 20.63%
2: 805312 0.01%
3: 777 0.00%
* FE_TOWARDZERO
0: 7910345595 79.10%
1: 2088584522 20.89%
2: 1069106 0.01%
3: 777 0.00%
* Range [21, DBL_MAX)
* FE_TONEAREST
0: 5163888431 51.64%
1: 4836111569 48.36%
* FE_UPWARD
0: 4835951885 48.36%
1: 5164048115 51.64%
* FE_DOWNWARD
0: 5164048432 51.64%
1: 4835951568 48.36%
* FE_TOWARDZERO
0: 5164058042 51.64%
1: 4835941958 48.36%
The CORE-MATH implementation is correctly rounded for any rounding mode.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1) shows:
reciprocal-throughput master patched improvement
x86_64 20.9131 47.2187 -125.79%
x86_64v2 20.8823 41.1042 -96.84%
x86_64v3 19.0282 25.8045 -35.61%
aarch64 14.7419 18.1535 -23.14%
power10 8.98341 11.0423 -22.92%
Latency master patched improvement
x86_64 75.5494 89.5979 -18.60%
x86_64v2 74.4443 87.6292 -17.71%
x86_64v3 71.8558 70.7086 1.60%
aarch64 30.3361 29.2709 3.51%
power10 20.9263 19.2482 8.02%
For x86_64/x86_64-v2, most performance hit came from the fma call
through the ifunc mechanism.
Checked on x86_64-linux-gnu, aarch64-linux-gnu, and
powerpc64le-linux-gnu.
Reviewed-by: DJ Delorie <dj@redhat.com>
2025-10-10 18:15:22 +00:00
|
|
|
# src/binary64/acosh/acosh.c, revision 69062c4d
|
|
|
|
|
sysdeps/ieee754/dbl-64/e_acosh.c
|
2025-11-10 11:44:14 +00:00
|
|
|
# src/binary64/atanh/atanh.c, revision c9abdf80
|
math: Use atanh from CORE-MATH
The current implementation precision shows the following accuracy, on
one range ([-1,1]) with 10e9 uniform randomly generated numbers for
each range (first column is the accuracy in ULP, with '0' being
correctly rounded, second is the number of samples with the
corresponding precision):
* Range [-1, 1]
* FE_TONEAREST
0: 8180011860 81.80%
1: 1819865257 18.20%
2: 122883 0.00%
* FE_UPWARDA
0: 3903695744 39.04%
1: 4992324465 49.92%
2: 1096319340 10.96%
3: 7660451 0.08%
* FE_DOWNWARDA
0: 3904555484 39.05%
1: 4991970864 49.92%
2: 1095447471 10.95%
3: 8026181 0.08%
* FE_TOWARDZERO
0: 7070209165 70.70%
1: 2908447434 29.08%
2: 21343401 0.21%
The CORE-MATH implementation is correctly rounded for any rounding mode.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1) shows:
reciprocal-throughput master patched improvement
x86_64 26.4969 22.4625 15.23%
x86_64v2 26.0792 22.9822 11.88%
x86_64v3 25.6357 22.2147 13.34%
aarch64 20.2295 19.7001 2.62%
power10 10.0986 9.3846 7.07%
Latency master patched improvement
x86_64 80.2311 59.9745 25.25%
x86_64v2 79.7010 61.4066 22.95%
x86_64v3 78.2679 58.5804 25.15%
aarch64 34.3959 28.1523 18.15%
power10 23.2417 18.2694 21.39%
Checked on x86_64-linux-gnu, aarch64-linux-gnu, and
powerpc64le-linux-gnu.
Reviewed-by: DJ Delorie <dj@redhat.com>
2025-10-10 18:15:24 +00:00
|
|
|
sysdeps/ieee754/dbl-64/e_atanh.c
|
math: Use tgamma from CORE-MATH
The current implementation precision shows the following accuracy, on
one range ([-20,20]) with 10e9 uniform randomly generated numbers for
each range (first column is the accuracy in ULP, with '0' being
correctly rounded, second is the number of samples with the
corresponding precision):
* Range [-20,20]
* FE_TONEAREST
0: 4504877808 45.05%
1: 4402224940 44.02%
2: 947652295 9.48%
3: 131076831 1.31%
4: 13222216 0.13%
5: 910045 0.01%
6: 35253 0.00%
7: 606 0.00%
8: 6 0.00%
* FE_UPWARD
0: 3477307921 34.77%
1: 4838637866 48.39%
2: 1413942684 14.14%
3: 240762564 2.41%
4: 27113094 0.27%
5: 2130934 0.02%
6: 102599 0.00%
7: 2324 0.00%
8: 14 0.00%
* FE_DOWNWARD
0: 3923545410 39.24%
1: 4745067290 47.45%
2: 1137899814 11.38%
3: 171596912 1.72%
4: 20013805 0.20%
5: 1773899 0.02%
6: 99911 0.00%
7: 2928 0.00%
8: 31 0.00%
* FE_TOWARDZERO
0: 3697160741 36.97%
1: 4731951491 47.32%
2: 1303092738 13.03%
3: 231969191 2.32%
4: 32344517 0.32%
5: 3283092 0.03%
6: 193010 0.00%
7: 5175 0.00%
8: 45 0.00%
The CORE-MATH implementation is correctly rounded for any rounding mode.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1) shows:
reciprocal-throughput master patched improvement
x86_64 237.7960 175.4090 26.24%
x86_64v2 232.9320 163.4460 29.83%
x86_64v3 193.0680 89.7721 53.50%
aarch64 113.6340 56.7350 50.07%
power10 92.0617 26.6137 71.09%
Latency master patched improvement
x86_64 266.7190 208.0130 22.01%
x86_64v2 263.6070 200.0280 24.12%
x86_64v3 214.0260 146.5180 31.54%
aarch64 114.4760 58.5235 48.88%
power10 84.3718 35.7473 57.63%
Checked on x86_64-linux-gnu, aarch64-linux-gnu, and
powerpc64le-linux-gnu.
Reviewed-by: DJ Delorie <dj@redhat.com>
2025-10-10 18:15:28 +00:00
|
|
|
# src/binary64/tgamma/tgamma.c, revision 0f185e23
|
|
|
|
|
sysdeps/ieee754/dbl-64/e_gamma_r.c
|
math: Use lgamma from CORE-MATH
The current implementation precision shows the following accuracy, on
one range ([-1,1]) with 10e9 uniform randomly generated numbers for
each range (first column is the accuracy in ULP, with '0' being
correctly rounded, second is the number of samples with the
corresponding precision):
* Range [-20, 20]
* FE_TONEAREST
0: 6701254075 67.01%
1: 3230897408 32.31%
2: 63986940 0.64%
3: 3605417 0.04%
4: 233189 0.00%
5: 20973 0.00%
6: 1869 0.00%
7: 125 0.00%
8: 4 0.00%
* FE_UPWARDA
0: 4207428861 42.07%
1: 5001137116 50.01%
2: 740542213 7.41%
3: 49116304 0.49%
4: 1715617 0.02%
5: 54464 0.00%
6: 4956 0.00%
7: 451 0.00%
8: 16 0.00%
9: 2 0.00%
* FE_DOWNWARD
0: 4155925193 41.56%
1: 4989821364 49.90%
2: 770312796 7.70%
3: 72014726 0.72%
4: 11040522 0.11%
5: 872811 0.01%
6: 12480 0.00%
7: 106 0.00%
8: 2 0.00%
* FE_TOWARDZERO
0: 4225861532 42.26%
1: 5027051105 50.27%
2: 706443411 7.06%
3: 39877908 0.40%
4: 713109 0.01%
5: 47513 0.00%
6: 4961 0.00%
7: 438 0.00%
8: 23 0.00%
* Range [20, 0x5.d53649e2d4674p+1012]
* FE_TONEAREST
0: 7262241995 72.62%
1: 2737758005 27.38%
* FE_UPWARD
0: 4690392401 46.90%
1: 5143728216 51.44%
2: 165879383 1.66%
* FE_DOWNWARD
0: 4690333331 46.90%
1: 5143794937 51.44%
2: 165871732 1.66%
* FE_TOWARDZERO
0: 4690343071 46.90%
1: 5143786761 51.44%
2: 165870168 1.66%
The CORE-MATH implementation is correctly rounded for any rounding mode.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1) shows:
reciprocal-throughput master patched improvement
x86_64 112.9740 135.8640 -20.26%
x86_64v2 111.8910 131.7590 -17.76%
x86_64v3 108.2800 68.0935 37.11%
aarch64 61.3759 49.2403 19.77%
power10 42.4483 24.1943 43.00%
Latency master patched improvement
x86_64 144.0090 167.9750 -16.64%
x86_64v2 139.2690 167.1900 -20.05%
x86_64v3 130.1320 96.9347 25.51%
aarch64 66.8538 53.2747 20.31%
power10 49.5076 29.6917 40.03%
For x86_64/x86_64-v2, most performance hit came from the fma call
through the ifunc mechanism.
Checked on x86_64-linux-gnu, aarch64-linux-gnu, and
powerpc64le-linux-gnu.
Reviewed-by: DJ Delorie <dj@redhat.com>
2025-10-10 18:15:27 +00:00
|
|
|
# src/binary64/lgamma/lgamma.c, revision 0413bb7e
|
|
|
|
|
sysdeps/ieee754/dbl-64/e_lgamma_r.c
|
math: Use asinh from CORE-MATH
The current implementation precision shows the following accuracy, on
tthree different ranges ([-DBL_MAX, -10], [-10,10], and [10, DBL_MAX))
with 10e9 uniform randomly generated numbers for each range (first
column is the accuracy in ULP, with '0' being correctly rounded, second
is the number of samples with the corresponding precision):
* range [-DBL_MAX, -10]
* FE_TONEAREST
0: 5164019099 51.64%
1: 4835980901 48.36%
* FE_UPWARD
1: 4836053540 48.36%
2: 5163946460 51.64%
* FE_DOWNWARD
1: 5163926134 51.64%
2: 4836073866 48.36%
* FE_TOWARDZERO
0: 5163937001 51.64%
1: 4836062999 48.36%
* Range [-10, 10)
* FE_TONEAREST
0: 8679029381 86.79%
1: 1320934581 13.21%
2: 36038 0.00%
* FE_UPWARD
0: 3965704277 39.66%
1: 4993616710 49.94%
2: 1039680225 10.40%
3: 998788 0.01%
* FE_DOWNWARD
0: 3965806523 39.66%
1: 4993534438 49.94%
2: 1039601726 10.40%
3: 1057313 0.01%
* FE_TOWARDZEROA
0: 7734210130 77.34%
1: 2261868439 22.62%
2: 3921431 0.04%
* Range [10, DBL_MAX)
* FE_TONEAREST
0: 5163973212 51.64%
1: 4836026788 48.36%
* FE_UPWARD
0: 4835991071 48.36%
1: 5164008929 51.64%
* FE_DOWNWARD
0: 5163983594 51.64%
1: 4836016406 48.36%
* FE_TOWARDZERO
0: 5163993394 51.64%
1: 4836006606 48.36%
The CORE-MATH implementation is correctly rounded for any rounding mode.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1) shows:
reciprocal-throughput master patched improvement
x86_64 26.5178 45.3754 -71.11%
x86_64v2 26.3167 44.7870 -70.18%
x86_64v3 25.9109 25.4887 1.63%
aarch64 18.0555 17.3374 3.98%
power10 19.8535 20.5586 -3.55%
Latency master patched improvement
x86_64 82.6755 91.2026 -10.31%
x86_64v2 82.4581 90.7152 -10.01%
x86_64v3 80.7000 71.9454 10.85%
aarch64 32.8320 28.8565 12.11%
power10 44.5309 37.0096 16.89%
For x86_64/x86_64-v2, most performance hit came from the fma call
through the ifunc mechanism.
Checked on x86_64-linux-gnu, aarch64-linux-gnu, and
powerpc64le-linux-gnu.
Reviewed-by: DJ Delorie <dj@redhat.com>
2025-10-10 18:15:23 +00:00
|
|
|
# src/binary64/asinh/asinh.c, revision fde815f8
|
|
|
|
|
sysdeps/ieee754/dbl-64/s_asinh.c
|
math: Use erf from CORE-MATH
The current implementation precision shows the following accuracy, on
three rangeis ([-DBL_MIN, -4.2], [-4.2, 4.2], [4.2, DBL_MAX]) with
10e9 uniform randomly generated numbers for each range (first column
is the accuracy in ULP, with '0' being correctly rounded, second is the
number of samples with the corresponding precision):
* Range [-DBL_MIN, -4.2]
* FE_TONEAREST
0: 10000000000 100.00%
* FE_UPWARD
0: 10000000000 100.00%
* FE_DOWNWARD
0: 10000000000 100.00%
* FE_TOWARDZERO
0: 10000000000 100.00%
* Range [-4.2, 4.2]
* FE_TONEAREST
0: 9764404513 97.64%
1: 235595487 2.36%
* FE_UPWARD
0: 9468013928 94.68%
1: 531986072 5.32%
* FE_DOWNWARD
0: 9493787693 94.94%
1: 506212307 5.06%
* FE_TOWARDZERO
0: 9585271351 95.85%
1: 414728649 4.15%
* Range [4.2, DBL_MAX]
* FE_TONEAREST
0: 10000000000 100.00%
* FE_UPWARD
0: 10000000000 100.00%
* FE_DOWNWARD
0: 10000000000 100.00%
* FE_TOWARDZERO
0: 10000000000 100.00%
The CORE-MATH implementation is correctly rounded for any rounding mode.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1) shows:
reciprocal-throughput master patched improvement
x86_64 38.2754 78.0311 -103.87%
x86_64v2 38.3325 75.7555 -97.63%
x86_64v3 34.6604 28.3182 18.30%
aarch64 23.1499 21.4307 7.43%
power10 12.3051 9.3766 23.80%
Latency master patched improvement
x86_64 84.3062 121.3580 -43.95%
x86_64v2 84.1817 117.4250 -39.49%
x86_64v3 81.0933 70.6458 12.88%
aarch64 35.012 29.5012 15.74%
power10 21.7205 18.4589 15.02%
For x86_64/x86_64-v2, most performance hit came from the fma call
through the ifunc mechanism.
Checked on x86_64-linux-gnu, aarch64-linux-gnu, and
powerpc64le-linux-gnu.
Reviewed-by: DJ Delorie <dj@redhat.com>
2025-10-10 18:15:29 +00:00
|
|
|
# src/binary64/erf/erf.c, revision 384ed01d
|
|
|
|
|
sysdeps/ieee754/dbl-64/s_erf.c
|
math: Use erfc from CORE-MATH
The current implementation precision shows the following accuracy, on
three ranges ([-DBL_MAX,5], [-5,5], [5,DBL_MAX]) with 10e9 uniform
randomly generated numbers for each range (first column is the
accuracy in ULP, with '0' being correctly rounded, second is the
number of samples with the corresponding precision):
* Range [-DBL_MAX, -5]
* FE_TONEAREST
0: 10000000000 100.00%
* FE_UPWARD
0: 10000000000 100.00%
* FE_DOWNWARD
0: 10000000000 100.00%
* FE_TOWARDZERO
0: 10000000000 100.00%
* Range [-5, 5]
* FE_TONEAREST
0: 8069309665 80.69%
1: 1882910247 18.83%
2: 47485296 0.47%
3: 293749 0.00%
4: 1043 0.00%
* FE_UPWARD
0: 5540301026 55.40%
1: 2026739127 20.27%
2: 1774882486 17.75%
3: 567324466 5.67%
4: 86913847 0.87%
5: 3820789 0.04%
6: 18259 0.00%
* FE_DOWNWARD
0: 5520969586 55.21%
1: 2057293099 20.57%
2: 1778334818 17.78%
3: 557521494 5.58%
4: 82473927 0.82%
5: 3393276 0.03%
6: 13800 0.00%
* FE_TOWARDZERO
0: 6220287175 62.20%
1: 2323846149 23.24%
2: 1251999920 12.52%
3: 190748245 1.91%
4: 12996232 0.13%
5: 122279 0.00%
* Range [5, DBL_MAX]
* FE_TONEAREST
0: 10000000000 100.00%
* FE_UPWARD
0: 10000000000 100.00%
* FE_DOWNWARD
0: 10000000000 100.00%
* FE_TOWARDZERO
0: 10000000000 100.00%
The CORE-MATH implementation is correctly rounded for any rounding mode.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1) shows:
reciprocal-throughput master patched improvement
x86_64 49.0980 267.0660 -443.94%
x86_64v2 49.3220 257.6310 -422.34%
x86_64v3 42.9539 84.9571 -97.79%
aarch64 28.7266 52.9096 -84.18%
power10 14.1673 25.1273 -77.36%
Latency master patched improvement
x86_64 95.6640 269.7060 -181.93%
x86_64v2 95.8296 260.4860 -171.82%
x86_64v3 91.1658 112.7150 -23.64%
aarch64 37.0745 58.6791 -58.27%
power10 23.3197 31.5737 -35.39%
Checked on x86_64-linux-gnu, aarch64-linux-gnu, and
powerpc64le-linux-gnu.
Reviewed-by: DJ Delorie <dj@redhat.com>
2025-10-10 18:15:30 +00:00
|
|
|
# src/binary64/erfc/erfc.c, revision 55e9869e
|
|
|
|
|
sysdeps/ieee754/dbl-64/s_erfc.c
|
2025-08-25 16:38:20 +00:00
|
|
|
# src/binary32/acos/acosf.c, revision 56dd347
|
|
|
|
|
sysdeps/ieee754/flt-32/e_acosf.c
|
|
|
|
|
# src/binary32/acosh/acoshf.c, revision d0b9ddd
|
|
|
|
|
sysdeps/ieee754/flt-32/e_acoshf.c
|
|
|
|
|
# file src/binary32/cosh/coshf.c, revision de59ecfb
|
|
|
|
|
sysdeps/ieee754/flt-32/e_coshf.c
|
|
|
|
|
# src/binary32/tgamma/tgammaf.c, revision a48e352
|
|
|
|
|
sysdeps/ieee754/flt-32/e_gammaf_r.c
|
|
|
|
|
# src/binary32/lgamma/lgammaf.c, revision bc385c2
|
|
|
|
|
sysdeps/ieee754/flt-32/e_lgammaf_r.c
|
|
|
|
|
# src/binary32/log10/log10f.c, revision bc385c2
|
|
|
|
|
sysdeps/ieee754/flt-32/e_log10f.c
|
|
|
|
|
# src/binary32/sinh/sinhf.c, revision bbfabd99
|
|
|
|
|
sysdeps/ieee754/flt-32/e_sinhf.c
|
|
|
|
|
# src/binary32/acospi/acospif.c, revision 1a6a9ab
|
|
|
|
|
sysdeps/ieee754/flt-32/s_acospif.c
|
|
|
|
|
# src/binary32/asinpi/asinpif.c, revision 6ee58266
|
|
|
|
|
sysdeps/ieee754/flt-32/s_asinpif.c
|
|
|
|
|
# src/binary32/atan2pi/atan2pif.c, revision dbebee1
|
|
|
|
|
sysdeps/ieee754/flt-32/s_atan2pif.c
|
|
|
|
|
# src/binary32/atanpi/atanpif.c, revision e02000e
|
|
|
|
|
sysdeps/ieee754/flt-32/s_atanpif.c
|
|
|
|
|
# src/binary32/cbrt/cbrtf.c, revision f7c7408d
|
|
|
|
|
sysdeps/ieee754/flt-32/s_cbrtf.c
|
|
|
|
|
# src/binary32/cospi/cospif.c, revision bbfabd99
|
|
|
|
|
sysdeps/ieee754/flt-32/s_cospif.c
|
|
|
|
|
# src/binary32/erfc/erfcf.c revision d0a2be20
|
|
|
|
|
sysdeps/ieee754/flt-32/s_erfcf.c
|
|
|
|
|
# src/binary32/erf/erff.c revision bc385c2
|
|
|
|
|
sysdeps/ieee754/flt-32/s_erff.c
|
|
|
|
|
# src/binary32/exp10m1/exp10m1f.c, revision c46b85b
|
|
|
|
|
sysdeps/ieee754/flt-32/s_exp10m1f.c
|
|
|
|
|
# src/binary32/exp2m1/exp2m1f.c, revision baf5f6b
|
|
|
|
|
sysdeps/ieee754/flt-32/s_exp2m1f.c
|
|
|
|
|
# src/binary32/expm1/expm1f.c, revision bc385c2
|
|
|
|
|
sysdeps/ieee754/flt-32/s_expm1f.c
|
|
|
|
|
# src/binary32/log10p1/log10p1f.c revision bc385c2
|
|
|
|
|
sysdeps/ieee754/flt-32/s_log10p1f.c
|
|
|
|
|
# src/binary32/log1p/log1pf.c revision bc385c2
|
|
|
|
|
sysdeps/ieee754/flt-32/s_log1pf.c
|
|
|
|
|
# src/binary32/log2p1/log2p1f.c revision bc385c2
|
|
|
|
|
sysdeps/ieee754/flt-32/s_log2p1f.c
|
|
|
|
|
# src/binary32/sinpi/sinpif.c, revision bbfabd99d
|
|
|
|
|
sysdeps/ieee754/flt-32/s_sinpif.c
|
|
|
|
|
# src/binary32/tan/tanf.c, revision 59d21d7
|
|
|
|
|
sysdeps/ieee754/flt-32/s_tanf.c
|
|
|
|
|
# src/binary32/tanh/tanhf.c, revision b1ecd83
|
|
|
|
|
sysdeps/ieee754/flt-32/s_tanhf.c
|
|
|
|
|
# src/binary32/tanpi/tanpif.c, revision 3bbf907
|
|
|
|
|
sysdeps/ieee754/flt-32/s_tanpif.c
|