mit-scheme.git
5 years agoFactor out unary->binary predicate conversion.
Taylor R Campbell [Wed, 28 Nov 2018 05:23:10 +0000 (05:23 +0000)]
Factor out unary->binary predicate conversion.

5 years agoAdd flo:<>, as (or flo:< flo:>) for now.
Taylor R Campbell [Wed, 28 Nov 2018 05:18:21 +0000 (05:18 +0000)]
Add flo:<>, as (or flo:< flo:>) for now.

5 years agoTest flo:unordered? both ways too.
Taylor R Campbell [Wed, 28 Nov 2018 05:17:34 +0000 (05:17 +0000)]
Test flo:unordered? both ways too.

5 years agoTest compilation of flonum comparisons both ways.
Taylor R Campbell [Wed, 28 Nov 2018 05:15:41 +0000 (05:15 +0000)]
Test compilation of flonum comparisons both ways.

5 years agoRun the flonum tests both compiled and interpreted.
Taylor R Campbell [Wed, 28 Nov 2018 05:03:39 +0000 (05:03 +0000)]
Run the flonum tests both compiled and interpreted.

5 years agoThese tests now pass on x86-64.
Taylor R Campbell [Wed, 28 Nov 2018 04:47:50 +0000 (04:47 +0000)]
These tests now pass on x86-64.

Need to teach i386, svm, and C about this now.

5 years agoTest compiling in-line calls to the flonum comparators too.
Taylor R Campbell [Wed, 28 Nov 2018 04:45:03 +0000 (04:45 +0000)]
Test compiling in-line calls to the flonum comparators too.

5 years agoTeach LIAR/x86-64 about ordered vs unordered comparisons.
Taylor R Campbell [Wed, 28 Nov 2018 04:43:18 +0000 (04:43 +0000)]
Teach LIAR/x86-64 about ordered vs unordered comparisons.

- Fix miscompilation of ordered comparisons: now the standard
  comparison operators raise exceptions, which trap if you ask.

- Open-code the unordered comparisons flo:safe< &c.

5 years agoFactor out unary->binary predicate conversion.
Taylor R Campbell [Wed, 28 Nov 2018 03:57:18 +0000 (03:57 +0000)]
Factor out unary->binary predicate conversion.

5 years agoExplain what commute-flonum-predicate is doing.
Taylor R Campbell [Wed, 28 Nov 2018 03:48:20 +0000 (03:48 +0000)]
Explain what commute-flonum-predicate is doing.

5 years agoTeach rtlgen to open-code flo:safe-negative? too.
Taylor R Campbell [Wed, 28 Nov 2018 03:45:16 +0000 (03:45 +0000)]
Teach rtlgen to open-code flo:safe-negative? too.

Disabled on all machines for now.

5 years agoTeach rtlgen to open-code safe flonum comparison routines.
Taylor R Campbell [Wed, 28 Nov 2018 03:41:15 +0000 (03:41 +0000)]
Teach rtlgen to open-code safe flonum comparison routines.

Disable on all machines for now.

5 years agoTeach sf about some flonum primitives worth open-coding.
Taylor R Campbell [Wed, 28 Nov 2018 03:39:49 +0000 (03:39 +0000)]
Teach sf about some flonum primitives worth open-coding.

5 years agoFix miscompilation of default optional parameters.
Taylor R Campbell [Wed, 28 Nov 2018 03:01:22 +0000 (03:01 +0000)]
Fix miscompilation of default optional parameters.

Holdover from days when optional parameters were filled with
unassigned reference traps -- LIAR never got the memo.

5 years agoTest for miscompilation of optional arguments.
Taylor R Campbell [Wed, 28 Nov 2018 02:58:46 +0000 (02:58 +0000)]
Test for miscompilation of optional arguments.

5 years agoAdd some tests for primitive floating-point operations.
Taylor R Campbell [Wed, 28 Nov 2018 02:19:02 +0000 (02:19 +0000)]
Add some tests for primitive floating-point operations.

5 years agoTest for exceptions from ordered comparisons.
Taylor R Campbell [Wed, 28 Nov 2018 02:10:00 +0000 (02:10 +0000)]
Test for exceptions from ordered comparisons.

