Commit Graph

327 Commits (53efceb0ade521af1db4651dca8c44ae9dd41bb9)

Author SHA1 Message Date
Jon Harper 53efceb0ad math.integers, comment and simplify bignum/f
change the "while" that could only execute once to "when"
change the f/loop word name to "mantissa-and-guard" since it's what it
computes
change the check against 2^53 to be explicit
2015-07-26 12:33:56 -07:00
Jon Harper 5424ad5586 math.integers, bignum/f, improve performance.
This changes avoids looping many times if the denominator is a power of
2. After this change, the implementation matches the linked sbcl
algorithm.  This was probably a mistake done when porting the algorithm.
Basically, as an optimization, all trailing zeros are removed from the
base2 representation of the denominator to have smaller bignums to
divide. But the previous factor implementation didn't take this into
account when making the initial guess of the shift of the numerator to
obtain a result in the range [2^54-1,2^53]. The loop would then correct
the initial guess by a factor of 2 at each iteration, so it would run as
many iteration as the denominator base2 power reduction, instead of only
a few times. For pathological cases, the speed up is huge (10^4):
1 1000 2^ bignum/f
2015-07-26 12:33:55 -07:00
Jon Harper cc6d90a096 math.integers, fix bignum/f for results in ]0x1.0p-1022,0x0.4p-1022] 2015-07-26 12:33:55 -07:00
John Benediktsson 296974a057 math.parser: remove digits>integer. 2015-07-19 19:18:47 -07:00
John Benediktsson 16c93c7874 math.parser: simplify fix-float. 2015-07-19 17:20:37 -07:00
John Benediktsson 0dbc5e7d67 math.parser: simplify { integer ratio } >base. 2015-07-19 16:57:45 -07:00
John Benediktsson 89e3cc511e math: moving >fraction to math. 2015-07-19 16:57:45 -07:00
John Benediktsson 4cda3fe7c4 math.parser: re-use number-parse and float-parse objects. 2015-07-19 09:58:17 -07:00
Doug Coleman d2ab2e6dd1 math.parser.tests: Fix whitespace. 2015-07-17 15:19:39 -07:00
John Benediktsson c7868226d0 math.parser: simplify using member-eq?. 2015-07-16 09:55:33 -07:00
John Benediktsson 33a62c7f9d math.parser: with-radix-char quot shouldn't get called with ``f``. 2015-07-16 08:51:58 -07:00
John Benediktsson e280bafabe math.parser: remove unnecessary with-no-radix, thanks @jonenst! 2015-07-16 07:35:51 -07:00
John Benediktsson f6f596f40f math.parser: okay time for sleep, maybe this works, sorry git history. 2015-07-14 22:48:08 -07:00
John Benediktsson 5b58e1d3e8 math.parser: fix a regression. 2015-07-14 22:05:25 -07:00
John Benediktsson 94bb834eae math.parser: fix ``"-.5" dec>``. 2015-07-14 20:16:34 -07:00
John Benediktsson 866b40271d math.parser: fix "most-negative-fixnum number>string string>number fixnum?". 2015-07-14 20:03:33 -07:00
Doug Coleman 43d6f1d3e2 factor: Retrying on the unit tests. Also normalize some syntax with FUNCTION:. 2015-07-02 17:28:17 -07:00
Doug Coleman 59f3b1ea57 Revert "factor: rename [ ] [ ] unit-test -> { } [ ] unit-test using a refactoring tool!"
Needs a bit more work.

