annotate lisp/float-sup.el @ 5569:d19b6e3bdf91

#'cl-defsubst-expand; avoid mutually-recursive symbol macros. lisp/ChangeLog addition: 2011-09-10 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (cl-defsubst-expand): Change set 2a6a8da4dd7c of http://mid.gmane.org/19966.17522.332164.615228@parhasard.net wasn't sufficiently comprehensive, symbol macros can be mutually rather than simply recursive, and they can equally hang. Thanks for the bug report, Michael Sperber, and for the test case, Stephen Turnbull.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 10 Sep 2011 13:17:29 +0100
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
1 ;;; float-sup.el --- detect absence of floating-point support in XEmacs runtime
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
2
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
3 ;; Copyright (C) 1985-7, 1997 Free Software Foundation, Inc.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
4
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
5 ;; Maintainer: FSF
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
6 ;; Keywords: internal, dumped
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
7
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
8 ;; This file is part of XEmacs.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
9
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
10 ;; XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
11 ;; under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
12 ;; Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
13 ;; option) any later version.
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
14
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
15 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
16 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
17 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
18 ;; for more details.
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
19
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 444
diff changeset
21 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
22
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
23 ;;; Synched up with: FSF 19.34.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
24
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
25 ;;; Code:
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
26
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
27 ;; This file is dumped with XEmacs.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
28
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
29 ;; Provide a meaningful error message if we are running on
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
30 ;; bare (non-float) emacs.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
31 ;; Can't test for 'floatp since that may be defined by float-imitation
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
32 ;; packages like float.el in this very directory.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
33
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
34 ;; XEmacs change
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
35 (or (featurep 'lisp-float-type)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
36 (error "Floating point was disabled at compile time"))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
37
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
38 ;; define pi and e via math-lib calls. (much less prone to killer typos.)
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 209
diff changeset
39 (defconst pi (* 4 (atan 1)) "The value of Pi (3.1415926...)")
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 209
diff changeset
40 (defconst e (exp 1) "The value of e (2.7182818...)")
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
41
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
42 ;; Careful when editing this file ... typos here will be hard to spot.
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
43 ;; (defconst pi 3.14159265358979323846264338327
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
44 ;; "The value of Pi (3.14159265358979323846264338327...)")
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
45
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 209
diff changeset
46 (defconst degrees-to-radians (/ pi 180.0)
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
47 "Degrees to radian conversion constant")
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 209
diff changeset
48 (defconst radians-to-degrees (/ 180.0 pi)
209
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
49 "Radian to degree conversion constant")
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
50
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
51 ;; these expand to a single multiply by a float when byte compiled
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
52
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
53 (defmacro degrees-to-radians (x)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
54 "Convert ARG from degrees to radians."
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
55 (list '* (/ pi 180.0) x))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
56 (defmacro radians-to-degrees (x)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
57 "Convert ARG from radians to degrees."
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
58 (list '* (/ 180.0 pi) x))
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
59
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
60 ;; Provided in C code in XEmacs
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
61 ;; (provide 'lisp-float-type)
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
62
41ff10fd062f Import from CVS: tag r20-4b3
cvs
parents:
diff changeset
63 ;;; float-sup.el ends here