```
\ "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: | 300 |
Nodes: | 16 (2 / 14) |
Uptime: | 40:31:02 |
Calls: | 6,708 |
Calls today: | 1 |
Files: | 12,243 |
Messages: | 5,353,727 |