These are currently broken at least on x86 because the compiler
generates the wrong instructions.

When we switch the compiler to generating the right ones we may need to
adjust the runtime to use flo:safeX in certain places.

5 years agoDefine expect-error as an alias for assert-error.
Taylor R Campbell [Tue, 27 Nov 2018 02:25:20 +0000 (02:25 +0000)]
Define expect-error as an alias for assert-error.

The difference is in intent: expect-error means something is broken,
and the test signals an error because of a bug; assert-error means
the correct behaviour is to signal an error.

Pass expect-error or expect-failure as procedures, not as symbols
representing them, throughout the test suite.

Now we can find documented bugs by grepping for expect-error and
expect-failure.

5 years agoImplement random-bytevector!.
Taylor R Campbell [Tue, 27 Nov 2018 02:24:54 +0000 (02:24 +0000)]
Implement random-bytevector!.

5 years agoNote flo:classify and flo:subnormal?.
Taylor R Campbell [Mon, 26 Nov 2018 03:06:31 +0000 (03:06 +0000)]
Note flo:classify and flo:subnormal?.

5 years agoDefine flo:classify and flo:subnormal?.
Taylor R Campbell [Mon, 26 Nov 2018 03:05:22 +0000 (03:05 +0000)]
Define flo:classify and flo:subnormal?.

5 years agoTest escapes in symbol notation too.
Taylor R Campbell [Mon, 26 Nov 2018 03:01:53 +0000 (03:01 +0000)]
Test escapes in symbol notation too.

5 years agoEscape only the character that needs it.
Taylor R Campbell [Mon, 26 Nov 2018 03:01:09 +0000 (03:01 +0000)]
Escape only the character that needs it.

5 years agoRead/write invariance is broken for strings with `|'.
Taylor R Campbell [Mon, 26 Nov 2018 02:52:31 +0000 (02:52 +0000)]
Read/write invariance is broken for strings with `|'.

5 years agoAdd another screw case.
Taylor R Campbell [Mon, 26 Nov 2018 01:55:03 +0000 (01:55 +0000)]
Add another screw case.

From my attempt to work around the other one using
er-macro-transformer...

5 years agoFix typos. Missed this when committing.
Taylor R Campbell [Mon, 26 Nov 2018 01:53:44 +0000 (01:53 +0000)]
Fix typos.  Missed this when committing.

5 years agoAdd test for bug#55090.
Taylor R Campbell [Mon, 26 Nov 2018 01:21:28 +0000 (01:21 +0000)]
Add test for bug#55090.

5 years agoAdd some test cases for (broken) macro expansion.
Taylor R Campbell [Mon, 26 Nov 2018 01:05:03 +0000 (01:05 +0000)]
Add some test cases for (broken) macro expansion.

5 years agoInitial draft of program to grovel over files looking for libraries.
Chris Hanson [Sat, 24 Nov 2018 05:56:17 +0000 (21:56 -0800)]
Initial draft of program to grovel over files looking for libraries.

This eliminates the need for the library names to be tied to the filesystem
structure.

The loader still needs to be enhanced to automatically load the registered
libraries.  For now this is essentially a no-op.

5 years agoDefault os/interprogram-paste needs to return #f or string.
Taylor R Campbell [Sat, 24 Nov 2018 03:53:29 +0000 (03:53 +0000)]
Default os/interprogram-paste needs to return #f or string.

5 years agoRevise unix installation notes to be more specific.
Chris Hanson [Fri, 23 Nov 2018 00:46:54 +0000 (16:46 -0800)]
Revise unix installation notes to be more specific.

5 years agoExplicitly prevent native releases from assuming a scheme exists.
Chris Hanson [Fri, 23 Nov 2018 00:48:20 +0000 (16:48 -0800)]
Explicitly prevent native releases from assuming a scheme exists.

5 years agoArrange for runtime packages to be importable as libraries.
Chris Hanson [Thu, 22 Nov 2018 08:23:53 +0000 (00:23 -0800)]
Arrange for runtime packages to be importable as libraries.

