1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +02:00
Commit graph

574 commits

Author SHA1 Message Date
Kevin Ryde
7d92d3d0da Add a copyright year. 2005-02-14 23:15:08 +00:00
Kevin Ryde
a9ad484720 In scm_difference, amend comment about normbig. 2005-02-14 23:14:35 +00:00
Kevin Ryde
788aca275f (scm_ash): Rewrite using shifts, much faster than
integer-expt and multiply/divide.  Inexacts and fractions no longer
supported (they happened to work before for left shifts, but not
right).  Don't really need inexacts and fractions, since ash is
documented as a "bitwise operation", and all the rest of those only
take exact integers.
2005-01-27 22:51:22 +00:00
Kevin Ryde
ba6e7231e4 (scm_logtest, scm_logbit_p, scm_integer_expt): Update
docstrings from manual.
2005-01-15 00:01:40 +00:00
Kevin Ryde
66b1c775d2 (scm_modulo): Amend fixme comment about negative divisor
with "%", C99 says it's well-defined.
2004-12-10 00:00:27 +00:00
Marius Vollmer
7a1aba42cf (scm_i_print_complex, icmplx2str): New.
(iflo2str): Use icmplx2str for complex numbers.
2004-10-29 14:17:20 +00:00
Marius Vollmer
b479fe9ae4 (scm_i_print_double): New. 2004-10-26 16:53:23 +00:00
Marius Vollmer
2881e77b5a (SCM_T_INTBUFLEN): Increased to cover
scm_t_intmax values.
(scm_uint2str): New, for scm_t_uintmax.
(scm_iint2str): Argument type changed to scm_t_intmax,
reimplemented in terms of scm_uint2str.
2004-10-22 13:50:39 +00:00
Marius Vollmer
1713d319b7 * numbers.c (scm_i_range_error): New.
* conv-integer.i.c, conv-uinteger.i.c: Use it instead of
scm_out_of_range.
2004-10-19 15:59:56 +00:00
Marius Vollmer
cd0362604b Include <gmp.h> in numbers.h, not in
numbers.c.
(scm_to_mpz, scm_from_mpz): New.
Thanks to Andreas Vögele!
2004-09-21 00:42:30 +00:00
Marius Vollmer
0bafe73b5d (scm_integer_expt): Do not accept inexact integers. 2004-09-08 14:09:01 +00:00
Kevin Ryde
1e35a229f0 Revert this:
(scm_integer_p): +/-inf is not an integer.
2004-09-08 01:03:06 +00:00
Kevin Ryde
8bddb01ebb (scm_integer_expt): Reject exponent +/-inf.
(scm_integer_p): +/-inf is not an integer.
Bug report by Bill Schottstaedt.
2004-09-07 00:12:45 +00:00
Stefan Jahn
edea856ce5 2004-09-03 Stefan Jahn <stefan@lkcc.org>
* configure.in (isinf): Let configure find the isinf() function
        on MinGW32 systems.

2004-09-03  Stefan Jahn  <stefan@lkcc.org>

        * threads.c (scm_threads_mark_stacks):  Fixed local variable
        definitions.

        * strings.c (scm_i_substring_copy, s_scm_string_append): Fixed
        local variable definitions.

        * stime.c (_POSIX_C_SOURCE):  Do not define this item on
        MinGW32 because it conflicts with its pthread headers.
        (s_scm_mktime): Consider the HAVE_STRUCT_TM_TM_ZONE define.
        (s_scm_strftime): Using scm_from_locale_string() instead of
        scm_makfrom0str().

        * posix.c (s_scm_putenv): Fixed typo in the !HAVE_UNSETENV
        part.

        * numbers.c (scm_init_numbers): Removed check_sanity() call
        inside GUILE_DEBUG.  The function has been removed somewhen...

        * filesys.c (_POSIX_C_SOURCE): Do not define this item on
        MinGW32 because it conflicts with its pthread headers.

2004-09-03  Stefan Jahn  <stefan@lkcc.org>

        * srfi-1.c, srfi-1.h: Renamed any 'lst1' into 'list1' because
        lst1 is a #define on Win32 systems.
