Re: exercise in double number arithmetic

Liste des GroupesRevenir à cl forth 
Sujet : Re: exercise in double number arithmetic
De : krishna.myneni (at) *nospam* ccreweb.org (Krishna Myneni)
Groupes : comp.lang.forth
Date : 12. Jul 2024, 13:04:17
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v6r644$310o4$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12
User-Agent : Mozilla Thunderbird
On 7/11/24 10:18, minforth wrote:
Had them somewhere on my drive, but have no access
to my system right now, so could not double-check
whether this is still correct:
 \ Check double symmetric and floored division
 1 8 CELLS 1- LSHIFT CONSTANT MSB
MSB INVERT CONSTANT MINT
 T{ 0. 1. d/rem -> 0. 0. }T
T{ 2. 3. d/rem -> 2. 0. }T
T{ 10. 7. d/rem -> 3. 1. }T
T{ -10. 7. d/rem -> -3. -1. }T
T{ 10. -7. d/rem -> 3. -1. }T
T{ -10. -7. d/rem -> -3. 1. }T
T{ 0 1 2. d/rem -> 0. msb 0 }T
T{ 0 mint 2. d/rem -> 0. msb mint 2/ }T
T{ -1 mint 2dup d/rem -> 0. 1. }T
T{ 1 mint 0 mint d/rem -> 1. 1. }T
T{ 0 mint 1 mint d/rem -> 0 mint 0. }T
T{ -1 mint 2. d/rem -> 1. -1 mint 1 rshift }T
 T{ 10. 7. d/mod -> 3. 1. }T
T{ -10. 7. d/mod -> 4. -2. }T
T{ 10. -7. d/mod -> -4. -2. }T
T{ -10. -7. d/mod -> -3. 1. }T
 T{ 0. 1. d/ -> 0. }T
T{ 20. 7. d/ -> 2. }T
T{ -20. 7. d/ -> -2. }T
T{ 20. -7. d/ -> -2. }T
T{ -20. -7. d/ -> 2. }T
I ran your tests for D/REM and D/ against the source definitions provided by dxf. dxf's D/MOD is your D/REM (I assume your D/MOD is a floored division word). I renamed dxf's D/MOD to D/REM for your tests and commented out your D/MOD tests.
On symmetric division systems, the definition of D/REM below should be reverted to D/MOD as in his original posting
Below is the code and test results, under kForth-64.
--
Krishna
=== begin double-number-division-tests.4th ===
\ Check double symmetric and floored division
\ Posted by minforth on comp.lang.forth on 11 July 2024
include ans-words
include ttester
\ double number division words posted on comp.lang.forth
\ by dxf on 10 July 2024; renamed D/MOD to D/REM
\
\ DUM/MOD ( uq ud -- udrem udquot )
\ DU/MOD ( ud1 ud2 -- udrem udquot )
\ D/REM  ( d1 d2 -- drem dquot ) ( originally D/MOD )
\ D/     ( d1 d2 -- dquot )
2variable d
\ Divide quad by double. Unsigned.
: DUM/MOD ( uq ud -- udrem udquot )
   d 2! [ 16 cells ] literal 0 do
     dup >r  2swap  dup >r  d2*  2swap d2*
     r> 0<  dup d-  2dup d 2@  du< 0=  r> 0<  or
     if  d 2@ d-  2swap 1 0 d+ 2swap  then
   loop  2swap ;
\ Divide doubles. Unsigned.
: DU/MOD ( ud1 ud2 -- udrem udquot )
   0 0 2swap dum/mod ;
\ Divide doubles. Signed. Symmetric; originally D/MOD
: D/REM ( d1 d2 -- drem dquot )
   2 pick  2dup xor 2>r  dabs  2swap dabs
   2swap du/mod  r> 0< if  dnegate  then
   r> 0< if  2swap dnegate 2swap  then ;
\ Divide doubles. Signed symmetric
: D/ ( d1 d2 -- dquot )
    D/REM 2swap 2drop ;
1 8 CELLS 1- LSHIFT CONSTANT MSB
MSB INVERT CONSTANT MINT
TESTING D/REM
T{   0 s>d   1 s>d  d/rem ->  0 s>d  0 s>d }T
T{   2 s>d   3 s>d  d/rem ->  2 s>d  0 s>d }T
T{  10 s>d   7 s>d  d/rem ->  3 s>d  1 s>d }T
T{ -10 s>d   7 s>d  d/rem -> -3 s>d -1 s>d }T
T{  10 s>d  -7 s>d  d/rem ->  3 s>d -1 s>d }T
T{ -10 s>d  -7 s>d  d/rem -> -3 s>d  1 s>d }T
T{  0 1      2 s>d  d/rem -> 0 s>d msb 0 }T
T{  0 mint   2 s>d  d/rem -> 0 s>d msb mint 2/ }T
T{ -1 mint   2dup   d/rem -> 0 s>d  1 s>d }T
T{  1 mint   0 mint d/rem -> 1 s>d  1 s>d }T
T{  0 mint   1 mint d/rem -> 0 mint 0 s>d }T
T{ -1 mint   2 s>d  d/rem -> 1 s>d -1 mint 1 rshift }T
0 [IF]
TESTING D/MOD
T{  10 s>d  7 s>d d/mod ->  3 s>d  1 s>d }T
T{ -10 s>d  7 s>d d/mod ->  4 s>d -2 s>d }T
T{  10 s>d -7 s>d d/mod -> -4 s>d -2 s>d }T
T{ -10 s>d -7 s>d d/mod -> -3 s>d  1 s>d }T
[THEN]
TESTING D/
T{   0 s>d  1 s>d d/ ->  0 s>d }T
T{  20 s>d  7 s>d d/ ->  2 s>d }T
T{ -20 s>d  7 s>d d/ -> -2 s>d }T
T{  20 s>d -7 s>d d/ -> -2 s>d }T
T{ -20 s>d -7 s>d d/ ->  2 s>d }T
=== end double-number-division-tests.4th ===
=== begin execution output ===
include double-number-division-tests
TESTING D/REM
TESTING D/
  ok
