home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / tutor / l2p080 < prev    next >
Text File  |  1990-07-15  |  5KB  |  105 lines

  1.        ╔════════════════════════════════════════════════════╗
  2.        ║ Lesson 2 Part 080  F-PC 3.5 Tutorial by Jack Brown ║
  3.        ╚════════════════════════════════════════════════════╝
  4.  
  5.      ┌─────────────────────────────────────────────────────────┐
  6.      │  Floored Division  vs  Symmetric or truncated Division  │
  7.      └─────────────────────────────────────────────────────────┘
  8.  
  9. You already know that a number on Forth's parameter stack is a 16 bit
  10. integer.  What this means is that when we divide two numbers we are
  11. going to get an integer result.  The problem is there is more than one
  12. way to define what the result should be.  There is the intuitive method
  13. called Symmetric Integer Division that is used by most computer
  14. languages including the FORTH79 Standard Forth and FIG Forth.  An
  15. alternative method is Floored Integer Division. This method is used by
  16. the FORTH83 Standard Forth's and that means F-PC.  Some say that Floored
  17. integer division is superior to Symetric integer division but we will
  18. let you be the judge.  Anyway we don't really have any choice since we
  19. are working with a FORTH83 Standard system.
  20.  
  21. First some notation and the integer division equations that any integer
  22. division algorithm must satisfy.
  23.  
  24.   m = dividend,  n = divisor,  q = quotient,  and   r = remainder.
  25.  
  26. The equations are:
  27.                           m           r
  28.   m = n q + r     or     ---  =  q + ---
  29.                           n           n
  30.  
  31. Integer division is a mathematical function of two integers ( the
  32. dividend m and the divisor m ) that results in and integer quotient q
  33. and and integer remainder r.  Whatever the algorithm or type of integer
  34. divison the above equations must be satisfied.
  35.  
  36. The Forth words that are used for (floored) integer division in FORTH83
  37. are:
  38.  
  39.      /MOD  ( m n -- r q )   \ Leave remainder and floored quotient.
  40.      /     ( m n -- q )     \ Leave floored quotient only.
  41.      MOD   ( m n -- r )     \ Leave remainder only.
  42.  
  43. In FORTH83 the integer quotient q that is left is the FLOOR of the
  44. real quotient (decimal answer) that results from m/n.        # elevator
  45.                                                                  4-|--
  46. Do you want to know what the FLOOR of a real number is?            |
  47.                                                                  3-|--
  48. Well... Suppose we want to divide 5 by 2.    2.5=real answer -->   |
  49. In this case m = 5 and n = 2.  In FORTH83 and F-PC the           2-|--
  50. which use Floored integer division the value you choose            |
  51. for q is the floor of the real value.  To explain what we        1-|--
  52. mean by the floor of a real number think of a vertical             |
  53. number line where the  integers represent the floors of          0-|--
  54. in a building where the elevator can stop.  Then by the            |
  55. floor of the number 2.5 we mean the first floor below 2.5       -1-|--
  56. which will be floor number 2.  So.. when we divide 5 by 2          |
  57. the integer answer for q will be the floor of 2.5=5/2 or        -2-|--
  58. just 2.  Now we  know this is just what you expected!       -2.5>>>|
  59.                                                                 -3-|--
  60. But wait!! what is the answer when m = -5 ??  Sorry your           |
  61. wrong, its not -2!!  Watch.   -5/2 = -2.5  look at the          -4-|--
  62. elevator next door... The Floor of -2.5 is -3!!!
  63.  
  64. SO>>>>>   -5/2 = -3   which is not what you expected and it is not
  65. intuitive but it is   the floor of the actual real quotient and that
  66. is what Floored Integer Division gives and that is what FORTH83 and
  67. F-PC use!!!
  68.  
  69. By the way there is more good(bad?) news.  Once q has been determined
  70. the remainder r must be choosen so as to satisfy the integer division
  71. equations above.  This means that for Floored Integer Division:
  72.                               floor
  73.      m        n      (real q)  q          r =  m - nq  ( m = nq + r)
  74.    -----    -----     ------  ----       -------------
  75.      5        2        2.5     2          1 =   5 -  2x2
  76.     -5        2       -2.5    -3          1 =  -5 -  2x-3
  77.      5       -2       -2.5    -3         -1 =   5 - -2x-3
  78.     -5       -2        2.5     2         -1 =  -5 - -2x2
  79. *** Especially study the last two entries than complete the following:
  80.      8        3         ?      ?          ?
  81.     -8        3         ?      ?          ?
  82.      8       -3         ?      ?          ?
  83.     -8       -3         ?      ?          ?
  84. Note: you should beable to complete the table without using your
  85. computer.
  86.  
  87. ╓──────────────╖
  88. ║ Problem 2.15 ║
  89. ╙──────────────╜
  90. Make up a similar table for Symmetric Integer Division.
  91. For symmetric integer division the value for q is choosen by simply
  92. truncating any decimal fraction that occurs in the real value of q.
  93. For the first four entries above the q's would be 2, -2, -2, and 2.
  94. You still have to complete the table and find all values for the
  95. remainder that satisfy the the division equations.
  96.  
  97. Here is a mathematical definition of the floor of a real number:
  98.  
  99. The floor of the real number x, which we can denote by floor(x) is the
  100. largest integer n which is less than of equal to x.
  101.  
  102. ┌────────────────────────────────────┐
  103. │  Please move to Lesson 2 Part 090  │
  104. └────────────────────────────────────┘
  105.