2004-09-03 19:45:37 +00:00
Marius Vollmer
b1092b3aaf (scm_inf_p): Synced docstring back from manual. 2004-08-24 16:43:50 +00:00
Marius Vollmer
cc95e00ac6 * strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH.  Updated all
uses.
(scm_i_make_string, scm_c_make_string): New, to replace
scm_allocate_string.  Updated all uses.
(SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
SCM_STRING_LENGTH): Deprecated.
(scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
Discouraged.  Replaced all uses with scm_from_locale_string or
similar, as appropriate.
(scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
scm_substring_shared, scm_substring_copy): New.

* symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
(SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
Deprecated.
(SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
(scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
New, to replace scm_str2symbol and scm_mem2symbol, respectively.
Updated all uses.
(scm_gensym): Generate only the number suffix in the buffer, just
string-append the prefix.
2004-08-19 17:19:44 +00:00
Marius Vollmer
8824ac88f0 * socket.c, rw.c, deprecated.h, validate.h
(SCM_VALIDATE_STRING_COPY): Deprecated.  Replaced all uses with
SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
scm_to_locale_string, etc.
(SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated.  Replaced as
above, plus scm_i_get_substring_spec.

* regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
SCM_STRING_LENGTH, respectively.  Also, replaced scm_return_first
with more explicit scm_remember_upto_here_1, etc, or introduced
them in the first place.
2004-08-12 17:45:03 +00:00
Marius Vollmer
3101f40f76 (scm_round, scm_truncate): Renamed to scm_c_round and scm_c_truncate;
deprecated versions installed in deprecated.h and deprecated.c.
Changed all uses.
2004-08-09 23:32:14 +00:00
Kevin Ryde
f8a8200bc0 Amend #if and comments for cmp_d and get_d about unreleased gmp, don't
know when or as what version number it will come out.
2004-08-06 01:26:26 +00:00
Marius Vollmer
8507ec804f (scm_complex_p): New, export as "complex?" to Scheme.
(scm_number_p): Export as "number?" to Scheme.
(scm_is_complex, scm_is_number): New.
(scm_c_make_rectangular, scm_c_make_polar): New.
(scm_make_rectangular, scm_make_polar): Use above.
(scm_c_real_part, scm_c_imag_part, scm_c_magnitude, scm_c_angle):
New.
(scm_make_complex): Discouraged by moving to discouraged.h and
discouraged.c.  Replaced all uses with scm_c_make_rectangular.
2004-08-03 17:12:14 +00:00
Marius Vollmer
cba42c9344 * numbers.h. numbers.c (scm_make_ratio): Renamed to
scm_i_make_ratio and made static, replaced uses with scm_divide.
2004-08-03 15:55:42 +00:00
Marius Vollmer
55f26379b3 (scm_is_rational): New.
(scm_i_short2big, scm_i_int2big, scm_i_uint2big, scm_i_size2big,
scm_i_ptrdiff2big, scm_i_long_long2big, scm_i_ulong_long2big):
Removed prototypes.
(scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):
Discouraged by moving to discouraged.h and discouraged.c.
Replaced all uses with scm_from_double.
(scm_num2float, scm_num2double): Discouraged by moving prototype
to discouraged.h and rewriting in terms of scm_to_double.
Replaced all uses with scm_to_double.
(scm_to_double): Do not implement in terms of scm_num2dbl, use
explicit code.
(scm_from_double): Do not implement in terms of scm_make_real, use
explicit code.
2004-08-03 15:03:35 +00:00
Marius Vollmer
c71b07063e * discouraged.h, discouraged.c: New files.
* deprecated.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP, SCM_EQ_P,
SCM_NEGATE_BOOL, SCM_BOOL, SCM_BOOT_NOT): Promoted from being
deprecated to being discouraged by moving to discouraged.h.

* numbers.h, numbers.c, discouraged.h, discouraged.c
(scm_short2num, scm_ushort2num, scm_int2num, scm_uint2num,
scm_long2num, scm_ulong2num, scm_size2num, scm_ptrdiff2num,
scm_num2short, scm_num2ushort, scm_num2int, scm_num2uint,
scm_num2long, scm_num2ulong, scm_num2size, scm_num2ptrdiff,
scm_long_long2num, scm_ulong_long2num, scm_num2long_long,
scm_num2ulong_long): Discouraged by moving to discouraged.h and
discouraged.c and reimplementing in terms of scm_from_* and
scm_to_*.

* numbers.h, numbers.c: Removed GUILE_DEBUG code.
(scm_i_short2big, scm_i_ushort2big, scm_i_int2big, scm_i_uint2big,
scm_i_size2big, scm_i_ptrdiff2big): Removed.
(scm_i_long2big, scm_i_ulong2big): New, explicit definitions.
* conv-integer.i.c, conv-uinteger.i.c: Use them instead of
explicit code.
2004-08-02 15:57:04 +00:00
Marius Vollmer
bfd7932e66 * conv-integer.i.c, conv-uinteger.i.c: New files, used to generate
the functions below.

* numbers.c, numbers.h (scm_to_int8, scm_to_uint8, scm_to_int16,
scm_to_uint16, scm_to_int32, scm_to_uint32, scm_to_int64,
scm_to_uint64, scm_from_int8, scm_from_uint8, scm_from_int16,
scm_from_uint16, scm_from_int32, scm_from_uint32, scm_from_int64,
scm_from_uint64): Turned from macros into proper functions.
(scm_to_signed_integer, scm_to_unsigned_integer,
scm_from_signed_integer, scm_from_unsigned_integer): Generate via
conv-integer.i.c and conv-uinteger.i.c, as well.
2004-07-29 13:42:50 +00:00
Marius Vollmer
bc36d0502b * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
deprecated.h.  Replaced all uses with scm_is_eq.
2004-07-27 15:41:49 +00:00
Marius Vollmer
e11e83f3d9 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
SCM_INUM): Deprecated by reenaming them to SCM_I_INUMP, SCM_I_NINUMP
and SCM_I_INUM, respectively and adding deprecated versions to
deprecated.h and deprecated.c.  Changed all uses to either use the
SCM_I_ variants or scm_is_*, scm_to_*, or scm_from_*, as appropriate.
2004-07-23 15:43:02 +00:00
Marius Vollmer
5efd3c7d68 (scm_to_signed_integer, scm_to_unsigned_integer): dot
not accept inexact integers.

* validate.h, deprecated.h (SCM_VALIDATE_INUM, SCM_VALIDATE_INUM_COPY,
SCM_VALIDATE_BIGINT, SCM_VALIDATE_INUM_MIN,
SCM_VALIDATE_INUM_MIN_COPY,
SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF,
SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE,
SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the
fixnum/bignum distinction visible.  Changed all uses to scm_to_size_t
or similar.
2004-07-10 13:55:04 +00:00
Marius Vollmer
d956fa6f91 (scm_is_signed_integer, scm_is_unsigned_integer):
Rewritten using the same logic as scm_to_signed_integer and
scm_to_unsigned_integer, respectively, which is better(tm).  Also,
use CHAR_BIT instead of hardcoding 8.
(LLONG_MIN, LLONG_MAX, ULLONG_MAX): Removed and used
SCM_I_LLONG_MIN etc. instead.

* numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM to
SCM_I_MAKINUM and changed all uses.
2004-07-08 15:54:05 +00:00
Marius Vollmer
73e4de09b9 (scm_is_integer, scm_is_signed_integer, scm_is_unsigned_integer,
scm_to_signed_integer, scm_to_unsigned_integer, scm_to_schar,
scm_to_uchar, scm_to_char, scm_to_short, scm_to_ushort, scm_to_long,
scm_to_ulong, scm_to_size_t, scm_to_ssize_t, scm_from_schar,
scm_from_uchar, scm_from_char, scm_from_short, scm_from_ushort,
scm_from_int, scm_from_uint, scm_from_long, scm_from_ulong,
scm_from_size_t, scm_from_ssize_t, scm_is_real, scm_to_double,
scm_from_double): New.

* deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into "deprecated.h".
Replaced all uses with scm_is_false, scm_is_true, scm_from_bool, and
scm_is_bool, respectively.
2004-07-06 10:23:30 +00:00
Kevin Ryde
faff1f2fda (trunc): Remove #define to scm_truncate when the C library
doesn't provide trunc.  This was for when `truncate' was done as a
scm_tc7_dsubr, no longer required.
2004-05-18 23:45:34 +00:00
Kevin Ryde
bae30667b0 (scm_round_number): For inum and big, just return x. For
real, use scm_round for 2^54-1 etc problems covered there.
2004-05-18 23:43:28 +00:00
Marius Vollmer
0b799eeab6 (FLOBUFLEN): Increase so that radix 2 strings will fit.
(fx): Removed.
(scm_dblprec, fx_per_radix, init_dblprec, init_fx_radix,
number_chars): New, to support variable radices.
(idbl2str): Use above instead of the old base-10 only tables.
(iflo2str): Pass on new RADIX argument to idbl2str.
(scm_number_to_string): Pass radix to iflo2str.
(scm_print_real, scm_print_complex): Explicitly pass radix 10 to
iflo2str.
(scm_init_numbers): Call init_dblprec and init_fx_radix for all
possible radices.
2004-05-10 20:35:39 +00:00
Kevin Ryde
20fcc8ed86 More of:
(scm_logbit_p): Correction to test above the end of an
inum.  Reported by Jan Konecny.
2004-05-09 22:46:17 +00:00
Kevin Ryde
0d75f6d819 (scm_logbit_p): Correction to test above the end of an
inum.  Reported by Jan Konecny.
2004-05-09 22:33:29 +00:00
Kevin Ryde
71df73ac43 numbers.c (XDIGIT2UINT,
mem2uinteger, mem2decimal_from_point, mem2ureal): Cast char to int for
ctype.h tests, to avoid warnings from gcc on HP-UX about char as array
subscript.  Reported by Andreas Vögele.
Also cast through unsigned char to avoid passing negatives to those
macros if input contains 8-bit values.
2004-04-27 23:16:17 +00:00
Kevin Ryde
857ae6afd3 (scm_bit_extract): Use min instead of MIN.
(MIN): Remove, this conflicts with similar macro defined by limits.h
on HP-UX.  Reported by Andreas Vögele.
2004-04-27 22:19:41 +00:00
Kevin Ryde
d77ad56065 (scm_bit_extract): Use SCM_SRS for signed right shift. 2004-04-22 01:21:39 +00:00
Kevin Ryde
6187f48b1a (scm_round): Test for x already an integer, to avoid bad
rounding in x+0.5 when x is a big value already an integer.  In
certain hardware rounding cases x+0.5 can give an adjacent integer,
leading to that as the result, when we really just wanted x itself.
2004-04-21 23:15:55 +00:00
Kevin Ryde
b6f8f763db (scm_max, scm_min): For big/real, use SCM_SWAP rather than
explicit swapping code.
2004-04-17 21:58:23 +00:00
Kevin Ryde
0bff4dce95 (scm_gcd): For inum/big, use mpz_gcd_ui by sharing code with big/inum. 2004-04-15 01:45:12 +00:00
Kevin Ryde
a98ce90708 (xisinf): Add a comment about solaris 7 lacking isinf. 2004-04-15 01:24:00 +00:00
Kevin Ryde
e4bc5d6ca7 (scm_max, scm_min): For inum/frac, frac/inum, big/frac,
frac/big and frac/frac, use scm_less_p for exact comparison.
2004-04-15 00:44:19 +00:00
Kevin Ryde
e7644cb292 (scm_ash): Remove stray "}" in docstring. 2004-04-06 00:17:41 +00:00
Kevin Ryde
3271a325c8 (scm_make_ratio): For inum/bignum integer detection, use
x==SCM_MOST_NEGATIVE_FIXNUM explicitly, for clarity and to avoid
calling mpz_cmp_ui in most cases.
2004-04-05 23:31:20 +00:00
Kevin Ryde
4dc09ee4ff (scm_quotient, scm_remainder): In inum/big, use mpz_cmp_ui
for big == abs(most-negative-fixnum) special case.
(abs_most_negative_fixnum): Remove, no longer used.
2004-04-05 22:48:05 +00:00
Kevin Ryde
1fff961089 (scm_modulo): For inum/big and big/big, remove test of
big==0 since that never occurs.
2004-03-25 21:56:27 +00:00
Kevin Ryde
d885e204fd (scm_modulo_expt): Renamed from
scm_modular_expt, matching scheme level name `modulo-expt'.
2004-03-25 21:55:20 +00:00
Kevin Ryde
b7b8c57576 (scm_modular_expt): Return a negative remainder for a
negative divisor, the same as `modulo' does.
2004-03-25 21:51:39 +00:00
Kevin Ryde
518b750845 2004-03-26 Eric Hanchrow <offby1@blarg.net>
* numbers.c, numbers.h (scm_modular_expt): New function.
2004-03-25 21:35:53 +00:00
Kevin Ryde
2a06f79117 (scm_min, scm_max): Correction to big/real and real/big,
return inexact as required by r5rs.
2004-03-24 21:53:31 +00:00