home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / source / p4_23dc.seq < prev    next >
Text File  |  1990-04-16  |  1KB  |  30 lines

  1. \ Problem 4.23   04/16/90 16:44:18.64
  2.  
  3. \ This is Forth 83 floored integer division
  4. \ for double numbers using SMITH's coded UMD/MOD
  5. \ Divides two double numbers.  All numbers are signed doubles.
  6. : D/MOD  ( dn1 dn2 -- drem dquot )
  7.         2DUP >R >R              \ Save dn2 complete with sign for later.
  8.         2 PICK  >R              \ Save sign of dn1 for later.
  9.         DABS >R >R              \ Save uddivisor for a moment
  10.         DABS 0 0 R> R>          \ uqdividend uddivisor
  11.         UMD/MOD  2SWAP          \ udquot udrem
  12.         R@ ?DNEGATE             \ apply sign to remainder.
  13.         R> R> R@ SWAP >R XOR    \ find sign of quotient.
  14.         IF   R> R> D+   2SWAP   \ adjust remainder.
  15.              DNEGATE 1. D-      \ adjust quotient.
  16.         ELSE R> R> 2DROP 2SWAP
  17.         THEN  ;                 \ drem dquot
  18.  
  19.  
  20. \ Leave the Forth 83 "floored integer quotient"  result for dn1/dn2
  21. : D/    ( dn1 dn2 -- dquot )
  22.         D/MOD 2SWAP 2DROP ;
  23.  
  24. \ Leave the Forth 83 "floored integer remainder" result for dn1/dn2
  25. : DMOD  ( dn1 dn2 -- drem )
  26.         D/MOD 2DROP ;
  27.  
  28.  
  29.  
  30.