aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorGlenn Morris2020-02-20 07:50:30 -0800
committerGlenn Morris2020-02-20 07:50:30 -0800
commit398afbaf6f31d89b5cb813b75a28b98cf7b1acd2 (patch)
tree587f23019db4d4b1a5b138c741dd2895483cbca8 /doc
parent770f76f050376bbd77a3cc8cf44db57cf855a27c (diff)
parent9f0852474810311fd2b26fa3756ab6d816016389 (diff)
downloademacs-398afbaf6f31d89b5cb813b75a28b98cf7b1acd2.tar.gz
emacs-398afbaf6f31d89b5cb813b75a28b98cf7b1acd2.zip
Merge from origin/emacs-27
9f08524748 (origin/emacs-27) Fix broken regexps 1d10885763 ; spelling and comment fix 614203bc80 ; make change-history-commit 28399e585e * Makefile.in (PREFERRED_BRANCH): Now emacs-27. 62afbc513a Fix bug when visiting euc-jp-encoded directories a2c4eeeecd Clarify when fixnums are used. 4e5ac4b0c6 Reorder discussion of integer basics f765aad28b Make OMake support slightly less expensive (bug#39595) 39410cfc5a Speed up 'msft' and 'watcom' compilation error regexps 96a269d045 Speed up 'maven' compilation error message regexp efc9d4fe3e Amend c-backward-sws better to handle multiline block comm...
Diffstat (limited to 'doc')
-rw-r--r--doc/lispref/numbers.texi77
1 files changed, 40 insertions, 37 deletions
diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi
index c8941eab736..4002b36ce50 100644
--- a/doc/lispref/numbers.texi
+++ b/doc/lispref/numbers.texi
@@ -34,39 +34,6 @@ numbers have a fixed amount of precision.
34@node Integer Basics 34@node Integer Basics
35@section Integer Basics 35@section Integer Basics
36 36
37 Integers in Emacs Lisp are not limited to the machine word size.
38
39 Under the hood, though, there are two kinds of integers: smaller
40ones, called @dfn{fixnums}, and larger ones, called @dfn{bignums}.
41Some functions in Emacs accept only fixnums. Also, while fixnums can
42be compared for numeric equality with @code{eq}, bignums require
43more-heavyweight equality predicates like @code{eql} and @code{=}.
44
45 The range of values for bignums is limited by the amount of main
46memory, by machine characteristics such as the size of the word used
47to represent a bignum's exponent, and by the @code{integer-width}
48variable. These limits are typically much more generous than the
49limits for fixnums. A bignum is never numerically equal to a fixnum;
50if Emacs computes an integer in fixnum range, it represents the
51integer as a fixnum, not a bignum.
52
53 The range of values for a fixnum depends on the machine. The
54minimum range is @minus{}536,870,912 to 536,870,911 (30 bits; i.e.,
55@ifnottex
56@minus{}2**29
57@end ifnottex
58@tex
59@math{-2^{29}}
60@end tex
61to
62@ifnottex
632**29 @minus{} 1),
64@end ifnottex
65@tex
66@math{2^{29}-1}),
67@end tex
68but many machines provide a wider range.
69
70 The Lisp reader reads an integer as a nonempty sequence 37 The Lisp reader reads an integer as a nonempty sequence
71of decimal digits with optional initial sign and optional 38of decimal digits with optional initial sign and optional
72final period. 39final period.
@@ -145,6 +112,46 @@ arguments to such functions may be either numbers or markers, we often
145give these arguments the name @var{number-or-marker}. When the argument 112give these arguments the name @var{number-or-marker}. When the argument
146value is a marker, its position value is used and its buffer is ignored. 113value is a marker, its position value is used and its buffer is ignored.
147 114
115 In Emacs Lisp, text characters are represented by integers. Any
116integer between zero and the value of @code{(max-char)}, inclusive, is
117considered to be valid as a character. @xref{Character Codes}.
118
119 Integers in Emacs Lisp are not limited to the machine word size.
120Under the hood, though, there are two kinds of integers: smaller ones,
121called @dfn{fixnums}, and larger ones, called @dfn{bignums}. Although
122Emacs Lisp code ordinarily should not depend on whether an integer is
123a fixnum or a bignum, older Emacs versions support only fixnums, some
124functions in Emacs still accept only fixnums, and older Emacs Lisp
125code may have trouble when given bignums. For example, while older
126Emacs Lisp code could safely compare integers for numeric equality
127with @code{eq}, the presence of bignums means that equality predicates
128like @code{eql} and @code{=} should now be used to compare integers.
129
130 The range of values for bignums is limited by the amount of main
131memory, by machine characteristics such as the size of the word used
132to represent a bignum's exponent, and by the @code{integer-width}
133variable. These limits are typically much more generous than the
134limits for fixnums. A bignum is never numerically equal to a fixnum;
135Emacs always represents an integer in fixnum range as a fixnum, not a
136bignum.
137
138 The range of values for a fixnum depends on the machine. The
139minimum range is @minus{}536,870,912 to 536,870,911 (30 bits; i.e.,
140@ifnottex
141@minus{}2**29
142@end ifnottex
143@tex
144@math{-2^{29}}
145@end tex
146to
147@ifnottex
1482**29 @minus{} 1),
149@end ifnottex
150@tex
151@math{2^{29}-1}),
152@end tex
153but many machines provide a wider range.
154
148@cindex largest fixnum 155@cindex largest fixnum
149@cindex maximum fixnum 156@cindex maximum fixnum
150@defvar most-positive-fixnum 157@defvar most-positive-fixnum
@@ -207,10 +214,6 @@ Setting this variable to a large number can be costly if a computation
207creates huge integers. 214creates huge integers.
208@end defvar 215@end defvar
209 216
210 In Emacs Lisp, text characters are represented by integers. Any
211integer between zero and the value of @code{(max-char)}, inclusive, is
212considered to be valid as a character. @xref{Character Codes}.
213
214@node Float Basics 217@node Float Basics
215@section Floating-Point Basics 218@section Floating-Point Basics
216 219