Commit graph

30 commits

Author SHA1 Message Date
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
8cc0ae7222 complex float: add compiler optimizations and ffi definitions
- 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.
2019-05-15 16:35:16 +02:00
Marius Gerbershagen
60870ae9b0 use correct unnormalized values for minimum float constants
Fixes #470.
2019-02-13 20:24:26 +01:00
Daniel Kochmański
ed5ecd03eb ieee-floats: fix builds with --with-ieee-fp=no
Functions to print (nan,float)-to-string and and predicates are still
available, but ext:*-float-*-infinity aren't available if ECL is built
with option `--with-ieee-fp=no`.
2016-08-11 22:38:30 +02:00
Daniel Kochmański
899f51106e cmpc: when infinity is used, emit macro "INFINITY"
and "-INFINITY" for negative infinity. These corner-cases lead to
compilation error, so no regression will be imposed even against
non-c99 compilers.

INFINITY and NAN macros are introduced by C99 standard, so such code
requires C-backend to support this math extension. Fixes #156.

Signed-off-by: Daniel Kochmański <daniel@turtleware.eu>
2015-09-04 21:32:08 +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
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
e92f8c418f Added a 'machine' object that represents the features of a cross compilation target in the compiler. Inline forms now are created with one such machine on mind, and recreated if the machine changes. 2013-06-02 22:49:54 +02:00
Juan Jose Garcia Ripoll
c2e2171dc0 Avoid recursive invocation of C1EXPR by allowing the C1 processors to act like macros, returning new forms to be processed. Remove also the CATCH for compiler errors, since we now rely on conditions for signal handling. 2011-12-27 12:36:52 +01:00
Juan Jose Garcia Ripoll
e361ceada2 Check for NaNs among the compiled constants. 2011-12-19 22:41:11 +01:00
Alexander Gavrilov
f38e3d3d67 Use a c-inline transformation to represent SSE constants in code. 2011-05-22 19:39:00 +02:00
Juan Jose Garcia Ripoll
ab8b15069d Small hack to allow cmpct.lsp be compiled by the bytecodes compiler. 2011-05-21 16:25:10 +02:00
Juan Jose Garcia Ripoll
e466268348 In cmpct.lsp, 0.0l0 was being compiled as -0.0l0 2010-11-01 19:31:39 +01:00
Juan Jose Garcia Ripoll
0abe27afb1 The object associated to the VV location is now stored in it 2010-06-05 23:16:17 +02:00
Juan Jose Garcia Ripoll
524f0792a5 VV/VV-TEMP locations are now structures 2010-06-05 21:39:20 +02:00
Juan Jose Garcia Ripoll
9ede271245 In cmpct.lsp, locations VV were nested (VV (VV index)). 2010-05-15 21:52:47 +02:00
Juan Jose Garcia Ripoll
d8dac21c8f The c1form-parents field is now a list of the nodes above the current one. We provide functions to rewrite the list when moving the node and speed up FIND-NODE-IN-LIST using this list. 2010-05-11 17:25:16 +02:00
Juan Jose Garcia Ripoll
854349437f Constants are always produced as fresh new locations so that we do not overwrite the parent and other fields 2010-05-11 16:45:12 +02:00
Juan Jose Garcia Ripoll
27dfba57f1 The list of generated constants is no longer just floats. 2009-06-19 11:24:53 +02:00
Juan Jose Garcia Ripoll
4d4bd1ed16 The compiler now also uses the cl_core.*_package constants 2009-06-19 11:24:01 +02:00
Juan Jose Garcia Ripoll
f312a7d051 The compiler can now access cl_core for other system wide constants. Currently applied to standard readtable only. 2009-06-19 11:20:30 +02:00
Juan Jose Garcia Ripoll
aee567aeb2 Fixed the inline form of long-float constants in cmpct.lsp 2009-06-15 00:38:38 +02:00
Juan Jose Garcia Ripoll
0b0e026664 Create constants in cl_core for variants of -0.0 and use them in compiled code. IMAGPART now produces signed zeros for negative real numbers. 2009-06-14 11:48:04 +02:00
Juan Jose Garcia Ripoll
037e2776b6 Added support for long double types in the compiler 2008-08-02 20:29:27 +02:00
jgarcia
a59f90871a Emacs modelines for better editing 2008-02-02 19:14:05 +00:00
jgarcia
406be1454e Reduced the number of headers globally included. 2006-10-23 21:13:14 +00:00
jgarcia
a8ba6f5c01 Initital support for long double and immediate short floats. 2006-10-13 17:28:51 +00:00
jgarcia
12799c7305 Move from short/long-float to single/double-float (by L. Brinkhoff) 2006-09-01 15:15:57 +00:00
jgarcia
ee50a03ea4 Use MAKE-LOAD-FORM to compile constants that do not have a readable printed representation (Brian Spilsbury) 2006-05-16 16:18:39 +00:00
jjgarcia
9e747f5fc3 *** empty log message *** 2005-05-04 09:32:03 +00:00