5 years agoPass IS_NATIVE_RELEASE to microcode during configuration.
Chris Hanson [Tue, 20 Nov 2018 03:57:38 +0000 (19:57 -0800)]
Pass IS_NATIVE_RELEASE to microcode during configuration.

5 years agoFix create-makefiles.sh to use arch consistently.
Chris Hanson [Tue, 20 Nov 2018 03:50:37 +0000 (19:50 -0800)]
Fix create-makefiles.sh to use arch consistently.

5 years agoChange configure.ac to gobble up arch from ".native-release-marker".
Chris Hanson [Tue, 20 Nov 2018 00:33:44 +0000 (16:33 -0800)]
Change configure.ac to gobble up arch from ".native-release-marker".

5 years agoUse flo:hypot to compute inexact magnitudes with edge caess.
Taylor R Campbell [Tue, 20 Nov 2018 09:18:03 +0000 (09:18 +0000)]
Use flo:hypot to compute inexact magnitudes with edge caess.

Maybe not the best way but it'll do for now.

5 years agoTest angles of partly infinite complex numbers.
Taylor R Campbell [Tue, 20 Nov 2018 09:15:53 +0000 (09:15 +0000)]
Test angles of partly infinite complex numbers.

5 years agoTeach relerr to return 0 if eqv or 1 if not for zero or inf.
Taylor R Campbell [Tue, 20 Nov 2018 09:15:20 +0000 (09:15 +0000)]
Teach relerr to return 0 if eqv or 1 if not for zero or inf.

This way we confirm infinite results and the sign of zero.

Fix up some test cases that this broke.

5 years agomagnitude is busted when both components are infinite.
Taylor R Campbell [Tue, 20 Nov 2018 08:48:55 +0000 (08:48 +0000)]
magnitude is busted when both components are infinite.

5 years agoFix harmless typo.
Taylor R Campbell [Tue, 20 Nov 2018 07:01:43 +0000 (07:01 +0000)]
Fix harmless typo.

Accidentally using base 2 set this bound far lower than it needed to
be, but this branch isn't necessary anyway; it just skips a call to
exp that would have given the same result.

5 years agoRedo some of the floating-point parameters. Test them.
Taylor R Campbell [Tue, 20 Nov 2018 06:55:35 +0000 (06:55 +0000)]
Redo some of the floating-point parameters.  Test them.

My initial attempt at these went wrong in various ways, oops.

5 years agoFix nonsense error analysis in logit1/2+.
Taylor R Campbell [Tue, 20 Nov 2018 06:34:54 +0000 (06:34 +0000)]
Fix nonsense error analysis in logit1/2+.

The Sterbenz lemma does not apply here after all, not sure why I
thought it did.

5 years agoFix overflow in logistic-1/2.
Taylor R Campbell [Tue, 20 Nov 2018 06:34:38 +0000 (06:34 +0000)]
Fix overflow in logistic-1/2.

5 years agoTest some screw cases for logistic-1/2.
Taylor R Campbell [Tue, 20 Nov 2018 06:33:18 +0000 (06:33 +0000)]
Test some screw cases for logistic-1/2.

5 years agoCheck all four quadrants of complex asin, acos, atan.
Taylor R Campbell [Mon, 19 Nov 2018 01:40:30 +0000 (01:40 +0000)]
Check all four quadrants of complex asin, acos, atan.

5 years agoAvoid overflow in sqrt(1 - z^2) with sqrt(1 - z)*sqrt(1 + z) in asin.
Taylor R Campbell [Sun, 18 Nov 2018 23:06:46 +0000 (23:06 +0000)]
Avoid overflow in sqrt(1 - z^2) with sqrt(1 - z)*sqrt(1 + z) in asin.

Strike off a couple xfails.  Others remain because the branch cuts
are busted.

5 years agoTweak acos tests to clarify and reduce rounding errors.
Taylor R Campbell [Mon, 19 Nov 2018 01:07:29 +0000 (01:07 +0000)]
Tweak acos tests to clarify and reduce rounding errors.

