diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2012-03-20 12:11:38 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2012-03-20 12:11:38 -0700 |
commit | 270dcc27814f4bd80f625b85e9ff91e7c5a8e8a8 (patch) | |
tree | af016173b3eb8785928466032f97f772c5f0dc04 /lib.h | |
parent | 49b84f76e1036ebeb75b4348d1d0cf7fdf233939 (diff) | |
download | txr-270dcc27814f4bd80f625b85e9ff91e7c5a8e8a8.tar.gz txr-270dcc27814f4bd80f625b85e9ff91e7c5a8e8a8.tar.bz2 txr-270dcc27814f4bd80f625b85e9ff91e7c5a8e8a8.zip |
* arith.c (plus): Optimization: use num_fast when
result is in the fixnum range.
Implemented FLNUM cases, except for adding a FLNUM
to BGNUM.
(minus, mul): Use num_fast when the cnum value is in the fixnum range.
(int_flo): New function.
* eval.c (eval_init): Register int-flo intrinsic.
* lib.c (c_flo): New function.
* lib.h (TYPE_SHIFT, TYPE_PAIR): New macros, carried over
from the lazy strings branch.
(c_flo, int_flo): Declared.
Diffstat (limited to 'lib.h')
-rw-r--r-- | lib.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -43,6 +43,9 @@ typedef enum type { BGNUM, FLNUM } type_t; +#define TYPE_SHIFT 4 +#define TYPE_PAIR(A, B) ((A) << TYPE_SHIFT | (B)) + typedef enum functype { FINTERP, /* Interpreted function. */ @@ -386,6 +389,7 @@ val improper_plist_to_alist(val list, val boolean_keys); val num(cnum val); val flo(double val); cnum c_num(val num); +double c_flo(val num); val fixnump(val num); val bignump(val num); val floatp(val num); @@ -449,6 +453,7 @@ val trim_str(val str); val string_lt(val astr, val bstr); val int_str(val str, val base); val flo_str(val str); +val int_flo(val f); val chrp(val chr); wchar_t c_chr(val chr); val chr_isalnum(val ch); |