Daniel Kochmański
f6dc3d88bf
boot: move ecl_eql to a separate file eql.d
...
This is a low-level comparison operator. We opencode EQL comparison for bignums
to avoid a dependency on GMP (in this file).
2026-03-13 19:23:06 +01:00
Marius Gerbershagen
8a38c9a3c2
remove register storage class specifier
...
This option is not needed anymore, ignored by modern compilers and has
been removed in the C++17 standard.
Fixes #647 .
2021-07-17 12:13:05 +02:00
Marius Gerbershagen
ecb71b194a
predicate.d: fix equalp for hash tables
...
According to the spec, we should compare values using equalp if two
matching keys are found, but we were only checking if matching keys
exist.
Fixes #587 .
2020-05-10 22:18:44 +02:00
Marius Gerbershagen
a597fd5379
eql: fix NaN comparison
...
Old approach doesn't work reliably on x86_64. See e.g.
> (eql (+ ext:double-float-negative-infinity ext:double-float-positive-infinity) (ext:nan))
NIL
2019-08-14 20:51:40 +02:00
Daniel Kochmański
ea87100a06
long-float: remove conditionalization
...
Many parts of the source code were bent backward to support builds
without long floats which are always present given we depend expect
c99 compiler.
The corresponding C macros (ECL_LONG_FLOAT) and the *feature*
entry (:long-float) are marked as deprecated in the documentation.
2019-05-24 21:04:59 +00:00
Daniel Kochmański
db5e0937b3
complex-float: add a specialized array type for complex floats
2019-05-15 16:35:16 +02:00
Daniel Kochmański
86f10de4a0
complex float: implement eql, equal and equalp
...
equalp is delegated to ecl_number_equalp. we do not treat signed zero,
infinity nor nan.
float_eql is not the same as ==, because we have signed zeros and nan
values which should be compared memory-wise.
2019-05-15 16:35:16 +02:00
Daniel Kochmański
f78cb49def
complex float: rename cl_lispunion member complex to gencomplex
...
Complex is a macro specified in complex.h for c99 to simplify using
_Complex type. This file also contains functions to work on complex
floats. To avoid conflicts we rename internal name complex to
gencomplex and update all references to it.
2019-05-06 08:17:33 +02:00
Marius Gerbershagen
1553f4e70e
ecl_equal: fix comparison of displaced bitvectors (this time for real)
...
The "fix" from commit d3420eb3d5 did
not work properly for bitvectors with length > 8.
Fixes #445
2018-12-23 13:37:23 +01:00
Marius Gerbershagen
317d8915cf
ecl_equalp: improve efficiency of array comparison
2018-12-19 23:30:51 +01:00
Marius Gerbershagen
d3420eb3d5
ecl_equal: fix comparison of displaced bitvectors
...
Fixes #445
2018-12-19 23:30:51 +01:00
Daniel Kochmański
0828b1f48a
equalp: don't compare clos instance slots
...
Problem identified and fixed by Marius Gerbershagen. Closes #391 .
2017-06-30 20:19:51 +02:00
Daniel Kochmański
5e8ec11bdd
cosmetic: fix indent (rest of C)
2016-05-06 08:41:52 +02:00
Matthew Mondor
8f07cd58d8
The ECL code no longer uses tabulator characters, they were replaced
...
by spaces.
A custom script was used to insert/replace Emacs and ViM per-file editor
settings according to their type and the new ECL coding style.
2015-09-03 07:35:47 -04:00
Daniel Kochmański
7a29be4337
CLOS: remove dead code and conditionals for non-clos builds
...
Builds without CLOS weren't possible for long time, yet a lot of dead
code for non-clos builds was spread across sources. This commit
removes all ifdefs and dead blocks from codebase.
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
2015-07-01 16:56:17 +02:00
Daniel Kochmański
4d19a27424
cosmetic: untabify
...
Signed-off-by: Daniel Kochmański <dkochmanski@turtle-solutions.eu>
2015-06-21 14:38:20 +02:00
Juan Jose Garcia Ripoll
e54d9a6173
Rename type_of -> ecl_t_of
2012-07-05 23:07:34 +02:00
Juan Jose Garcia Ripoll
3281047165
Renamed CLASS_* and moved to legacy.h
2012-06-30 23:21:06 +02:00
Juan Jose Garcia Ripoll
825fc8cbd3
Cnil and Ct are now part of legacy
2012-06-30 23:01:40 +02:00
Juan Jose Garcia Ripoll
288d5e8ce6
Force LISTP,CONSP,ATOM and SYMBOLP into legacy.h
2012-06-30 21:59:10 +02:00
Juan Jose Garcia Ripoll
52512c15a4
Rename the stp_* and aet_* enumeration names with the ecl_ prefix
2012-06-08 00:12:48 +02:00
Juan Jose Garcia Ripoll
235a587cc6
Rename sf(), df(), and the bignum suffixes big_size, big_dim and big_limbs. Old versions moved to legacy.h
2012-06-06 21:08:47 +02:00
Juan Jose Garcia Ripoll
64a9168434
CHARACTERP, BASE_CHAR_P, BASE_CHAR_CODE_P, CODE_CHAR, CHAR_CODE, REAL_TYPE, IMMEDIATE, IMMEDIATE_TAG, FIXNUM_TAG, FIXNUM_MINUSP, FIXNUM_PLUSP, FIXNUMP and fix get the ecl_ prefix
2012-06-06 11:19:55 +02:00
Juan Jose Garcia Ripoll
dbd51915dc
Remove further uses of cl_funcall in the C core
2012-05-05 10:40:14 +02:00
Juan Jose Garcia Ripoll
036cb55928
Fixes to remove warnings about unused variables. Replaced some uses of @(return) with ecl_return*()
2012-04-10 23:20:40 +02:00
Juan Jose Garcia Ripoll
71114c9063
The methods in the hash tables now hide the ecl_hashtable_entry structures. This will allow implementing weak hash tables more easily.
2011-12-30 12:40:06 +01:00
Juan Jose Garcia Ripoll
a86bbd3605
Fixed various warnings to allow compiling ECL with CLang
2011-01-23 16:06:47 +01:00
Alexander Gavrilov
03049ee7e2
Make boxed SSE packs untyped for all purposes but printing.
...
Now the following rules hold:
- (type-of pack) = SSE-PACK
- (typep pack '*-SSE-PACK) = T
The compiler is tweaked to unbox unidentified packs as
__m128i (integer), assuming that a cast would be inserted
later if that is not what was needed.
2010-10-03 23:43:52 +02:00
Alexander Gavrilov
ce2badff90
Add the boxed SSE packed vector types.
...
Boxing SSE values is useless performance-wise, but necessary
to provide continuity between compiled and interpreted code.
This set of types is peculiar in that while the actual CPU
instruction set mostly does not care about the data types
(although mixing commands for ints and floats leads to
some performance degradation), the C intrinsic function
interface does distinguish the types to some extent.
Thus it also has to be represented in the ECL compiler.
2010-08-20 20:29:03 +02:00
Juan Jose Garcia Ripoll
e83bd3dfb4
Unboxed type SHORT-FLOAT removed from the core.
2010-08-17 19:47:14 +02:00
Juan Jose Garcia Ripoll
2e1b5463e0
Logical pathnames are now uppercased
2010-06-03 20:41:21 +02:00
Juan Jose Garcia Ripoll
01e227c402
Replaced many uses of type_of() with specialized macros (ECL_BIT_VECTOR_P, ECL_BASE_STRING_P, etc)
2010-02-28 01:09:13 +01:00
Juan Jose Garcia Ripoll
d1521c1bcd
Renaming of hash table internal function ecl_search_hash -> _ecl_gethash
2010-01-20 15:12:21 +01:00
Juan Jose Garcia Ripoll
484fb955ab
Renamed all remaining internal functions that work with bignums.
2009-08-28 22:31:39 +02:00
Juan Jose Garcia Ripoll
da641873e4
In structures ecl_{array,vector,base_string,string}, replaced the bitfields hasfillp and adjustable with a single integer holding all flags. This solves several problems with Microsoft C compiler.
2009-07-26 11:56:26 +02:00
Juan Jose Garcia Ripoll
95fc3c6413
Create really unchecked versions of aref/aset
2009-07-03 00:25:38 +02:00
Juan Jose Garcia Ripoll
13763bae70
Implement sign comparisons using signbit(), which defaults to (x==y) where it is not available. Since floats may have extra unused bits (long double), we cannot implement eql using bit comparisons
2009-06-13 22:50:28 +02:00
Juan Jose Garcia Ripoll
2cb472ed09
Fixed typo.
2009-06-12 22:08:41 +02:00
Juan Jose Garcia Ripoll
5008fdd45f
Big patch for introducing NaNs and infinities.
2009-06-04 15:55:13 +02:00
Juan Jose Garcia Ripoll
42fdda5e1c
Whenever isfinite is not defined, use finite(). Additionally, in Solaris, load ieefp.h before using this macro.
2009-05-20 19:29:16 +02:00
Juan Jose Garcia Ripoll
3f1419fe35
New flag --with-signed-zero (Juanjo). RUN-PROGRAM now returns exit code of program (Josh Elsasser).
2008-10-05 00:04:15 +02:00
jjgarcia
1a8633a0fe
-0.0 and 0.0 do no longer compare EQL
2008-09-28 20:14:18 +00:00
jjgarcia
aa50e7ef4c
Separate lisp objects for functions with fixed and variable # arguments
2008-06-19 15:08:03 +00:00
jjgarcia
9a5f1a7751
Introduce bytecode closure objects to save space in FLET/LABELS forms
2008-06-19 15:04:27 +00:00
jgarcia
8800b254f5
Committed the changes to implement small conses
2008-04-30 14:24:20 +00:00
jgarcia
c7052c977a
Improved hashing with unicode. Random states can now be compared and have similar keys when equalp
2008-02-02 19:06:15 +00:00
jgarcia
5ef5d32e74
Enforce indent and mode conditions on files
2008-01-26 10:30:41 +00:00
jgarcia
b7b6db973b
Missing type check for character comparison in EQUAL
2007-05-06 19:14:02 +00:00
jgarcia
aa3dfe4058
Prefix most functions with 'ecl_' to avoid name collisions when embedding ECL in other libraries
2007-01-18 11:46:07 +00:00
jgarcia
4d130887b3
Fixed typo
2006-12-09 14:19:13 +00:00