diff --git a/README.md b/README.md index 8fb1f875a..484438ac7 100644 --- a/README.md +++ b/README.md @@ -98,9 +98,9 @@ Then, select one of the following targets and `make` it according to your purpos | Target | Description |-------------|------------- -| `all` | Build shared-library `libmeevax.0.5.302.so` and executable `meevax`. +| `all` | Build shared-library `libmeevax.0.5.303.so` and executable `meevax`. | `install` | Copy files into `/usr/local` directly. -| `package` | Generate debian package `meevax_0.5.302_amd64.deb` (only Ubuntu). The generated package can be installed by `sudo apt install build/meevax_0.5.302_amd64.deb`. +| `package` | Generate debian package `meevax_0.5.303_amd64.deb` (only Ubuntu). The generated package can be installed by `sudo apt install build/meevax_0.5.303_amd64.deb`. | `test` | Test executable `meevax`. This target requires Valgrind to be installed. | `uninstall` | Remove files copied to `/usr/local` directly by target `install`. diff --git a/VERSION b/VERSION index 75bb5ce6f..fc1235cb1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.5.302 +0.5.303 diff --git a/basis/srfi-144.ss b/basis/srfi-144.ss index c77bf622d..d137b821d 100644 --- a/basis/srfi-144.ss +++ b/basis/srfi-144.ss @@ -1,100 +1,22 @@ (define-library (srfi 144) (import (only (meevax binary64) - FP_FAST_FMA - binary64-denormalized? - binary64-epsilon - binary64-exponent - binary64-fractional-part - binary64-fused-multiply-add - binary64-greatest - binary64-integer-log-binary - binary64-integral-part - binary64-least - binary64-log-binary - binary64-max - binary64-min - binary64-normalized-fraction - binary64-normalized? - binary64-remquo - binary64-sign-bit - binary64? - ) + binary64-denormalized? binary64-epsilon binary64-exponent + binary64-fractional-part binary64-fused-multiply-add + binary64-greatest binary64-integer-log-binary + binary64-integral-part binary64-least binary64-log-binary + binary64-max binary64-min binary64-normalized-fraction + binary64-normalized? binary64-remquo binary64-sign-bit binary64?) (only (meevax inexact) - acosh - asinh - atanh - copysign - cosh - cyl_bessel_j - cyl_neumann - e - erf - erfc - euler - expm1 - fabs - ldexp - lgamma - log1p - nextafter - phi - pi - sinh - tanh - tgamma - ) + acosh asinh atanh copysign cosh cyl_bessel_j cyl_neumann e erf erfc + euler expm1 fabs ldexp lgamma log1p nextafter phi pi sinh tanh + tgamma) (only (scheme base) - * - + - - - / - < - <= - = - > - >= - and - car - cdr - ceiling - define - denominator - even? - expt - floor - if - inexact - integer? - lambda - let - negative? - numerator - odd? - or - positive? - quotient - remainder - round - square - truncate - values - zero? - ) + * + - / < <= = > >= and car cdr ceiling cond-expand define + denominator even? expt floor if inexact integer? lambda let + negative? numerator odd? or positive? quotient remainder round + square truncate values zero?) (only (scheme inexact) - acos - asin - atan - cos - exp - finite? - infinite? - log - nan? - sin - sqrt - tan - ) - ) + acos asin atan cos exp finite? infinite? log nan? sin sqrt tan)) (export fl-e fl-1/e fl-e-2 fl-e-pi/4 fl-log2-e fl-log10-e fl-log-2 fl-1/log-2 fl-log-3 fl-log-pi fl-log-10 fl-1/log-10 fl-pi fl-1/pi fl-2pi fl-pi/2 @@ -212,7 +134,10 @@ (define fl-epsilon binary64-epsilon) - (define fl-fast-fl+* FP_FAST_FMA) + (define fl-fast-fl+* + (cond-expand + (FP_FAST_FMA #f) + (else #f))) (define fl-integer-exponent-zero (binary64-integer-log-binary 0.0)) diff --git a/configure/version.cpp b/configure/version.cpp index fbdb43d01..3c314a36d 100644 --- a/configure/version.cpp +++ b/configure/version.cpp @@ -40,6 +40,11 @@ namespace meevax::inline kernel make_symbol(std::endian::native == std::endian::little ? "little-endian" : "big-endian"), make_symbol("${PROJECT_NAME}"), make_symbol("${PROJECT_NAME}-${PROJECT_VERSION}") + + #ifdef FP_FAST_FMA + , make_symbol("FP_FAST_FMA") + #endif + #if __cpp_lib_math_special_functions , make_symbol("__cpp_lib_math_special_functions") #endif diff --git a/src/kernel/boot.cpp b/src/kernel/boot.cpp index 84e2fd35a..90aba7752 100644 --- a/src/kernel/boot.cpp +++ b/src/kernel/boot.cpp @@ -519,12 +519,6 @@ namespace meevax::inline kernel library.define("binary64-epsilon", std::numeric_limits::epsilon()); - #ifdef FP_FAST_FMA - library.define("FP_FAST_FMA", true); - #else - library.define("FP_FAST_FMA", false); - #endif - library.define("binary64-integral-part", [](let const& xs) { auto integral_part = 0.0;