5 years agoDefine some more complex trig tests, several currently broken.
Taylor R Campbell [Sun, 18 Nov 2018 22:31:36 +0000 (22:31 +0000)]
Define some more complex trig tests, several currently broken.

5 years agoImplement handling of traps under macOS.
Chris Hanson [Mon, 19 Nov 2018 05:01:47 +0000 (21:01 -0800)]
Implement handling of traps under macOS.

5 years agoChange .native-release-marker to contain arch.
Chris Hanson [Mon, 19 Nov 2018 02:45:00 +0000 (18:45 -0800)]
Change .native-release-marker to contain arch.

5 years agoMove string-for-primitive to (runtime).
Chris Hanson [Mon, 19 Nov 2018 02:44:24 +0000 (18:44 -0800)]
Move string-for-primitive to (runtime).

5 years agoFix definition of relerr.
Taylor R Campbell [Sun, 18 Nov 2018 06:32:51 +0000 (06:32 +0000)]
Fix definition of relerr.

The expected magnitude should be, well, the magnitude of the expected
value, not the one we actually computed!

Fortunately it doesn't change the outcome of any of the tests here.

5 years agoUse complex:1+ and complex:-1+.
Taylor R Campbell [Sun, 18 Nov 2018 06:20:50 +0000 (06:20 +0000)]
Use complex:1+ and complex:-1+.

No functional change but this makes it less likely that someone might
tweak the argument order, which tend sto matter for preserving things
like signed zeros.

5 years agoNote corrected atan branch cut.
Taylor R Campbell [Sun, 18 Nov 2018 06:18:25 +0000 (06:18 +0000)]
Note corrected atan branch cut.

5 years agoSome more atan tests for real values.
Taylor R Campbell [Sun, 18 Nov 2018 06:05:10 +0000 (06:05 +0000)]
Some more atan tests for real values.

5 years agoInvent complex:log1m to get correct branch cut in atan on exact inputs.
Taylor R Campbell [Sun, 18 Nov 2018 05:34:23 +0000 (05:34 +0000)]
Invent complex:log1m to get correct branch cut in atan on exact inputs.

Not going to export it for now without further thought, though.

5 years agoAdd some atan tests.
Taylor R Campbell [Sun, 18 Nov 2018 05:17:32 +0000 (05:17 +0000)]
Add some atan tests.

Currently (atan -2i) is broken because of an unfortunate consequence
of exact Scheme arithmetic failing to propagate sign changes through
zero like floating-point does.

5 years agoAdd note about signed zero in complex notation.
Taylor R Campbell [Sun, 18 Nov 2018 04:11:50 +0000 (04:11 +0000)]
Add note about signed zero in complex notation.

5 years agoFix printing signed zero imaginary part.
Taylor R Campbell [Sun, 18 Nov 2018 04:09:23 +0000 (04:09 +0000)]
Fix printing signed zero imaginary part.

5 years agoMore signed zero screw cases in complex numbers.
Taylor R Campbell [Sun, 18 Nov 2018 04:04:59 +0000 (04:04 +0000)]
More signed zero screw cases in complex numbers.

5 years agoSome more cases.
Taylor R Campbell [Sun, 18 Nov 2018 04:00:17 +0000 (04:00 +0000)]
Some more cases.

5 years agoRespect signed zero in complex real part.
Taylor R Campbell [Sun, 18 Nov 2018 03:58:40 +0000 (03:58 +0000)]
Respect signed zero in complex real part.

5 years agoTest some complex cases. We lose on signed zero (again).
Taylor R Campbell [Sun, 18 Nov 2018 03:56:31 +0000 (03:56 +0000)]
Test some complex cases.  We lose on signed zero (again).

5 years agoAdd note about <= and >= fix.
Taylor R Campbell [Sun, 18 Nov 2018 03:38:52 +0000 (03:38 +0000)]
Add note about <= and >= fix.

5 years agoTeach (log1p x) to return complex results for real x < -1.
Taylor R Campbell [Sun, 18 Nov 2018 03:36:52 +0000 (03:36 +0000)]
Teach (log1p x) to return complex results for real x < -1.

