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

295 commits

Author SHA1 Message Date
Neil Jerram
bca69a9fba Only define scm_from_complex_double if it will
actually be used.
2008-03-09 21:57:00 +00:00
Ludovic Courtès
a2c25234fb Use imaginary_part' instead of imaginary' to fix build on Solaris 2.10. 2008-02-23 11:28:11 +00:00
Neil Jerram
4b26c03ec7 * numbers.c (SCM_COMPLEX_VALUE): Use GUILE_I instead of _Complex_I
directly, and only if GUILE_I was defined by the configure step.
(scm_log, scm_log10, scm_exp, scm_sqrt): Use SCM_COMPLEX_VALUE
code only if SCM_COMPLEX_VALUE is defined.

* configure.in (--without-64-calls): Use AC_MSG_CHECKING and
AC_MSG_RESULT instead of just echo.
(GUILE_I): New programs to try using _Complex_I or 1.0fi for the
imaginary unit.
2008-02-11 21:20:14 +00:00
Ludovic Courtès
189171c5bb Fix compilation of `numbers.c' with Sun CC. 2008-02-06 13:51:05 +00:00
Ludovic Courtès
9cc37597af Changes from arch/CVS synchronization 2007-12-08 16:00:56 +00:00
Kevin Ryde
90709cd75f (scm_log): Test HAVE_CLOG as well as HAVE_COMPLEX_DOUBLE
before using clog().  It's possible for gcc to provide the "complex
double" type, but for the system not to have the complex funcs.
(scm_exp): Ditto HAVE_CEXP for cexp().
(clog, cexp, carg): Remove fallback definitions.  These only
duplicated the code within scm_log and scm_exp, and the latter have to
exist for the case when there's no "complex double".  So better just
fix up the conditionals selecting between the complex funcs and plain
doubles than worry about fallbacks.
2007-09-02 22:36:23 +00:00
Ludovic Courtès
1911e3da17 Changes from arch/CVS synchronization 2007-04-17 14:12:17 +00:00
Han-Wen Nienhuys
1d8ce4c04d * configure.in (HAVE_CRYPT): check for cexp, clog, carg
* numbers.c (carg): provide carg, cexp, clog in case they are
missing.
2007-04-09 14:47:41 +00:00
Kevin Ryde
23d7256628 merge from 1.8 2007-01-15 23:42:45 +00:00
Han-Wen Nienhuys
e2bf3b19f6 * numbers.c (scm_i_fraction_reduce): move logic into
scm_i_make_ratio(), so fractions are only read.
scm_i_fraction_reduce() modifies a fraction when reading it.  A
race condition might lead to fractions being corrupted by reading
them concurrently.

* numbers.h: remove SCM_FRACTION_SET_NUMERATOR,
SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT,
SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR,
SCM_FRACTION_REDUCED.
2006-12-23 20:35:32 +00:00
Kevin Ryde
8ab3d8a068 merge from 1.8 branch 2006-10-09 23:40:48 +00:00
Ludovic Courtès
eaa94eaaa9 Changes from arch/CVS synchronization 2006-07-12 08:07:27 +00:00
Kevin Ryde
23f2b9a3de merge from 1.8 branch 2006-06-17 23:15:59 +00:00
Kevin Ryde
2b829bbb3d merge from 1.8 branch 2006-04-17 00:05:42 +00:00
Marius Vollmer
3a1b45fdf7 Use scm_from_bool instead of SCM_BOOL. Thanks to Peter Gavin! 2005-08-11 21:03:58 +00:00
Marius Vollmer
92205699d0 The FSF has a new address. 2005-05-23 19:57:22 +00:00
Kevin Ryde
4c6e36a6e3 (scm_divide): Correction to 1/complex and <any>/complex,
need to test abs(re)<abs(im) for choice of cases, otherwise divide by
zero when re==0 and im<0.  Reported by Jean Crepeau.
2005-04-29 22:59:22 +00:00
Kevin Ryde
40882e3d0b (scm_oneplus, scm_oneminus): New functions, converted from
scheme code in boot-9.scm.
2005-04-14 00:35:50 +00:00
Kevin Ryde
23c3b605b5 (scm_i_clonebig): Remove static, so can use in srfi-60. 2005-03-13 00:18:34 +00:00
Kevin Ryde
9806de0dca (scm_logior): Must scm_i_normbig results as per scm_logand,
because OR-ing bits into a negative can reduce the value to an inum.
2005-03-13 00:16:22 +00:00
Kevin Ryde
e8c5b1f291 (scm_num_eq_p): On 64-bit systems, be careful about
casting inum to double since that can lose precision.
2005-03-13 00:13:10 +00:00
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