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

  1.        ╔════════════════════════════════════════════════════╗
  2.        ║ Lesson 5 Part 020  F-PC 3.5 Tutorial by Jack Brown ║
  3.        ╚════════════════════════════════════════════════════╝
  4.  
  5.            ┌─────────────────────────────────────┐
  6.            │  Fixed Point Arithmetic (continued) │
  7.            └─────────────────────────────────────┘
  8.  
  9. We will continue our examination of fixed point arithmetic in lesson 5.
  10. First let's look at some of the common arguments supporting fixed point
  11. arithmetic and its alternative, floating point arithmetic.
  12.  
  13.        ┌────────────────────────────────────────────┐
  14.        │  Reasons for using Fixed-point arithmetic  │
  15.        └────────────────────────────────────────────┘
  16.  
  17. 1. To maximize the computers efficiency:
  18.    i)  by making the program run as fast as possible.
  19.    ii) by using as little computer memory as possible.
  20.  
  21. 2. Applications such as:
  22.    Operating systems and utilities;  Process control;
  23.    Graphics; Data base management; Accounting; Simulation;
  24.    Editors; Word processors ;  etc. do not require floating point.
  25.  
  26. Read Brodie  page 113-116 1st edition or page 101-103 2nd edition
  27. for further discussion.
  28.  
  29.          ┌──────────────────────────────────────┐
  30.          │   Reasons for using Floating-point.  │
  31.          └──────────────────────────────────────┘
  32.  
  33. 1. Scientific and Engineering Calculations.
  34. 2. Programming time is more highly valued than program
  35.    execution time.
  36. 3. Application requires numbers with a large dynamic range
  37.      ( greater than -2 billion to +2 billion ).
  38. 4. Computer has hardware floating-point processor, and
  39.      thus we do not pay speed penalty for using floating-point.
  40.  
  41. F-PC has both hardware and software floating point support. In lesson 5
  42. we will be concerned with fixed point arithmetic and some extensions to
  43. the to the words sets given in the files:
  44.  
  45. DMULDIV.SEQ  from SMITH.ZIP, placed in FPC\TOOLS\ by INSTALL program
  46. and a modified form of DMATH.SEQ    originally from TANG.ZIP which
  47. we provide.
  48.  
  49.            ┌──────────────────────┐
  50.            │  Using the */ scalar │
  51.            └──────────────────────┘
  52.  
  53. The */ , " star-slash " the scalar is very important for extending the
  54. range of fixed point arithmetic.  This is because the multiplication
  55. of the two single numbers is retained as a 32 bit product and is used
  56. for the division operation.
  57.  
  58.  */  ( a b c   ab/c ) Perform multiplication and then division.
  59.  
  60. Star-slash multiplies 16-bit  a  and  16-bit  b  to form the 32-bit
  61. intermediate product which is then divided by 16-bit c to give a 16-bit
  62. result.  The 32-bit intermediate product ensures accurate results when
  63. multiplying by fractions.
  64.  
  65. We use */  to multiply a  by the fraction b/c
  66.  
  67. Examples:
  68.  
  69. 15000   3   4  */      gives   11250     correct answer
  70. 15000   3   *  4 /     gives   -5134     wrong   answer
  71.  
  72. The second example above does not use the */  and the answer is wrong
  73. because the product of 15000 x 3 = 45000 which is greater than the
  74. largest positive single number ( 32767) and is hence interpreted as a
  75. negative number which is divided by 4 to give the wrong answer.
  76. With */ we get the correct answer because the intermediate product is
  77. retained as a double number and used for the division operation.
  78.  
  79. Let's use */ to do some percentage calculations.  We want to make a word
  80. that finds  p % of a number n and leaves the result as m.  The stack
  81. picture would be:
  82.  
  83. \ %  ( p n -- m )   where  m = p*n/100
  84.  
  85. : %  ( p n -- m )  100 */  ; \ definition using */
  86. : %% ( p n -- m )  * 100 / ; \ defined without using */
  87.  
  88. Exercise 5.1
  89. Try   32 1820  %% .   and   32 1820  %  .
  90. Why are the answers different?
  91.  
  92. Exercise 5.2   Percentage calculations
  93. Use % to find        Result      Actual
  94. 15 % of   220                    33.00
  95. 15 % of   222                    33.30
  96. 15 % of   224                    33.60
  97. Your results should convince you that some refinement is required.
  98.  
  99. Percent calculations with rounding. Use debug to single step through
  100. this definition so that you can discover how it accomplishes the rounding.
  101.  
  102. : %R   10 */  5 +  10 /  . ;
  103.  
  104. Sample calculations.
  105. 15 220 %R . 33  ok    15 222 %R . 33  ok  15 224 %R . 34  ok
  106.  
  107. ╓─────────────╖
  108. ║ Problem 5.1 ║
  109. ╙─────────────╜
  110. Give two alternate definitions of %R and test them to make sure they
  111. work.
  112.  
  113. ┌──────────────────────────────────────┐
  114. │   Please move to Lesson 5 Part 030   │
  115. └──────────────────────────────────────┘
  116.