5 years agoAdd some log1p edge cases, not all working.
Taylor R Campbell [Sun, 18 Nov 2018 03:35:43 +0000 (03:35 +0000)]
Add some log1p edge cases, not all working.

5 years agoTest all of the comparison procedures without SF's help.
Taylor R Campbell [Sun, 18 Nov 2018 03:34:32 +0000 (03:34 +0000)]
Test all of the comparison procedures without SF's help.

5 years agoRemove buggy `optimization' of (<= x y) into (not (> x y)).
Taylor R Campbell [Sun, 18 Nov 2018 03:33:15 +0000 (03:33 +0000)]
Remove buggy `optimization' of (<= x y) into (not (> x y)).

5 years agoTest without the sf fakeout, xfail for now.
Taylor R Campbell [Sun, 18 Nov 2018 03:29:10 +0000 (03:29 +0000)]
Test without the sf fakeout, xfail for now.

5 years ago(<= x y) is not (not (> x y)) in the presence of NaN.
Taylor R Campbell [Sun, 18 Nov 2018 03:26:52 +0000 (03:26 +0000)]
(<= x y) is not (not (> x y)) in the presence of NaN.

5 years agoFake out sf so we actually test the <= and >= procedures here.
Taylor R Campbell [Sun, 18 Nov 2018 03:25:17 +0000 (03:25 +0000)]
Fake out sf so we actually test the <= and >= procedures here.

5 years agoTest equality and ordering of various things with NaN.
Taylor R Campbell [Sun, 18 Nov 2018 03:10:04 +0000 (03:10 +0000)]
Test equality and ordering of various things with NaN.

Alas, <= and >= are broken.

5 years agoEmpty out host-adapter now that the release is out.
Chris Hanson [Sat, 17 Nov 2018 07:07:17 +0000 (23:07 -0800)]
Empty out host-adapter now that the release is out.

5 years agoTweak note to note how to get human-readable names.
Taylor R Campbell [Sun, 18 Nov 2018 02:10:28 +0000 (02:10 +0000)]
Tweak note to note how to get human-readable names.

5 years agoNote more floating-point edge case bug fixes.
Taylor R Campbell [Sun, 18 Nov 2018 01:48:24 +0000 (01:48 +0000)]
Note more floating-point edge case bug fixes.

5 years agoTest (make-polar nan 0) is nan.
Taylor R Campbell [Sun, 18 Nov 2018 01:47:06 +0000 (01:47 +0000)]
Test (make-polar nan 0) is nan.

5 years agoMake (make-polar magnitude 0) return magnitude.
Taylor R Campbell [Sun, 18 Nov 2018 01:44:49 +0000 (01:44 +0000)]
Make (make-polar magnitude 0) return magnitude.

5 years ago(make-polar mag 0) should always be mag even if infinite.
Taylor R Campbell [Sun, 18 Nov 2018 01:42:55 +0000 (01:42 +0000)]
(make-polar mag 0) should always be mag even if infinite.

5 years agoFix 0 * inf.
Taylor R Campbell [Sun, 18 Nov 2018 01:38:28 +0000 (01:38 +0000)]
Fix 0 * inf.

5 years agoBug: 0 * inf should be NaN, but if the 0 is exact it gives 0.
Taylor R Campbell [Sun, 18 Nov 2018 01:36:25 +0000 (01:36 +0000)]
Bug: 0 * inf should be NaN, but if the 0 is exact it gives 0.

5 years agoFix release note on floating-point exceptions.
Taylor R Campbell [Sun, 18 Nov 2018 01:19:30 +0000 (01:19 +0000)]
Fix release note on floating-point exceptions.

5 years agoNote bug with reading and printing nonfinite complex parts.
Taylor R Campbell [Sat, 17 Nov 2018 23:33:41 +0000 (23:33 +0000)]
Note bug with reading and printing nonfinite complex parts.

5 years agoParse and print nonfinite parts in rectangular complex numbers.
Taylor R Campbell [Sat, 17 Nov 2018 23:31:56 +0000 (23:31 +0000)]
Parse and print nonfinite parts in rectangular complex numbers.

