forth: mixed/double-cell math (S>D M* UM* UM/MOD FM/MOD SM/REM */ */MOD); Hayes 342→446 (69%)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
This commit is contained in:
@@ -87,7 +87,7 @@ Representation:
|
||||
### Phase 5 — Core Extension + optional word sets
|
||||
- [x] Memory: `CREATE`, `HERE`, `ALLOT`, `,`, `C,`, `CELL+`, `CELLS`, `ALIGN`, `ALIGNED`, `2!`, `2@`
|
||||
- [x] Unsigned compare: `U<`, `U>`
|
||||
- [ ] Mixed/double-cell math: `S>D`, `M*`, `UM*`, `UM/MOD`, `FM/MOD`, `SM/REM`, `*/`, `*/MOD`
|
||||
- [x] Mixed/double-cell math: `S>D`, `M*`, `UM*`, `UM/MOD`, `FM/MOD`, `SM/REM`, `*/`, `*/MOD`
|
||||
- [ ] Double-cell ops: `D+`, `D-`, `D=`, `D<`, `D0=`, `2DUP`, `2DROP`, `2OVER`, `2SWAP` (already), plus `D>S`, `DABS`, `DNEGATE`
|
||||
- [ ] Number formatting: `<#`, `#`, `#S`, `#>`, `HOLD`, `SIGN`, `.R`, `U.`, `U.R`
|
||||
- [ ] Parsing/dictionary: `WORD`, `FIND`, `EXECUTE`, `'`, `[']`, `LITERAL`, `POSTPONE`, `>BODY`, `DOES>`
|
||||
@@ -106,6 +106,16 @@ Representation:
|
||||
|
||||
_Newest first._
|
||||
|
||||
- **Phase 5 — mixed/double-cell math; Hayes 342→446 (69%).** Added
|
||||
`S>D`, `D>S`, `M*`, `UM*`, `UM/MOD`, `FM/MOD`, `SM/REM`, `*/`, `*/MOD`.
|
||||
Doubles ride on the stack as `(lo, hi)` with `hi` on top.
|
||||
Helpers `forth-double-push-{u,s}` / `forth-double-from-cells-{u,s}`
|
||||
split & rebuild via 32-bit unsigned mod/div, picking the negative
|
||||
path explicitly so we don't form `2^64 + small` (float precision
|
||||
drops at ULP=2^12 once you cross 2^64). `M*`/`UM*` use bignum
|
||||
multiply then split; `*/`/`*/MOD` use bignum intermediate and
|
||||
truncated division. Hayes: 446 pass / 185 error / 7 fail.
|
||||
|
||||
- **Phase 5 — memory primitives + unsigned compare; Hayes 268→342 (53%).**
|
||||
Added `CREATE`/`HERE`/`ALLOT`/`,`/`C,`/`CELL+`/`CELLS`/`ALIGN`/`ALIGNED`/
|
||||
`2!`/`2@`/`U<`/`U>`. Generalised `@`/`!`/`+!` to dispatch on address
|
||||
|
||||
Reference in New Issue
Block a user