Mercurial > hg > xemacs-beta
annotate src/number.h @ 5278:d9e65b48e2bf
Correct the NEW_GC non-DEBUG_XEMACS version of PARSE_KEYWORDS().
2010-09-18 Aidan Kehoe <kehoea@parhasard.net>
* lisp.h (PARSE_KEYWORDS):
Correct the NEW_GC non-DEBUG_XEMACS version of this macro; under
such builds S##function is a pointer, not a Lisp_Subr structure.
| author | Aidan Kehoe <kehoea@parhasard.net> |
|---|---|
| date | Sat, 18 Sep 2010 16:46:56 +0100 |
| parents | 53b88477345d |
| children | 7e535575bf6d 2aa9cd456ae7 |
| rev | line source |
|---|---|
| 1983 | 1 /* Definitions of numeric types for XEmacs. |
| 2 Copyright (C) 2004 Jerry James. | |
| 3 | |
| 4 This file is part of XEmacs. | |
| 5 | |
| 6 XEmacs is free software; you can redistribute it and/or modify it | |
| 7 under the terms of the GNU General Public License as published by the | |
| 8 Free Software Foundation; either version 2, or (at your option) any | |
| 9 later version. | |
| 10 | |
| 11 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
| 12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 14 for more details. | |
| 15 | |
| 16 You should have received a copy of the GNU General Public License | |
| 17 along with XEmacs; see the file COPYING. If not, write to | |
|
4802
2fc0e2f18322
Don't create any bignums before pdumping. Add bignum, ratio, and bigfloat
Jerry James <james@xemacs.org>
parents:
4678
diff
changeset
|
18 the Free Software Foundation, Inc., 51 Franklin St - Fifth Floor, |
|
5234
53b88477345d
Fix up FSF's Franklin Street address in number.h.
Stephen J. Turnbull <stephen@xemacs.org>
parents:
5125
diff
changeset
|
19 Boston, MA 02110-1301, USA. */ |
| 1983 | 20 |
| 21 /* Synched up with: Not in FSF. */ | |
| 22 | |
| 23 #ifndef INCLUDED_number_h_ | |
| 24 #define INCLUDED_number_h_ | |
| 25 | |
| 26 /* The following types are always defined in the same manner: | |
| 27 fixnum = whatever fits in the Lisp_Object type | |
| 28 integer = union (fixnum, bignum) | |
| 29 rational = union (integer, ratio) | |
| 30 float = C double | |
| 31 floating = union(float, bigfloat) Anybody got a better name? | |
| 32 real = union (rational, floating) | |
| 33 number = real (should be union(real, complex) but no complex yet) | |
| 34 | |
| 35 It is up to the library-specific code to define the remaining types, | |
| 36 namely: bignum, ratio, and bigfloat. Not all of these types may be | |
| 37 available. The top-level configure script should define the symbols | |
| 38 HAVE_BIGNUM, HAVE_RATIO, and HAVE_BIGFLOAT to indicate which it provides. | |
| 39 If some type is not defined by the library, this is what happens: | |
| 40 | |
| 41 - bignum: bignump(x) is false for all x; any attempt to create a bignum | |
| 42 causes an error to be raised. | |
| 43 | |
| 44 - ratio: we define our own structure consisting of two Lisp_Objects, which | |
| 45 are presumed to be integers (i.e., either fixnums or bignums). We do our | |
| 46 own GCD calculation, which is bound to be slow, to keep the ratios | |
| 47 reduced to canonical form. (FIXME: Not yet implemented.) | |
| 48 | |
| 49 - bigfloat: bigfloat(x) is false for all x; any attempt to create a | |
| 50 bigfloat causes an error to be raised. | |
| 51 | |
| 52 We (provide) the following symbols, so that Lisp code has some hope of | |
| 53 using this correctly: | |
| 54 | |
| 55 - (provide 'bignum) if HAVE_BIGNUM | |
| 56 - (provde 'ratio) if HAVE_RATIO | |
| 57 - (provide 'bigfloat) if HAVE_BIGFLOAT | |
| 58 */ | |
| 59 | |
| 60 /* Load the library definitions */ | |
| 61 #ifdef WITH_GMP | |
| 62 #include "number-gmp.h" | |
| 63 #endif | |
| 64 #ifdef WITH_MP | |
| 65 #include "number-mp.h" | |
| 66 #endif | |
| 67 | |
| 68 | |
| 69 /********************************* Bignums **********************************/ | |
| 70 #ifdef HAVE_BIGNUM | |
| 71 | |
| 72 struct Lisp_Bignum | |
| 73 { | |
|
5120
d1247f3cc363
latest work on lisp-object workspace;
Ben Wing <ben@xemacs.org>
parents:
5118
diff
changeset
|
74 FROB_BLOCK_LISP_OBJECT_HEADER lheader; |
| 1983 | 75 bignum data; |
| 76 }; | |
| 77 typedef struct Lisp_Bignum Lisp_Bignum; | |
| 78 | |
|
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4678
diff
changeset
|
79 DECLARE_LISP_OBJECT (bignum, Lisp_Bignum); |
| 1983 | 80 #define XBIGNUM(x) XRECORD (x, bignum, Lisp_Bignum) |
| 81 #define wrap_bignum(p) wrap_record (p, bignum) | |
| 82 #define BIGNUMP(x) RECORDP (x, bignum) | |
| 83 #define CHECK_BIGNUM(x) CHECK_RECORD (x, bignum) | |
| 84 #define CONCHECK_BIGNUM(x) CONCHECK_RECORD (x, bignum) | |
| 85 | |
| 86 #define bignum_data(b) (b)->data | |
| 87 #define XBIGNUM_DATA(x) bignum_data (XBIGNUM (x)) | |
| 88 | |
| 89 #define BIGNUM_ARITH_RETURN(b,op) do \ | |
| 90 { \ | |
| 91 Lisp_Object retval = make_bignum (0); \ | |
| 92 bignum_##op (XBIGNUM_DATA (retval), XBIGNUM_DATA (b)); \ | |
| 93 return Fcanonicalize_number (retval); \ | |
| 94 } while (0) | |
| 95 | |
| 96 #define BIGNUM_ARITH_RETURN1(b,op,arg) do \ | |
| 97 { \ | |
| 98 Lisp_Object retval = make_bignum(0); \ | |
| 99 bignum_##op (XBIGNUM_DATA (retval), XBIGNUM_DATA (b), arg); \ | |
| 100 return Fcanonicalize_number (retval); \ | |
| 101 } while (0) | |
| 102 | |
| 3391 | 103 #if SIZEOF_EMACS_INT == SIZEOF_LONG |
| 104 # define bignum_fits_emacs_int_p(b) bignum_fits_long_p(b) | |
| 105 # define bignum_to_emacs_int(b) bignum_to_long(b) | |
| 106 #elif SIZEOF_EMACS_INT == SIZEOF_INT | |
| 107 # define bignum_fits_emacs_int_p(b) bignum_fits_int_p(b) | |
| 108 # define bignum_to_emacs_int(b) bignum_to_int(b) | |
| 109 #else | |
| 110 # error Bignums currently do not work with long long Emacs integers. | |
| 111 #endif | |
| 112 | |
| 1983 | 113 extern Lisp_Object make_bignum (long); |
| 114 extern Lisp_Object make_bignum_bg (bignum); | |
| 115 extern bignum scratch_bignum, scratch_bignum2; | |
| 116 | |
| 117 #else /* !HAVE_BIGNUM */ | |
| 118 | |
| 119 #define BIGNUMP(x) 0 | |
| 120 #define CHECK_BIGNUM(x) dead_wrong_type_argument (Qbignump, x) | |
| 121 #define CONCHECK_BIGNUM(x) dead_wrong_type_argument (Qbignump, x) | |
| 122 typedef void bignum; | |
| 123 #define make_bignum(l) This XEmacs does not support bignums | |
| 124 #define make_bignum_bg(b) This XEmacs does not support bignums | |
| 125 | |
| 126 #endif /* HAVE_BIGNUM */ | |
| 127 | |
| 2092 | 128 extern Lisp_Object Qbignump; |
| 1983 | 129 EXFUN (Fbignump, 1); |
| 130 | |
| 131 | |
| 132 /********************************* Integers *********************************/ | |
| 4932 | 133 /* Qintegerp in lisp.h */ |
| 1983 | 134 #define INTEGERP(x) (INTP(x) || BIGNUMP(x)) |
| 135 #define CHECK_INTEGER(x) do { \ | |
| 136 if (!INTEGERP (x)) \ | |
| 137 dead_wrong_type_argument (Qintegerp, x); \ | |
| 138 } while (0) | |
| 139 #define CONCHECK_INTEGER(x) do { \ | |
| 140 if (!INTEGERP (x)) \ | |
| 141 x = wrong_type_argument (Qintegerp, x); \ | |
| 142 } while (0) | |
| 143 | |
| 144 #ifdef HAVE_BIGNUM | |
| 145 #define make_integer(x) \ | |
| 146 (NUMBER_FITS_IN_AN_EMACS_INT (x) ? make_int (x) : make_bignum (x)) | |
| 147 #else | |
| 148 #define make_integer(x) make_int (x) | |
| 149 #endif | |
| 150 | |
| 151 extern Fixnum Vmost_negative_fixnum, Vmost_positive_fixnum; | |
| 152 EXFUN (Fintegerp, 1); | |
| 153 EXFUN (Fevenp, 1); | |
| 154 EXFUN (Foddp, 1); | |
| 155 | |
| 156 | |
| 157 /********************************** Ratios **********************************/ | |
| 158 #ifdef HAVE_RATIO | |
| 159 | |
| 160 struct Lisp_Ratio | |
| 161 { | |
|
5120
d1247f3cc363
latest work on lisp-object workspace;
Ben Wing <ben@xemacs.org>
parents:
5118
diff
changeset
|
162 FROB_BLOCK_LISP_OBJECT_HEADER lheader; |
| 1983 | 163 ratio data; |
| 164 }; | |
| 165 typedef struct Lisp_Ratio Lisp_Ratio; | |
| 166 | |
|
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4678
diff
changeset
|
167 DECLARE_LISP_OBJECT (ratio, Lisp_Ratio); |
| 1983 | 168 #define XRATIO(x) XRECORD (x, ratio, Lisp_Ratio) |
| 169 #define wrap_ratio(p) wrap_record (p, ratio) | |
| 170 #define RATIOP(x) RECORDP (x, ratio) | |
| 171 #define CHECK_RATIO(x) CHECK_RECORD (x, ratio) | |
| 172 #define CONCHECK_RATIO(x) CONCHECK_RECORD (x, ratio) | |
| 173 | |
| 174 #define ratio_data(r) (r)->data | |
| 175 | |
| 176 #define XRATIO_DATA(r) ratio_data (XRATIO (r)) | |
| 177 #define XRATIO_NUMERATOR(r) ratio_numerator (XRATIO_DATA (r)) | |
| 178 #define XRATIO_DENOMINATOR(r) ratio_denominator (XRATIO_DATA (r)) | |
| 179 | |
| 180 #define RATIO_ARITH_RETURN(r,op) do \ | |
| 181 { \ | |
| 182 Lisp_Object retval = make_ratio (0L, 1UL); \ | |
| 183 ratio_##op (XRATIO_DATA (retval), XRATIO_DATA (r)); \ | |
| 184 return Fcanonicalize_number (retval); \ | |
| 185 } while (0) | |
| 186 | |
| 187 #define RATIO_ARITH_RETURN1(r,op,arg) do \ | |
| 188 { \ | |
| 189 Lisp_Object retval = make_ratio (0L, 1UL); \ | |
| 190 ratio_##op (XRATIO_DATA (retval), XRATIO_DATA (r), arg); \ | |
| 191 return Fcanonicalize_number (retval); \ | |
| 192 } while (0) | |
| 193 | |
| 194 extern Lisp_Object make_ratio (long, unsigned long); | |
| 195 extern Lisp_Object make_ratio_bg (bignum, bignum); | |
| 196 extern Lisp_Object make_ratio_rt (ratio); | |
|
4678
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
197 extern ratio scratch_ratio, scratch_ratio2; |
| 1983 | 198 |
| 199 #else /* !HAVE_RATIO */ | |
| 200 | |
| 201 #define RATIOP(x) 0 | |
| 202 #define CHECK_RATIO(x) dead_wrong_type_argument (Qratiop, x) | |
| 203 #define CONCHECK_RATIO(x) dead_wrong_type_argument (Qratiop, x) | |
| 204 typedef void ratio; | |
| 205 #define make_ratio(n,d) This XEmacs does not support ratios | |
| 206 #define make_ratio_bg(n,d) This XEmacs does not support ratios | |
| 207 | |
| 208 #endif /* HAVE_RATIO */ | |
| 209 | |
| 2092 | 210 extern Lisp_Object Qratiop; |
| 1983 | 211 EXFUN (Fratiop, 1); |
| 212 | |
| 213 | |
| 214 /******************************** Rationals *********************************/ | |
| 215 extern Lisp_Object Qrationalp; | |
| 216 | |
| 217 #define RATIONALP(x) (INTEGERP(x) || RATIOP(x)) | |
| 218 #define CHECK_RATIONAL(x) do { \ | |
| 219 if (!RATIONALP (x)) \ | |
| 220 dead_wrong_type_argument (Qrationalp, x); \ | |
| 221 } while (0) | |
| 222 #define CONCHECK_RATIONAL(x) do { \ | |
| 223 if (!RATIONALP (x)) \ | |
| 224 x = wrong_type_argument (Qrationalp, x); \ | |
| 225 } while (0) | |
| 226 | |
| 227 EXFUN (Frationalp, 1); | |
| 228 EXFUN (Fnumerator, 1); | |
| 229 EXFUN (Fdenominator, 1); | |
| 230 | |
| 231 | |
| 232 /******************************** Bigfloats *********************************/ | |
| 233 #ifdef HAVE_BIGFLOAT | |
| 234 struct Lisp_Bigfloat | |
| 235 { | |
|
5120
d1247f3cc363
latest work on lisp-object workspace;
Ben Wing <ben@xemacs.org>
parents:
5118
diff
changeset
|
236 FROB_BLOCK_LISP_OBJECT_HEADER lheader; |
| 1983 | 237 bigfloat bf; |
| 238 }; | |
| 239 typedef struct Lisp_Bigfloat Lisp_Bigfloat; | |
| 240 | |
|
5118
e0db3c197671
merge up to latest default branch, doesn't compile yet
Ben Wing <ben@xemacs.org>
parents:
4678
diff
changeset
|
241 DECLARE_LISP_OBJECT (bigfloat, Lisp_Bigfloat); |
| 1983 | 242 #define XBIGFLOAT(x) XRECORD (x, bigfloat, Lisp_Bigfloat) |
| 243 #define wrap_bigfloat(p) wrap_record (p, bigfloat) | |
| 244 #define BIGFLOATP(x) RECORDP (x, bigfloat) | |
| 245 #define CHECK_BIGFLOAT(x) CHECK_RECORD (x, bigfloat) | |
| 246 #define CONCHECK_BIGFLOAT(x) CONCHECK_RECORD (x, bigfloat) | |
| 247 | |
| 248 #define bigfloat_data(f) ((f)->bf) | |
| 249 #define XBIGFLOAT_DATA(x) bigfloat_data (XBIGFLOAT (x)) | |
| 250 #define XBIGFLOAT_GET_PREC(x) bigfloat_get_prec (XBIGFLOAT_DATA (x)) | |
| 251 #define XBIGFLOAT_SET_PREC(x,p) bigfloat_set_prec (XBIGFLOAT_DATA (x), p) | |
| 252 | |
|
4678
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
253 #define BIGFLOAT_ARITH_RETURN(f,op) do \ |
|
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
254 { \ |
|
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
255 Lisp_Object retval = make_bigfloat (0.0, bigfloat_get_default_prec()); \ |
| 1983 | 256 bigfloat_##op (XBIGFLOAT_DATA (retval), XBIGFLOAT_DATA (f)); \ |
| 257 return retval; \ | |
| 258 } while (0) | |
| 259 | |
| 260 #define BIGFLOAT_ARITH_RETURN1(f,op,arg) do \ | |
| 261 { \ | |
|
4678
b5e1d4f6b66f
Make #'floor, #'ceiling, #'round, #'truncate conform to Common Lisp.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3391
diff
changeset
|
262 Lisp_Object retval = make_bigfloat (0.0, bigfloat_get_default_prec()); \ |
| 1983 | 263 bigfloat_##op (XBIGFLOAT_DATA (retval), XBIGFLOAT_DATA (f), arg); \ |
| 264 return retval; \ | |
| 265 } while (0) | |
| 266 | |
| 267 extern Lisp_Object make_bigfloat (double, unsigned long); | |
| 268 extern Lisp_Object make_bigfloat_bf (bigfloat); | |
| 269 extern Lisp_Object Vdefault_float_precision; | |
| 270 extern bigfloat scratch_bigfloat, scratch_bigfloat2; | |
| 271 | |
| 272 #else /* !HAVE_BIGFLOAT */ | |
| 273 | |
| 274 #define BIGFLOATP(x) 0 | |
| 275 #define CHECK_BIGFLOAT(x) dead_wrong_type_argument (Qbigfloatp, x) | |
| 276 #define CONCHECK_BIGFLOAT(x) dead_wrong_type_argument (Qbigfloatp, x) | |
| 277 typedef void bigfloat; | |
| 278 #define make_bigfloat(f) This XEmacs does not support bigfloats | |
| 279 #define make_bigfloat_bf(f) This XEmacs does not support bigfloast | |
| 280 | |
| 281 #endif /* HAVE_BIGFLOAT */ | |
| 282 | |
| 2092 | 283 extern Lisp_Object Qbigfloatp; |
| 1983 | 284 EXFUN (Fbigfloatp, 1); |
| 285 | |
| 286 /********************************* Floating *********************************/ | |
| 4932 | 287 extern Lisp_Object Qfloatingp; |
| 1983 | 288 extern Lisp_Object Qread_default_float_format, Vread_default_float_format; |
| 289 | |
| 290 #define FLOATINGP(x) (FLOATP (x) || BIGFLOATP (x)) | |
| 291 #define CHECK_FLOATING(x) do { \ | |
| 292 if (!FLOATINGP (x)) \ | |
| 293 dead_wrong_type_argument (Qfloatingp, x); \ | |
| 294 } while (0) | |
| 295 #define CONCHECK_FLOATING(x) do { \ | |
| 296 if (!FLOATINGP (x)) \ | |
| 297 x = wrong_type_argument (Qfloating, x); \ | |
| 298 } while (0) | |
| 299 | |
| 2057 | 300 extern Lisp_Object make_floating (double); |
| 1983 | 301 EXFUN (Ffloatp, 1); |
| 302 | |
| 303 | |
| 304 /********************************** Reals ***********************************/ | |
| 305 extern Lisp_Object Qrealp; | |
| 306 | |
| 307 #define REALP(x) (RATIONALP (x) || FLOATINGP (x)) | |
| 308 #define CHECK_REAL(x) do { \ | |
| 309 if (!REALP (x)) \ | |
| 310 dead_wrong_type_argument (Qrealp, x); \ | |
| 311 } while (0) | |
| 312 #define CONCHECK_REAL(x) do { \ | |
| 313 if (!REALP (x)) \ | |
| 314 x = wrong_type_argument (Qrealp, x); \ | |
| 315 } while (0) | |
| 316 | |
| 317 EXFUN (Frealp, 1); | |
| 318 | |
| 319 | |
| 320 /********************************* Numbers **********************************/ | |
| 4932 | 321 /* Qnumberp in lisp.h */ |
| 1983 | 322 #define NUMBERP(x) REALP (x) |
| 323 #define CHECK_NUMBER(x) do { \ | |
| 324 if (!NUMBERP (x)) \ | |
| 325 dead_wrong_type_argument (Qnumberp, x); \ | |
| 326 } while (0) | |
| 327 #define CONCHECK_NUMBER(x) do { \ | |
| 328 if (!NUMBERP (x)) \ | |
| 329 x = wrong_type_argument (Qnumberp, x); \ | |
| 330 } while (0) | |
| 331 | |
| 332 EXFUN (Fcanonicalize_number, 1); | |
| 333 | |
| 334 enum number_type {FIXNUM_T, BIGNUM_T, RATIO_T, FLOAT_T, BIGFLOAT_T}; | |
| 335 | |
| 1995 | 336 extern enum number_type get_number_type (Lisp_Object); |
| 1983 | 337 extern enum number_type promote_args (Lisp_Object *, Lisp_Object *); |
| 338 | |
|
4885
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
339 #ifdef WITH_NUMBER_TYPES |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
340 DECLARE_INLINE_HEADER ( |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
341 int |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
342 non_fixnum_number_p (Lisp_Object object)) |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
343 { |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
344 if (LRECORDP (object)) |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
345 { |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
346 switch (XRECORD_LHEADER (object)->type) |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
347 { |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
348 case lrecord_type_float: |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
349 #ifdef HAVE_BIGNUM |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
350 case lrecord_type_bignum: |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
351 #endif |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
352 #ifdef HAVE_RATIO |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
353 case lrecord_type_ratio: |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
354 #endif |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
355 #ifdef HAVE_BIGFLOAT |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
356 case lrecord_type_bigfloat: |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
357 #endif |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
358 return 1; |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
359 } |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
360 } |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
361 return 0; |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
362 } |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
363 #define NON_FIXNUM_NUMBER_P(X) non_fixnum_number_p (X) |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
364 |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
365 #else |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
366 #define NON_FIXNUM_NUMBER_P FLOATP |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
367 #endif |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
368 |
|
6772ce4d982b
Fix hash tables, #'member*, #'assoc*, #'eql compiler macros if bignums
Aidan Kehoe <kehoea@parhasard.net>
parents:
4802
diff
changeset
|
369 |
| 1983 | 370 #endif /* INCLUDED_number_h_ */ |