5 years agoAdd some more nonfinite complex screw cases.
Taylor R Campbell [Sat, 17 Nov 2018 23:21:57 +0000 (23:21 +0000)]
Add some more nonfinite complex screw cases.

5 years agoRevert "Remove workaround for 9.2 compiler bug."
Taylor R Campbell [Sat, 17 Nov 2018 09:15:26 +0000 (09:15 +0000)]
Revert "Remove workaround for 9.2 compiler bug."

This reverts commit 7828111b77fb53e34b365abc775148f49eabe1d2.

Can't keep this change until a new release has a compiler without
the bug.

5 years agoAdd a directory of pending release notes.
Taylor R Campbell [Sat, 17 Nov 2018 09:14:14 +0000 (09:14 +0000)]
Add a directory of pending release notes.

These are in separate files in no particular order so that we don't
have merge conflicts when people merge branches with their own
release notes.

When a release goes out we can just clear the directory and start
over.

Some of these actually went out in 10.1 but didn't make it into the
release notes (and a couple may have been slightly broken in 10.1
anyway).

5 years agoAdd some complex infinite screw cases, xfail.
Taylor R Campbell [Sat, 17 Nov 2018 09:13:21 +0000 (09:13 +0000)]
Add some complex infinite screw cases, xfail.

5 years agoEliminate more string-copy calls.
Chris Hanson [Sat, 17 Nov 2018 06:45:20 +0000 (22:45 -0800)]
Eliminate more string-copy calls.

5 years agoEliminate now-unnecessary string-copy calls.
Chris Hanson [Sat, 17 Nov 2018 04:44:44 +0000 (20:44 -0800)]
Eliminate now-unnecessary string-copy calls.

5 years agogcnote: When heap runs low, abort just the current/console thread.
Matt Birkholz [Fri, 16 Nov 2018 02:14:56 +0000 (19:14 -0700)]
gcnote: When heap runs low, abort just the current/console thread.

5 years agoruntime/gcdemn: Update daemon descriptions.
Matt Birkholz [Fri, 16 Nov 2018 02:09:36 +0000 (19:09 -0700)]
runtime/gcdemn: Update daemon descriptions.

5 years agoruntime/http-io: request body can be #f
Matt Birkholz [Sun, 11 Nov 2018 19:05:48 +0000 (12:05 -0700)]
runtime/http-io: request body can be #f

5 years agomcrypt/configure.ac: typo
Matt Birkholz [Sun, 11 Nov 2018 16:03:49 +0000 (09:03 -0700)]
mcrypt/configure.ac: typo

5 years agoffi/build: typo, free variable
Matt Birkholz [Sat, 10 Nov 2018 19:56:47 +0000 (12:56 -0700)]
ffi/build: typo, free variable

5 years agoRevert "Revert "Remove workaround for 9.2 compiler bug.""
Taylor R Campbell [Fri, 16 Nov 2018 17:01:39 +0000 (17:01 +0000)]
Revert "Revert "Remove workaround for 9.2 compiler bug.""

This reverts commit 690adab07f3f98ccc53d38a75347f184e8811248.

Let's try this again.

5 years agoMake flo:integer? answer true only for finite inputs.
Taylor R Campbell [Fri, 16 Nov 2018 17:00:10 +0000 (17:00 +0000)]
Make flo:integer? answer true only for finite inputs.

5 years agoAdd tests for integer?.
Taylor R Campbell [Fri, 16 Nov 2018 16:57:59 +0000 (16:57 +0000)]
Add tests for integer?.

It incorrectly reports infinities as integers, so xfail.

5 years agoConfirm that complex flonum components survive read/write in hex.
Taylor R Campbell [Fri, 16 Nov 2018 16:48:00 +0000 (16:48 +0000)]
Confirm that complex flonum components survive read/write in hex.

5 years agoTeach the printer to print inexacts and complexes in hexadecimal.
Taylor R Campbell [Fri, 16 Nov 2018 16:46:08 +0000 (16:46 +0000)]
Teach the printer to print inexacts and complexes in hexadecimal.