This reverts commit 7e54cc2824.
2015-07-02 13:47:06 -07:00
Doug Coleman 7e54cc2824 factor: rename [ ] [ ] unit-test -> { } [ ] unit-test using a refactoring tool! 2015-07-02 11:36:08 -07:00
Doug Coleman 999aa7c897 factor: clean up spaces in -tests files 2015-07-02 10:34:01 -07:00
Doug Coleman e3cb325040 factor: clean up whitespace in -docs files 2015-07-02 10:31:22 -07:00
Doug Coleman 69ee8b9190 core, basis: Don't use the IN: foo.private feature and undocument it.
It only works well when you are loading code dynamically.
2015-06-30 08:51:07 -07:00
Björn Lindqvist ed702209ce VM: fix bignum>fixnum-strict conversion, previously most-negative-fixnum
>bignum bignum>fixnum-strict didn't work
2015-06-29 08:19:42 +02:00
Doug Coleman 44e8e7b344 primitives: Change PRIMITIVE: to check that the word is in that vocabulary and the stack effect is correct.
Use PRIMITIVE: in core/ and basis/
2015-06-25 18:02:03 -07:00
John Benediktsson 7dfe023854 math.integers: add some more tests for bit?. 2015-06-17 20:23:21 -07:00
John Benediktsson 621b50a8e5 cpu: enable bit-test intrinsic for fixnum-bit?. 2015-06-17 19:11:10 -07:00
John Benediktsson db9cfeeae2 math.integers: simplify fixnum-bit?. 2015-06-17 18:42:11 -07:00
John Benediktsson ed786070e2 math.integers: fixnum-bit? should not use fixnum-shift-fast. 2015-06-17 08:22:00 -07:00
John Benediktsson ccddbebf94 math.parser: slightly faster ((pow)). 2015-06-11 20:04:44 -07:00
John Benediktsson d60d098c11 math.integers: speedup to fixnum-bit?. 2015-06-07 11:08:57 -07:00
John Benediktsson 2c3492a916 minor cleanup to some docs. 2015-05-13 16:09:14 -07:00
John Benediktsson 9033a28c09 math.parser: simplify store-exponent. 2014-11-29 14:31:23 -08:00
John Benediktsson 38bc43b968 math.parser: whoops, this part shouldn't have been committed. 2014-11-29 12:54:48 -08:00
John Benediktsson cbba812d7e math.parser: remove float>string, speedup format-float. 2014-11-29 12:47:57 -08:00
Doug Coleman 632ee276e1 core: Remove trailing whitespace. 2014-10-31 01:14:31 -07:00
John Benediktsson 53a9c43b31 math.parser: fix docs for >base and base>. 2014-06-07 12:05:52 -07:00
John Benediktsson 24ad4e9424 math: remove out-of-fixnum-range error. 2014-06-07 09:50:50 -07:00
John Benediktsson eeaa91d6c1 vm: using bignum>fixnum-strict in integer>fixnum-strict. 2014-06-07 09:46:05 -07:00
John Benediktsson 309ce3aa69 math: adding a simple test for bignum_square. 2014-06-06 10:58:58 -07:00
John Benediktsson 57f9d78892 improve help by linking to types directly. 2014-05-23 20:20:15 -07:00
John Benediktsson 98935b7f15 docs: change ``{ $quotation "( x -- y )" }`` to ``{ $quotation ( x -- y ) }``. 2014-05-18 20:09:10 -07:00
John Benediktsson ede21dfb56 math: fix docs for next-power-of-2 and some tests. 2014-02-06 17:23:54 -08:00
John Benediktsson 63514bbbf8 math: fix quot stack effect in unless-zero. 2014-01-07 08:25:18 -08:00
John Benediktsson 8aac272c58 math.floats: shorten definitions using "bit?". 2013-11-25 11:07:06 -08:00
John Benediktsson 5793229dae math.floats: fix M\ float /mod. 2013-03-29 08:48:28 -07:00
John Benediktsson 37ca02a84e math.floats: adding some tests for M\ float mod. 2013-03-29 08:30:56 -07:00
John Benediktsson ff72d10fda math.parser: don't use variables in M\ ratio >base. 2013-03-28 14:31:55 -07:00
John Benediktsson 412382abca math.parser: exactly allocate sbuf for fixnums. 2013-03-28 11:55:52 -07:00
John Benediktsson bf0f6476f5 math.parser: do two digits down until 10. 2013-03-27 18:01:59 -07:00
John Benediktsson b5b0839426 math.parser: faster using byte-arrays. 2013-03-27 17:54:24 -07:00