- 04 Dec, 2019 2 commits
-
-
Daniel Kochmański authored
si_complex_float_p and si_complex_float are referenced in tests, to allow clean compilation put them in externa.h.
-
Daniel Kochmański authored
Symbols must be associated with functions following an uniform naming scheme because si:mangle-name does not return pre-existing string. See #534 for details. This is a temporary solution.
-
- 18 Aug, 2019 1 commit
-
-
Marius Gerbershagen authored
-
- 14 Aug, 2019 2 commits
-
-
Marius Gerbershagen authored
Works better for edge cases such as x + I*∞, which otherwise would lead to a complex with NaN real part.
-
Marius Gerbershagen authored
All comparisons with NaN should return NIL for consistency with the IEEE standard.
-
- 23 Jul, 2019 2 commits
-
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
Previously, we assumed that all stack frames were lying at the top of the lisp stack. This is not always true due to e.g. multiple-value-prog1 pushing onto the lisp stack.
-
- 19 Jul, 2019 3 commits
-
-
Daniel Kochmański authored
Variable is always nil so blocks of code are never executed. Remove it. TRAMPOLINK was used only in such bodies.
-
Daniel Kochmański authored
-
Daniel Kochmański authored
We allocate arguments on a heap when number of them exceeds ECL_C_ARGUMENTS_LIMIT. Was: if (narg < ECL_C_ARGUMENTS_LIMIT) ... else .. should be if (narg <= ECL_C_ARGUMENTS_LIMIT) ... else .. It is a partial fix for #513 (solves a segfault).
-
- 16 Jul, 2019 1 commit
-
-
Daniel Kochmański authored
- ECL_ASM_APPLY was never used (apply assembly implementation for x86) - ECL_USE_VARARG_AS_POINTER was never used
-
- 15 Jul, 2019 1 commit
-
-
Marius Gerbershagen authored
The pipe from which we read the output of the C compiler could fill up when a large number of warnings were printed leading to a deadlock because we waited for the C compiler to finish before reading the output.
-
- 30 Jun, 2019 2 commits
-
-
Marius Gerbershagen authored
It is better to let the user disable these features with configure options than having a bunch of unmaintained workarounds lying around.
-
Marius Gerbershagen authored
This is primarly useful for embedding. Lisp code can be safely executed without leaking the floating point environment into other C code.
-
- 15 Jun, 2019 1 commit
-
-
Marius Gerbershagen authored
External format decoders now operatore on characters buffers instead of reading input byte by byte from the streams. This allows us to provide efficient read_vector implementations.
-
- 25 May, 2019 1 commit
-
-
Daniel Kochmański authored
Added: - implementation - test - documentaiton entries Additionally: - remove #if 0 code branches (unused clutter) - bring up-to-date help.lsp file for hints in slime - wrap synchronized access in unwind protect - write_ugly did not carry extensions in the printer
-
- 24 May, 2019 1 commit
-
-
Daniel Kochmański authored
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.
-
- 20 May, 2019 2 commits
-
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
-
- 15 May, 2019 4 commits
-
-
Daniel Kochmański authored
-
Daniel Kochmański authored
- add ffi implementation for long-float - add ffi implementation for (complex float) types - add compiler optimizations and definitions for complex float We do not add c?float common constants (long-float i.e has optimizer for 0.0 and -0.0), because we don't know if they are common at all and if we think about it each would have four entries counting signed zeros). Also add informative comment about global-entries.
-
Daniel Kochmański authored
cl_type_of: give better results for (type-of <complex>) Instead of simply returning complex we return: (complex real) when code is built without complex float support, and otherwise (complex rational) (complex single-float) (complex double-float) (complex long-float) New functions: - ecl_to_csfloat - ecl_to_cdfloat - ecl_to_clfloat
-
Daniel Kochmański authored
-
- 13 May, 2019 1 commit
-
-
Daniel Kochmański authored
What has changed: - new types si:complex-float, si:complex-single-float, si:complex-double-float and si:complex-long-float - new builtin classes long-float (for completness) and si:complex-float - new internal function si:complex-float and si:complex-float-p for constructing complex floats (both arguments must be of the same float type) and a type predicate - printer for new types (right now it conses, see below) - a new feature :complex-float - a new type is recognized as a type disjoint of complex and real - cleanup: +built-in-type-list+: remove some redundancy For instance instread of saying (real (or integer single-float double-float ratio)) We say (real (or integer float ratio)) etc. Flaws which will be fixed in upcoming commits: - complex-float hierarchy is independent of the complex hierarchy - ecl_make_complex_float could be replaced by _ecl_make_complex_*float - write_complex_float allocates new objects for printing - write_complex_float does print unreadable object - math dispatchers doesn't recognize the object Testing things out: > (si:complex-float 0.0d0 0.0d0) ; #<CF(0.0d0 0.0d0)> > (si:complex-float 0.0d0 0.0s0) ; signals type error > (+ (si:complex-float 0.0d0 0.0d0) 1) ; signals type error lisp runtime: make si_complex-float a subtype of a number.
-
- 06 May, 2019 2 commits
-
-
Daniel Kochmański authored
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.
-
Daniel Kochmański authored
t_csfloat - ecl_csfloat, t_cdfloat - ecl_cdfloat, t_clfloat - ecl_clfloat.
-
- 05 May, 2019 1 commit
-
-
Daniel Kochmański authored
We do not check for c99-mandated functions for long float (we only check for the type). We also check for complex numbers in a separate function and define ECL_COMPLEX_FLOAT when found.
-
- 13 Feb, 2019 1 commit
-
-
Marius Gerbershagen authored
Fixes #470.
-
- 12 Feb, 2019 1 commit
-
-
Marius Gerbershagen authored
Improves speed and accurracy.
-
- 07 Feb, 2019 1 commit
-
-
Daniel Kochmański authored
-
- 07 Jan, 2019 1 commit
-
-
Marius Gerbershagen authored
Make functions behave as documented, remove use of legacy names. Fixes #462.
-
- 10 Dec, 2018 1 commit
-
-
Marius Gerbershagen authored
-
- 02 Nov, 2018 5 commits
-
-
Exaybachay authored
fix the macro body
-
Exaybachay authored
This reverts commit 878ec343.
-
Exaybachay authored
-
Exaybachay authored
This reverts commit 1ab9f007.
-
Exaybachay authored
-
- 15 Oct, 2018 2 commits
-
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
We support both compare-and-swap and fetch-and-add (via atomic-incf/decf) on the most common places and define an extension interface for compare-and-swap similiar to the one in SBCL. These changes introduce new dependencies on the libatomic_ops macros AO_fetch_compare_and_swap and AO_fetch_and_add.
-
- 23 Sep, 2018 1 commit
-
-