From: Paul Eggert <eggert@cs.ucla.edu>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org, raeburn@raeburn.org, tom@tromey.com,
monnier@IRO.UMontreal.CA, rms@gnu.org
Subject: Re: Using the GNU GMP Library for Bignums in Emacs
Date: Wed, 1 Aug 2018 19:06:49 -0700 [thread overview]
Message-ID: <287f0b32-00c0-5941-67ac-60971232cb6d@cs.ucla.edu> (raw)
In-Reply-To: <83wotamh65.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 582 bytes --]
Eli Zaretskii wrote:
> isn't there a way to test whether a platform supports IEEE
> FP representation except by looking for ieee754.h? AFAICS, that
> header just defines a few data structures that any IEEE-compliant
> platform should be able to work with.
We can try using ieee754.h on non-GNU platforms and see what happens. In theory,
there could be weird platforms where it doesn't work (as no standard specifies
IEEE 754 layout); in practice, we'll probably be OK. So I created a Gnulib
module for ieee754.h, merged it in, and installed the attached into master.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Substitute-a-ieee754.h-on-hosts-lacking-it.patch --]
[-- Type: text/x-patch; name="0001-Substitute-a-ieee754.h-on-hosts-lacking-it.patch", Size: 16730 bytes --]
From d216d7d248199aa6c99cd642116717c5b301ae6d Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 1 Aug 2018 18:53:31 -0700
Subject: [PATCH] Substitute a <ieee754.h> on hosts lacking it
* .gitignore: Add lib/ieee754.h.
* admin/merge-gnulib (GNULIB_MODULES): Add ieee754-h.
* configure.ac: Remove ieee754.h check, as Gnulib now does that.
* etc/NEWS: Mention this.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* lib/ieee754.in.h, m4/ieee754-h.m4: New files, from Gnulib.
* src/lisp.h (IEEE_FLOATING_POINT): Now a macro so that it
can be used in #if.
* src/lread.c, src/print.c: Include <ieee754.h> if
IEEE_FLOATING_POINT, not if HAVE_IEEE754_H.
* src/lread.c (string_to_number):
* src/print.c (float_to_string):
Process NaNs only on IEEE hosts, and assume <ieee754.h>
in that case.
---
.gitignore | 1 +
admin/merge-gnulib | 2 +-
configure.ac | 1 -
etc/NEWS | 6 +-
lib/gnulib.mk.in | 29 +++++++
lib/ieee754.in.h | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++
m4/gnulib-comp.m4 | 4 +
m4/ieee754-h.m4 | 21 +++++
src/lisp.h | 11 +--
src/lread.c | 9 +--
src/print.c | 25 +-----
11 files changed, 291 insertions(+), 40 deletions(-)
create mode 100644 lib/ieee754.in.h
create mode 100644 m4/ieee754-h.m4
diff --git a/.gitignore b/.gitignore
index d3712b0..26fe4bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,6 +57,7 @@ lib/execinfo.h
lib/fcntl.h
lib/getopt.h
lib/getopt-cdefs.h
+lib/ieee754.h
lib/inttypes.h
lib/libgnu.a
lib/limits.h
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 39dfaee..1397ecf 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -35,7 +35,7 @@ GNULIB_MODULES=
fcntl fcntl-h fdatasync fdopendir
filemode filevercmp flexmember fpieee fstatat fsusage fsync
getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog
- ignore-value intprops largefile lstat
+ ieee754-h ignore-value intprops largefile lstat
manywarnings memrchr minmax mkostemp mktime nstrftime
pipe2 pselect pthread_sigmask putenv qcopy-acl readlink readlinkat
sig2str socklen stat-time std-gnu11 stdalign stddef stdio
diff --git a/configure.ac b/configure.ac
index dbdcce7..b691867 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1668,7 +1668,6 @@ AC_DEFUN
dnl checks for header files
AC_CHECK_HEADERS_ONCE(
- ieee754.h
linux/fs.h
malloc.h
sys/systeminfo.h
diff --git a/etc/NEWS b/etc/NEWS
index 9e7a765..6c79a46 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -880,9 +880,9 @@ Formerly, some of these functions ignored signs and significands of
NaNs. Now, all these functions treat NaN signs and significands as
significant. For example, (eql 0.0e+NaN -0.0e+NaN) now returns nil
because the two NaNs have different signs; formerly it returned t.
-Also, on platforms that have <ieee754.h> Emacs now reads and prints
-NaN significands; e.g., if X is a NaN, (format "%s" X) now returns
-"0.0e+NaN", "1.0e+NaN", etc., depending on X's significand.
+Also, Emacs now reads and prints NaN significands; e.g., if X is a
+NaN, (format "%s" X) now returns "0.0e+NaN", "1.0e+NaN", etc.,
+depending on X's significand.
+++
** The function 'make-string' accepts an additional optional argument.
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index e623921..7d28dcc 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -95,6 +95,7 @@
# gettime \
# gettimeofday \
# gitlog-to-changelog \
+# ieee754-h \
# ignore-value \
# intprops \
# largefile \
@@ -220,6 +221,7 @@ GL_GENERATE_ALLOCA_H = @GL_GENERATE_ALLOCA_H@
GL_GENERATE_BYTESWAP_H = @GL_GENERATE_BYTESWAP_H@
GL_GENERATE_ERRNO_H = @GL_GENERATE_ERRNO_H@
GL_GENERATE_EXECINFO_H = @GL_GENERATE_EXECINFO_H@
+GL_GENERATE_IEEE754_H = @GL_GENERATE_IEEE754_H@
GL_GENERATE_LIMITS_H = @GL_GENERATE_LIMITS_H@
GL_GENERATE_STDALIGN_H = @GL_GENERATE_STDALIGN_H@
GL_GENERATE_STDDEF_H = @GL_GENERATE_STDDEF_H@
@@ -646,6 +648,7 @@ HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
HAVE_XSERVER = @HAVE_XSERVER@
HAVE__EXIT = @HAVE__EXIT@
HYBRID_MALLOC = @HYBRID_MALLOC@
+IEEE754_H = @IEEE754_H@
IMAGEMAGICK_CFLAGS = @IMAGEMAGICK_CFLAGS@
IMAGEMAGICK_LIBS = @IMAGEMAGICK_LIBS@
INCLUDE_NEXT = @INCLUDE_NEXT@
@@ -1787,6 +1790,32 @@ EXTRA_libgnu_a_SOURCES += group-member.c
endif
## end gnulib module group-member
+## begin gnulib module ieee754-h
+ifeq (,$(OMIT_GNULIB_MODULE_ieee754-h))
+
+BUILT_SOURCES += $(IEEE754_H)
+
+# We need the following in order to create <ieee754.h> when the system
+# doesn't have one that works with the given compiler.
+ifneq (,$(GL_GENERATE_IEEE754_H))
+ieee754.h: ieee754.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/ifndef _GL_GNULIB_HEADER/if 0/g' \
+ $(srcdir)/ieee754.in.h; \
+ } > $@-t && \
+ mv -f $@-t $@
+else
+ieee754.h: $(top_builddir)/config.status
+ rm -f $@
+endif
+MOSTLYCLEANFILES += ieee754.h ieee754.h-t
+
+EXTRA_DIST += ieee754.in.h
+
+endif
+## end gnulib module ieee754-h
+
## begin gnulib module ignore-value
ifeq (,$(OMIT_GNULIB_MODULE_ignore-value))
diff --git a/lib/ieee754.in.h b/lib/ieee754.in.h
new file mode 100644
index 0000000..316ac03
--- /dev/null
+++ b/lib/ieee754.in.h
@@ -0,0 +1,222 @@
+/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 3 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _IEEE754_H
+
+#define _IEEE754_H 1
+
+#ifndef _GL_GNULIB_HEADER
+/* Ordinary glibc usage. */
+# include <features.h>
+# include <endian.h>
+#else
+/* Gnulib usage. */
+# ifndef __BEGIN_DECLS
+# ifdef __cplusplus
+# define __BEGIN_DECLS extern "C" {
+# define __END_DECLS }
+# else
+# define __BEGIN_DECLS
+# define __END_DECLS
+# endif
+# endif
+# ifndef __FLOAT_WORD_ORDER
+# define __LITTLE_ENDIAN 1234
+# define __BIG_ENDIAN 4321
+# ifdef WORDS_BIGENDIAN
+# define __BYTE_ORDER __BIG_ENDIAN
+# else
+# define __BYTE_ORDER __LITTLE_ENDIAN
+# endif
+# define __FLOAT_WORD_ORDER __BYTE_ORDER
+# endif
+#endif
+
+__BEGIN_DECLS
+
+union ieee754_float
+ {
+ float f;
+
+ /* This is the IEEE 754 single-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:8;
+ unsigned int mantissa:23;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ unsigned int mantissa:23;
+ unsigned int exponent:8;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:8;
+ unsigned int quiet_nan:1;
+ unsigned int mantissa:22;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ unsigned int mantissa:22;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:8;
+ unsigned int negative:1;
+#endif /* Little endian. */
+ } ieee_nan;
+ };
+
+#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
+
+
+union ieee754_double
+ {
+ double d;
+
+ /* This is the IEEE 754 double-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:20;
+ unsigned int mantissa1:32;
+#endif /* Big endian. */
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+ unsigned int mantissa0:20;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+ unsigned int mantissa1:32;
+# else
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:20;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+# endif
+#endif /* Little endian. */
+ } ieee;
+
+ /* This format makes it easier to see if a NaN is a signalling NaN. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:11;
+ unsigned int quiet_nan:1;
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa0:19;
+ unsigned int mantissa1:32;
+#else
+# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+ unsigned int mantissa0:19;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+ unsigned int mantissa1:32;
+# else
+ /* Together these comprise the mantissa. */
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:19;
+ unsigned int quiet_nan:1;
+ unsigned int exponent:11;
+ unsigned int negative:1;
+# endif
+#endif
+ } ieee_nan;
+ };
+
+#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
+
+
+union ieee854_long_double
+ {
+ long double d;
+
+ /* This is the IEEE 854 double-extended-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:15;
+ unsigned int empty:16;
+ unsigned int mantissa0:32;
+ unsigned int mantissa1:32;
+#endif
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+ unsigned int exponent:15;
+ unsigned int negative:1;
+ unsigned int empty:16;
+ unsigned int mantissa0:32;
+ unsigned int mantissa1:32;
+# else
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:32;
+ unsigned int exponent:15;
+ unsigned int negative:1;
+ unsigned int empty:16;
+# endif
+#endif
+ } ieee;
+
+ /* This is for NaNs in the IEEE 854 double-extended-precision format. */
+ struct
+ {
+#if __BYTE_ORDER == __BIG_ENDIAN
+ unsigned int negative:1;
+ unsigned int exponent:15;
+ unsigned int empty:16;
+ unsigned int one:1;
+ unsigned int quiet_nan:1;
+ unsigned int mantissa0:30;
+ unsigned int mantissa1:32;
+#endif
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
+ unsigned int exponent:15;
+ unsigned int negative:1;
+ unsigned int empty:16;
+ unsigned int mantissa0:30;
+ unsigned int quiet_nan:1;
+ unsigned int one:1;
+ unsigned int mantissa1:32;
+# else
+ unsigned int mantissa1:32;
+ unsigned int mantissa0:30;
+ unsigned int quiet_nan:1;
+ unsigned int one:1;
+ unsigned int exponent:15;
+ unsigned int negative:1;
+ unsigned int empty:16;
+# endif
+#endif
+ } ieee_nan;
+ };
+
+#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
+
+__END_DECLS
+
+#endif /* ieee754.h */
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index a6e3be3..494c77c 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -101,6 +101,7 @@ AC_DEFUN
# Code from module gettimeofday:
# Code from module gitlog-to-changelog:
# Code from module group-member:
+ # Code from module ieee754-h:
# Code from module ignore-value:
# Code from module include_next:
# Code from module intprops:
@@ -295,6 +296,7 @@ AC_DEFUN
gl_PREREQ_GETTIMEOFDAY
fi
gl_SYS_TIME_MODULE_INDICATOR([gettimeofday])
+ gl_IEEE754_H
gl_INTTYPES_INCOMPLETE
AC_REQUIRE([gl_LARGEFILE])
gl_LIMITS_H
@@ -895,6 +897,7 @@ AC_DEFUN
lib/gettimeofday.c
lib/gl_openssl.h
lib/group-member.c
+ lib/ieee754.in.h
lib/ignore-value.h
lib/intprops.h
lib/inttypes.in.h
@@ -1017,6 +1020,7 @@ AC_DEFUN
m4/gl-openssl.m4
m4/gnulib-common.m4
m4/group-member.m4
+ m4/ieee754-h.m4
m4/include_next.m4
m4/inttypes.m4
m4/largefile.m4
diff --git a/m4/ieee754-h.m4 b/m4/ieee754-h.m4
new file mode 100644
index 0000000..bf7c332
--- /dev/null
+++ b/m4/ieee754-h.m4
@@ -0,0 +1,21 @@
+# Configure ieee754-h module
+
+dnl Copyright 2018 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_IEEE754_H],
+[
+ AC_REQUIRE([AC_C_BIGENDIAN])
+ AC_CHECK_HEADERS_ONCE([ieee754.h])
+ if test $ac_cv_header_ieee754_h = yes; then
+ IEEE754_H=
+ else
+ IEEE754_H=ieee754.h
+ AC_DEFINE([_GL_REPLACE_IEEE754_H], 1,
+ [Define to 1 if <ieee754.h> is missing.])
+ fi
+ AC_SUBST([IEEE754_H])
+ AM_CONDITIONAL([GL_GENERATE_IEEE754_H], [test -n "$IEEE754_H"])
+])
diff --git a/src/lisp.h b/src/lisp.h
index 96de60e..bdece81 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2670,17 +2670,14 @@ XFLOAT_DATA (Lisp_Object f)
/* Most hosts nowadays use IEEE floating point, so they use IEC 60559
representations, have infinities and NaNs, and do not trap on
- exceptions. Define IEEE_FLOATING_POINT if this host is one of the
+ exceptions. Define IEEE_FLOATING_POINT to 1 if this host is one of the
typical ones. The C11 macro __STDC_IEC_559__ is close to what is
wanted here, but is not quite right because Emacs does not require
all the features of C11 Annex F (and does not require C11 at all,
for that matter). */
-enum
- {
- IEEE_FLOATING_POINT
- = (FLT_RADIX == 2 && FLT_MANT_DIG == 24
- && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128)
- };
+
+#define IEEE_FLOATING_POINT (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \
+ && FLT_MIN_EXP == -125 && FLT_MAX_EXP == 128)
/* A character, declared with the following typedef, is a member
of some character set associated with the current buffer. */
diff --git a/src/lread.c b/src/lread.c
index 290b0f6..9a025d8 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -72,7 +72,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#define file_tell ftell
#endif
-#if HAVE_IEEE754_H
+#if IEEE_FLOATING_POINT
# include <ieee754.h>
#endif
@@ -3756,21 +3756,18 @@ string_to_number (char const *string, int base, int flags)
cp += 3;
value = INFINITY;
}
+#if IEEE_FLOATING_POINT
else if (cp[-1] == '+'
&& cp[0] == 'N' && cp[1] == 'a' && cp[2] == 'N')
{
state |= E_EXP;
cp += 3;
-#if HAVE_IEEE754_H
union ieee754_double u
= { .ieee_nan = { .exponent = -1, .quiet_nan = 1,
.mantissa0 = n >> 31 >> 1, .mantissa1 = n }};
value = u.d;
-#else
- /* NAN is a "positive" NaN on all known Emacs hosts. */
- value = NAN;
-#endif
}
+#endif
else
cp = ecp;
}
diff --git a/src/print.c b/src/print.c
index add2160..34c7fa1 100644
--- a/src/print.c
+++ b/src/print.c
@@ -40,7 +40,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <ftoastr.h>
#include <math.h>
-#if HAVE_IEEE754_H
+#if IEEE_FLOATING_POINT
# include <ieee754.h>
#endif
@@ -1013,34 +1013,15 @@ float_to_string (char *buf, double data)
strcpy (buf, minus_infinity_string + positive);
return sizeof minus_infinity_string - 1 - positive;
}
+#if IEEE_FLOATING_POINT
if (isnan (data))
{
-#if HAVE_IEEE754_H
union ieee754_double u = { .d = data };
uprintmax_t hi = u.ieee_nan.mantissa0;
return sprintf (buf, &"-%"pMu".0e+NaN"[!u.ieee_nan.negative],
(hi << 31 << 1) + u.ieee_nan.mantissa1);
-#else
- /* Prepend "-" if the NaN's sign bit is negative.
- The sign bit of a double is the bit that is 1 in -0.0. */
- static char const NaN_string[] = "0.0e+NaN";
- int i;
- union { double d; char c[sizeof (double)]; } u_data, u_minus_zero;
- bool negative = 0;
- u_data.d = data;
- u_minus_zero.d = - 0.0;
- for (i = 0; i < sizeof (double); i++)
- if (u_data.c[i] & u_minus_zero.c[i])
- {
- *buf = '-';
- negative = 1;
- break;
- }
-
- strcpy (buf + negative, NaN_string);
- return negative + sizeof NaN_string - 1;
-#endif
}
+#endif
if (NILP (Vfloat_output_format)
|| !STRINGP (Vfloat_output_format))
--
2.7.4
next prev parent reply other threads:[~2018-08-02 2:06 UTC|newest]
Thread overview: 281+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-21 14:15 Using the GNU GMP Library for Bignums in Emacs Siraphob (Ben) Phipathananunth
2018-04-21 14:34 ` Eli Zaretskii
2018-04-21 15:01 ` Siraphob (Ben) Phipathananunth
2018-04-21 15:23 ` Paul Eggert
2018-04-21 15:36 ` Eli Zaretskii
2018-04-21 15:40 ` Siraphob (Ben) Phipathananunth
2018-04-21 15:54 ` Eli Zaretskii
2018-04-21 16:08 ` Paul Eggert
2018-04-26 3:17 ` Tom Tromey
2018-04-26 3:33 ` Stefan Monnier
2018-04-27 15:56 ` Richard Stallman
2018-04-27 16:08 ` Stefan Monnier
2018-04-21 22:42 ` Richard Stallman
2018-04-22 2:48 ` dancol
2018-04-22 13:00 ` Philipp Stephani
2018-04-22 17:43 ` Paul Eggert
2018-04-22 18:04 ` Daniel Colascione
2018-04-22 18:34 ` Clément Pit-Claudel
2018-04-23 3:39 ` Richard Stallman
2018-04-22 8:00 ` Siraphob (Ben) Phipathananunth
2018-04-22 9:06 ` Paul Eggert
2018-04-23 5:19 ` Helmut Eller
2018-04-23 8:39 ` Andreas Schwab
2018-04-23 14:36 ` Paul Eggert
2018-04-23 19:22 ` Helmut Eller
2018-04-23 20:26 ` Paul Eggert
2018-04-23 3:36 ` Richard Stallman
2018-04-22 12:43 ` Helmut Eller
2018-04-22 17:47 ` Paul Eggert
2018-04-23 3:39 ` Richard Stallman
2018-04-23 4:41 ` Paul Eggert
2018-04-24 2:54 ` Richard Stallman
2018-04-24 2:54 ` Richard Stallman
2018-04-24 4:35 ` Paul Eggert
2018-04-24 5:45 ` Helmut Eller
2018-06-03 23:44 ` Jefferson Carpenter
2018-04-25 1:05 ` Richard Stallman
2018-04-25 1:19 ` Paul Eggert
2018-04-25 22:40 ` Richard Stallman
2018-04-25 23:29 ` Paul Eggert
2018-04-30 3:07 ` Richard Stallman
2018-04-30 5:00 ` Michael Welsh Duggan
2018-04-30 12:34 ` Stefan Monnier
2018-05-01 3:01 ` Richard Stallman
2018-04-30 7:04 ` Paul Eggert
2018-05-01 3:01 ` Richard Stallman
2018-05-01 21:45 ` Paul Eggert
2018-05-03 3:34 ` Richard Stallman
2018-05-03 5:53 ` Paul Eggert
2018-05-03 6:26 ` Helmut Eller
2018-05-03 17:49 ` Eli Zaretskii
2018-05-03 18:26 ` Paul Eggert
2018-05-04 4:26 ` Richard Stallman
2018-05-05 5:03 ` Ken Raeburn
2018-05-06 3:12 ` Richard Stallman
2018-05-07 17:24 ` Ken Raeburn
2018-05-08 1:55 ` Richard Stallman
2018-05-07 18:40 ` Andreas Schwab
2018-05-03 18:51 ` Helmut Eller
[not found] ` <83sh78o6af.fsf@gnu.org>
2018-05-03 20:30 ` Helmut Eller
2018-05-03 21:48 ` Paul Eggert
2018-05-04 4:22 ` Richard Stallman
2018-04-23 3:03 ` Stefan Monnier
2018-07-05 21:29 ` Tom Tromey
2018-07-05 21:53 ` John Wiegley
2018-07-06 20:43 ` Tom Tromey
2018-07-06 21:00 ` Paul Eggert
2018-07-07 4:27 ` Tom Tromey
2018-07-07 4:53 ` Paul Eggert
2018-07-07 6:20 ` Tom Tromey
2018-07-07 6:38 ` Paul Eggert
2018-07-09 5:37 ` Tom Tromey
2018-07-09 16:22 ` Paul Eggert
2018-07-09 22:56 ` Tom Tromey
2018-07-09 23:02 ` Paul Eggert
2018-07-09 23:13 ` Tom Tromey
2018-07-10 4:01 ` Tom Tromey
2018-07-10 13:46 ` Tom Tromey
2018-07-08 15:59 ` Tom Tromey
2018-07-09 5:43 ` Tom Tromey
2018-07-10 4:10 ` Stefan Monnier
2018-07-07 23:43 ` Richard Stallman
2018-07-08 4:58 ` Paul Eggert
2018-07-08 22:55 ` Richard Stallman
2018-07-08 5:01 ` Tom Tromey
2018-07-08 22:55 ` Richard Stallman
2018-07-09 5:39 ` Tom Tromey
2018-07-09 20:15 ` Stefan Monnier
2018-07-09 23:25 ` Paul Eggert
2018-07-10 3:41 ` Stefan Monnier
2018-07-10 5:32 ` Helmut Eller
2018-07-10 13:54 ` Stefan Monnier
2018-07-10 16:01 ` Paul Eggert
2018-07-10 16:48 ` Helmut Eller
2018-07-10 17:45 ` Paul Eggert
2018-07-10 19:14 ` Helmut Eller
2018-07-11 1:31 ` Stefan Monnier
2018-07-11 5:59 ` Helmut Eller
2018-07-11 14:23 ` Stefan Monnier
2018-07-11 2:04 ` Tom Tromey
2018-07-11 2:36 ` Paul Eggert
2018-07-10 20:33 ` Stefan Monnier
2018-07-11 1:52 ` Tom Tromey
2018-07-11 2:35 ` Paul Eggert
2018-07-11 3:16 ` Stefan Monnier
2018-07-11 3:30 ` Paul Eggert
2018-07-11 3:42 ` Stefan Monnier
2018-07-11 22:48 ` Richard Stallman
2018-07-12 4:51 ` Tom Tromey
2018-07-12 23:35 ` Richard Stallman
2018-07-15 15:02 ` Stefan Monnier
2018-07-18 10:20 ` Paul Eggert
2018-07-18 13:17 ` Stefan Monnier
2018-07-27 21:14 ` Making 'eq' == 'eql' in bignum branch Paul Eggert
2018-07-28 14:26 ` Stefan Monnier
2018-07-29 3:34 ` Paul Eggert
2018-07-29 4:09 ` Stefan Monnier
2018-07-29 14:35 ` Eli Zaretskii
2018-07-30 17:07 ` Stefan Monnier
2018-07-30 18:49 ` Eli Zaretskii
2018-07-30 20:10 ` Stefan Monnier
2018-07-30 21:58 ` Paul Eggert
2018-07-31 2:38 ` Eli Zaretskii
2018-07-31 7:10 ` Paul Eggert
2018-07-31 16:12 ` Eli Zaretskii
2018-07-31 22:44 ` Paul Eggert
2018-08-01 5:51 ` Eli Zaretskii
2018-08-01 6:43 ` Paul Eggert
2018-08-01 8:53 ` Eli Zaretskii
2018-08-03 7:40 ` Paul Eggert
2018-08-03 7:55 ` Eli Zaretskii
2018-08-10 11:12 ` Pip Cet
2018-08-10 15:15 ` Stefan Monnier
2018-08-10 15:43 ` Pip Cet
2018-08-10 15:55 ` Stefan Monnier
2018-08-10 16:52 ` John Yates
2018-08-10 19:45 ` Eli Zaretskii
2018-08-10 20:48 ` Paul Eggert
2018-08-10 7:05 ` Elias Mårtenson
2018-08-10 8:02 ` Paul Eggert
[not found] ` <<83d0v4p1si.fsf@gnu.org>
2018-07-31 15:08 ` Drew Adams
2018-07-31 16:24 ` Eli Zaretskii
2018-07-31 22:21 ` Paul Eggert
2018-08-20 0:04 ` Stefan Monnier
2018-08-20 1:33 ` Paul Eggert
2018-08-20 15:20 ` Stefan Monnier
2018-08-20 6:35 ` Pip Cet
2018-08-20 7:05 ` Paul Eggert
2018-08-20 7:19 ` Pip Cet
2018-08-20 7:27 ` Paul Eggert
2018-08-20 8:49 ` Andy Moreton
2018-08-20 16:03 ` Paul Eggert
2018-08-20 16:41 ` Andy Moreton
2018-08-20 16:51 ` Paul Eggert
2018-08-20 16:58 ` Andy Moreton
2018-08-20 19:50 ` Pip Cet
2018-08-20 21:54 ` Andy Moreton
2018-08-21 3:38 ` Richard Stallman
2018-08-20 17:23 ` Eli Zaretskii
2018-08-20 17:35 ` Paul Eggert
2018-08-20 15:13 ` Eli Zaretskii
2018-08-20 15:26 ` Stefan Monnier
2018-08-20 16:19 ` Eli Zaretskii
2018-08-21 15:01 ` Robert Pluim
2018-08-21 19:09 ` Robert Pluim
2018-08-21 19:35 ` Paul Eggert
2018-08-22 8:26 ` Lars Ingebrigtsen
2018-08-22 13:22 ` Herring, Davis
2018-08-22 13:28 ` Lars Ingebrigtsen
2018-08-22 13:55 ` Paul Eggert
2018-08-22 20:01 ` Stefan Monnier
2018-08-23 8:13 ` Robert Pluim
2018-08-23 13:45 ` Eli Zaretskii
2018-08-23 14:48 ` Robert Pluim
2018-08-23 18:43 ` Stefan Monnier
2018-08-24 9:51 ` Robert Pluim
2018-08-25 17:59 ` Stefan Monnier
2018-08-20 16:01 ` Paul Eggert
2018-08-20 16:26 ` Eli Zaretskii
2018-08-21 3:37 ` Richard Stallman
2018-08-20 15:12 ` Eli Zaretskii
2018-08-20 15:26 ` Lars Ingebrigtsen
2018-08-20 16:18 ` Eli Zaretskii
2018-08-22 19:59 ` Stefan Monnier
2018-08-21 3:38 ` Richard Stallman
2018-08-25 23:27 ` Paul Eggert
2018-08-26 12:45 ` Tramp and fixnum (was: Making 'eq' == 'eql' in bignum branch) Michael Albinus
2018-08-26 15:34 ` Paul Eggert
2018-08-26 16:06 ` Eli Zaretskii
2018-08-26 16:44 ` Tramp and fixnum Michael Albinus
2018-08-28 4:47 ` Tramp and fixnum (was: Making 'eq' == 'eql' in bignum branch) Paul Eggert
2018-08-26 16:49 ` Tramp and fixnum Michael Albinus
2018-08-28 4:48 ` Paul Eggert
2018-08-28 11:50 ` Michael Albinus
2018-08-28 14:33 ` Michael Albinus
2018-08-28 15:18 ` Paul Eggert
2018-08-29 8:09 ` Michael Albinus
2018-08-26 16:34 ` Making 'eq' == 'eql' in bignum branch Tom Tromey
2018-08-26 16:59 ` Stefan Monnier
2018-08-26 20:19 ` Alan Mackenzie
2018-08-26 20:31 ` Stefan Monnier
2018-08-27 2:31 ` Eli Zaretskii
2018-08-27 4:45 ` Stefan Monnier
2018-08-27 5:10 ` Paul Eggert
2018-08-27 14:59 ` Eli Zaretskii
2018-08-27 15:18 ` Stefan Monnier
2018-08-27 15:37 ` Eli Zaretskii
2018-08-27 15:47 ` Stefan Monnier
2018-08-27 18:57 ` Paul Eggert
2018-08-26 20:45 ` Richard Stallman
2018-08-26 22:10 ` Clément Pit-Claudel
2018-08-27 0:23 ` Paul Eggert
2018-08-27 22:50 ` Richard Stallman
2018-08-28 1:44 ` Paul Eggert
2018-08-28 14:12 ` Tom Tromey
2018-08-28 21:30 ` Richard Stallman
2018-08-28 22:03 ` Clément Pit-Claudel
2018-08-29 22:10 ` Richard Stallman
2018-08-28 18:03 ` Clément Pit-Claudel
2018-08-29 3:53 ` Stefan Monnier
2018-08-29 18:49 ` Clément Pit-Claudel
2018-08-28 1:33 ` Lars Ingebrigtsen
2018-08-28 2:25 ` Pip Cet
2018-08-28 3:45 ` Paul Eggert
2018-08-28 7:34 ` Ken Raeburn
2018-08-28 9:11 ` Helmut Eller
2018-08-28 12:15 ` Stefan Monnier
2018-08-28 18:00 ` Clément Pit-Claudel
2018-08-28 22:57 ` Pip Cet
2018-08-29 3:42 ` Herring, Davis
2018-08-29 5:40 ` Helmut Eller
2018-08-29 13:15 ` Pip Cet
2018-08-31 19:59 ` Alan Mackenzie
2018-08-31 20:30 ` Clément Pit-Claudel
2018-08-31 21:58 ` Alan Mackenzie
2018-09-01 1:26 ` Herring, Davis
2018-08-31 21:15 ` Stefan Monnier
2018-09-01 1:05 ` Herring, Davis
2018-09-02 10:57 ` Alan Mackenzie
2018-09-04 6:14 ` Herring, Davis
2018-09-01 4:47 ` Clément Pit-Claudel
2018-08-29 3:22 ` Elias Mårtenson
2018-08-29 18:56 ` Clément Pit-Claudel
2018-08-29 19:30 ` Stefan Monnier
2018-08-31 0:09 ` Stefan Monnier
2018-09-01 2:32 ` Richard Stallman
2018-08-31 16:41 ` Paul Eggert
2018-08-28 21:25 ` Richard Stallman
2018-08-30 19:13 ` Johan Bockgård
2018-08-30 21:14 ` Clément Pit-Claudel
2018-08-30 21:35 ` Tom Tromey
2018-08-30 21:56 ` Clément Pit-Claudel
2018-08-20 15:37 ` Stefan Monnier
2018-08-20 16:23 ` Eli Zaretskii
2018-08-20 16:12 ` Paul Eggert
2018-08-20 17:21 ` Helmut Eller
2018-08-20 14:02 ` Stefan Monnier
2018-07-18 15:55 ` Using the GNU GMP Library for Bignums in Emacs Eli Zaretskii
2018-07-18 21:42 ` Paul Eggert
2018-07-22 12:06 ` Ken Raeburn
2018-07-22 16:44 ` Paul Eggert
2018-08-01 7:57 ` Paul Eggert
2018-08-01 11:59 ` Eli Zaretskii
2018-08-02 2:06 ` Paul Eggert [this message]
2018-08-02 13:49 ` Eli Zaretskii
2018-07-22 19:57 ` Achim Gratz
2018-04-21 16:46 ` Markus Triska
2018-04-21 17:09 ` Eli Zaretskii
2018-04-21 17:27 ` Markus Triska
2018-04-21 18:37 ` Paul Eggert
2018-04-21 22:42 ` Richard Stallman
2018-04-22 2:43 ` Eli Zaretskii
2018-04-23 3:34 ` Richard Stallman
2018-04-23 4:21 ` Paul Eggert
2018-04-23 13:13 ` Stefan Monnier
2018-04-24 2:54 ` Richard Stallman
2018-04-24 4:34 ` Paul Eggert
2018-04-25 1:05 ` Richard Stallman
2018-04-23 15:18 ` Eli Zaretskii
2018-04-24 18:56 ` Emanuele Santoro
2018-04-26 15:52 ` Glenn Morris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=287f0b32-00c0-5941-67ac-60971232cb6d@cs.ucla.edu \
--to=eggert@cs.ucla.edu \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=monnier@IRO.UMontreal.CA \
--cc=raeburn@raeburn.org \
--cc=rms@gnu.org \
--cc=tom@tromey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).