=== end execution output ===

Date Sujet#  Auteur
6 Jul 24 * exercise in double number arithmetic69Krishna Myneni
6 Jul 24 +* Re: exercise in double number arithmetic16Ahmed
7 Jul 24 i`* Re: exercise in double number arithmetic15Krishna Myneni
7 Jul 24 i +* Re: exercise in double number arithmetic13Ahmed
7 Jul 24 i i`* Re: exercise in double number arithmetic12Krishna Myneni
7 Jul 24 i i +* Re: exercise in double number arithmetic10Gerry Jackson
8 Jul 24 i i i`* Re: exercise in double number arithmetic9Krishna Myneni
10 Jul 24 i i i `* Re: exercise in double number arithmetic8Gerry Jackson
10 Jul 24 i i i  `* Re: exercise in double number arithmetic7dxf
10 Jul 24 i i i   +- Re: exercise in double number arithmetic1Krishna Myneni
10 Jul 24 i i i   `* Re: exercise in double number arithmetic5dxf
11 Jul 24 i i i    `* Re: exercise in double number arithmetic4Krishna Myneni
11 Jul 24 i i i     `* Re: exercise in double number arithmetic3minforth
12 Jul 24 i i i      `* Re: exercise in double number arithmetic2Krishna Myneni
12 Jul 24 i i i       `- Re: exercise in double number arithmetic1minforth
7 Jul 24 i i `- Re: exercise in double number arithmetic1Ahmed
7 Jul 24 i `- Re: exercise in double number arithmetic1minforth
6 Jul 24 +* Re: exercise in double number arithmetic3Ahmed
7 Jul 24 i`* Re: exercise in double number arithmetic2Krishna Myneni
7 Jul 24 i `- Re: exercise in double number arithmetic1Ahmed
7 Jul 24 +* Re: exercise in double number arithmetic14mhx
7 Jul 24 i`* Re: exercise in double number arithmetic13Ahmed
7 Jul 24 i +- Re: exercise in double number arithmetic1mhx
7 Jul 24 i +* Re: exercise in double number arithmetic2minforth
7 Jul 24 i i`- Re: exercise in double number arithmetic1Ahmed
7 Jul 24 i `* Re: exercise in double number arithmetic9Ahmed
7 Jul 24 i  `* Re: exercise in double number arithmetic8Ahmed
7 Jul 24 i   `* Re: exercise in double number arithmetic7mhx
7 Jul 24 i    +- Re: exercise in double number arithmetic1Ahmed
8 Jul 24 i    `* Re: exercise in double number arithmetic5Krishna Myneni
8 Jul 24 i     `* Re: exercise in double number arithmetic4Ahmed
8 Jul 24 i      +- Re: exercise in double number arithmetic1minforth
8 Jul 24 i      `* Re: exercise in double number arithmetic2Krishna Myneni
8 Jul 24 i       `- Re: exercise in double number arithmetic1Ahmed
14 Jul 24 `* Re: exercise in double number arithmetic35Marc Olschok
14 Jul 24  +- Re: exercise in double number arithmetic1Marc Olschok
15 Jul 24  +* Re: exercise in double number arithmetic12Krishna Myneni
15 Jul 24  i+* Re: exercise in double number arithmetic8minforth
15 Jul 24  ii`* Re: exercise in double number arithmetic7minforth
15 Jul 24  ii `* Re: exercise in double number arithmetic6Ahmed
15 Jul 24  ii  `* Re: exercise in double number arithmetic5minforth
15 Jul 24  ii   +- Re: exercise in double number arithmetic1minforth
15 Jul 24  ii   +- Re: exercise in double number arithmetic1Ahmed
15 Jul 24  ii   `* Re: exercise in double number arithmetic2albert
15 Jul 24  ii    `- Re: exercise in double number arithmetic1minforth
15 Jul 24  i+- Re: exercise in double number arithmetic1Anton Ertl
15 Jul 24  i+- Re: exercise in double number arithmetic1Gerry Jackson
31 Jul 24  i`- Re: exercise in double number arithmetic1Marc Olschok
15 Jul 24  `* Re: exercise in double number arithmetic21minforth
15 Jul 24   `* recursion (was: exercise in double number arithmetic)20Anton Ertl
15 Jul 24    +* Re: recursion10Marc Olschok
15 Jul 24    i`* Re: recursion9Ruvim
15 Jul 24    i +* Re: recursion5Gerry Jackson
15 Jul 24    i i+* Re: recursion2Gerry Jackson
16 Jul 24    i ii`- Re: recursion1Gerry Jackson
16 Jul 24    i i`* Re: recursion2Ruvim
16 Jul 24    i i `- Re: recursion1dxf
16 Jul 24    i +- Re: recursion1mhx
16 Jul 24    i `* Re: recursion2Ruvim
16 Jul 24    i  `- Re: recursion1Ruvim
16 Jul 24    `* Re: recursion9sjack
16 Jul 24     +- Re: recursion1sjack
16 Jul 24     +* Re: recursion4minforth
16 Jul 24     i`* Re: recursion3sjack
16 Jul 24     i `* Re: recursion2minforth
16 Jul 24     i  `- Re: recursion1mhx
17 Jul 24     `* Re: recursion3dxf
22 Jul 24      `* Re: recursion2Stephen Pelc
22 Jul 24       `- Re: recursion1Anton Ertl

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal