words:doubleext2_wordset
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
double number words
Bitte hier Beispiele für die Implementation doppelt genauer Berechnungen ablegen.
Handy Reference Card
Im Gforth sind all diese Worte vorhanden.
Optional Double-Number Word Set
| 2CONSTANT | ( x1 x2 „<spaces>name“ – ) |
| 2LITERAL | compiletime: ( x1 x2 – ) Run-time: ( – x1 x2 ) |
| 2VARIABLE | ( „<spaces>name“ – ) ; d! d@ fehlen im ANS? |
| name Execution: ( – a-addr ) | |
| D+ | ( ud1 ud2 – ud3 ) |
| D- | ( ud1 ud2 – ud3 ) |
| D. | ( d – ) |
| D.R | ( d n – ) |
| D0< | ( d – flag ) |
| D0= | ( xd – flag ) |
| D2* | ( xd1 – xd2 ) |
| D2/ | ( xd1 – xd2 ) |
| D< | ( d1 d2 – flag ) |
| D= | ( xd1 xd2 – flag ) |
| D>S | ( d – n ) |
| DABS | ( d – ud ) |
| DMAX | ( d1 d2 – d3 ) |
| DMIN | ( d1 d2 – d3 ) \d3 is the lesser of d1 and d2. |
| DNEGATE | ( d1 – d2 ) |
| M*/ | ( d1 n1 +n2 – d2 ) ohne rest; integer operation. |
| Multiply d1 by n1 producing the triple-cell intermediate result t. | |
| Divide t by +n2 giving the double-cell quotient d2. | |
| M+ | ( ud1 n – ud2 ) |
Double-Number extension words
More Double-Number Words
Seine Sammlung d-number.fs hat Luca Masini in der VD veröffentlich und freigegeben.
Memory
: d! ( d adr -- ) >r r@ cell + ! r> ! ; \ "d-store" : d@ ( adr -- d ) >r r@ @ r> cell + @ ; \ "d-fetch"
Logic and shift words
: dand ( d d -- d ) rot and >r and r> ; : dinvert ( d -- d ) swap invert swap invert ; : dlshift ( d u -- d ) 0 ?do d2* loop ; : dor ( d d -- d ) rot or >r or r> ; : dnot ( d -- 0.|1. ) d0= abs s>d ; : drshift ( d u -- d ) 0 ?do d2/ loop dabs ; : dxor ( d d -- d ) rot xor >r xor r> ;
d* "d-star"
Dieses d* funktioniert auch auf 64-Bit-Maschinen richtig.
: d* ( ud1 ud2 -- udprod ) >r swap >r 2dup um* 2swap r> * swap r> * + + ;
BTW: Obwohl der Stackeffekt hier „ud“ angibt, ist das Ergebnis auch für
Faktoren mit Vorzeichen richtig (genauso wie bei * ), solange kein Überlauf stattfindet. (Danke Bernd)
Wie funktioniert das eigentlich? –> d-star-collection
—
words/doubleext2_wordset.1293642765.txt.gz · Zuletzt geändert: von 127.0.0.1