home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / dev / e / amigae / src / tools / longreal / longdemo.e next >
Text File  |  1992-09-02  |  3KB  |  86 lines

  1. /* Example program for longreal module */
  2. /* By EA van Breemen 1994              */
  3.  
  4.  
  5. /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
  6. /* In order to use the conversion functions use STRING type */
  7. /* for the buffers, not ARRAY. Otherwise the functions will */
  8. /* produce unexpected results                               */
  9.  
  10. /* Note some roundingerrors may occur due to IEEE maths     */
  11. /* In futher releases this will be fixed                    */
  12.  
  13.  
  14. /* Some notes on the functions in longreal                  */
  15.  
  16. /* Most functions are described in the ROMKernals. See the  */
  17. /* chapters on IEEE functions                               */
  18. /* There are 3 ascii-longreal conversion functions          */
  19.  
  20. /* dFormat(buffer,x,num)  -> converts fractional number x with
  21.                              num digits to a string in buffer
  22.  
  23.    dLFormat(buffer,x,num) -> same as dFormat, but now also large
  24.                              numbers i.e. 1.2e250           
  25.  
  26.    a2d(buffer,x)          -> the inverse of dLFormat: converting
  27.                              from asciistring in buffer to 
  28.                              longreal x                      */
  29.  
  30.  
  31. /* Include this module for using longreals */
  32.  
  33. MODULE 'tools/longreal'
  34.  
  35.  
  36. /* Our small main program */
  37.  
  38. PROC main()
  39.   DEF buffer[256]:STRING     /* Very important: use STRING for buffer !!!! */
  40.   DEF a:longreal             /* Our dummy longreal for results     */
  41.   DEF i                      /* A simple counter                   */
  42.  
  43.   dInit()                    /* Init the module before using */
  44.  
  45.   WriteF('First some conversions:\n')
  46.   WriteF('Reading 1.234567      -> gives:')
  47.  
  48.   a2d('1.234567',a)          /* Convert from ascii to longreal */
  49.   dFormat(buffer,a,6)        /* And back again (6 digits)      */
  50.   WriteF('\s\n',buffer)      /* Print it                       */
  51.  
  52.   WriteF('Reading +1.234567e-2  -> gives:')
  53.  
  54.   a2d('+1.234567e-2',a)      /* Convert from ascii to longreal */
  55.   dFormat(buffer,a,6)        /* And back again (6 digits)      */
  56.   WriteF('\s\n',buffer)      /* Print it                       */
  57.  
  58.  
  59.   WriteF('Reading -1.234567E100 -> gives:')
  60.  
  61.   a2d('-1.234567E100',a)     /* Convert from ascii to longreal */
  62.  
  63. /* Now the number is too large for dFormat, use dLFormat instead */
  64.  
  65.   dLFormat(buffer,a,6)       /* And back again (6 digits)      */
  66.   WriteF('\s\n',buffer)      /* Print it                       */
  67.  
  68.   WriteF('Now some other stuff\n')
  69.  
  70.   FOR i:=1 TO 16
  71.     WriteF('PI=\s \n',dFormat(buffer,dPi(a),i))
  72.   ENDFOR
  73.  
  74.   WriteF('A sinus table\n')
  75.   FOR i:=0 TO 360 STEP 45
  76.     dFloat(i,a)              /* Convert an int to a longreal */
  77.     dSin(dRad(a))
  78.     WriteF('Sin(\d)=\s \n',i,dLFormat(buffer,a,15))
  79.   ENDFOR
  80.  
  81.   WriteF('End of longdemo\n')
  82.  
  83.   dCleanup()                 /* Cleanup the module after using */
  84.  
  85. ENDPROC
  86.