```
\ "3 /mod" for positive numbers without division
: 3/ ( u -- u/3 )
[ 0 1 3 um/mod nip 1+ ] literal um* nip
;
: 3/mod ( u -- ur uq )
dup 3/ swap ( uq u )
over dup 2* + - swap
;
: test ( lo hi -- errors )
2>r 0 r> r> do
i 3/mod \ actual
i 0 3 um/mod \ expected
d= invert - \ tally
loop
;
```
```
\ "3 /mod" for positive numbers without division
: 3/ ( u -- u/3 )
[ 0 1 3 um/mod nip 1+ ] literal um* nip
;
: 3/mod ( u -- ur uq )
dup 3/ swap ( uq u )
over dup 2* + - swap
;
: test ( lo hi -- errors )
r 0 r> r> doi 3/mod \ actual
i 0 3 um/mod \ expected
d= invert - \ tally
loop
;
```
Not very interesting I will admit, although **test** was freakishly fast when I tried it in a host Forth. Testing all 32-bit numbers (4e9 of them) took less than a minute.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (2 / 14) |
Uptime: | 143:46:32 |
Calls: | 10,383 |
Calls today: | 8 |
Files: | 14,054 |
D/L today: |
2 files (1,861K bytes) |
Messages: | 6,417,671 |