home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / compound.zip / LOG.PRG < prev    next >
Text File  |  1980-01-01  |  1KB  |  40 lines

  1. *  PROGRAM --- LOG.PRG
  2. *  EXPECTS NUMBERIC VARIABLE, "NUMBER"
  3. *  RETURN NUMBERIC VARIABLE, "MLOG"
  4.  
  5. SET TALK OFF
  6. STORE NUMBER TO TEMP
  7. STORE 0 TO MLOG
  8.  
  9. * BRANCH FOR NUMBER GREATER THAN 2, AND ZERO OR LESS.. 
  10. DO CASE
  11. CASE NUMBER <=0
  12.    @ 23,0 SAY "ERROR! NUMBER MUST TO GREATER THAN ZERO."
  13.    WAIT
  14.    RETURN
  15. CASE NUMBER > 2
  16.    DO WHILE TEMP > 2
  17.       STORE TEMP /2 TO TEMP
  18.       STORE MLOG + 0.6931471 TO MLOG
  19.    ENDDO
  20. ENDCASE
  21.  
  22.  
  23. * CALCULATION OF THE REMAINDER OF THE LOGARITHM
  24. *   (TAYLOR SERIES EXPANSION:  FOR -1 <  X <= 1
  25. *  LOG (1+X) = X - X/2 + X/3 - ...+ -X/N
  26. *  OR LOG X = SUM -(1-X)/N FOR N= 1 TO INFINITY)
  27. STORE -(TEMP -1) TO TEMP
  28. STORE 1 TO INTERIM
  29. STORE 0 TO POWER
  30. DO WHILE POWER <= 25
  31.    STORE POWER + 1 TO POWER
  32.    STORE TEMP * INTERIM /1 TO INTERIM
  33.    STORE MLOG - INTERIM / POWER TO MLOG
  34. ENDDO
  35.  
  36. * ROUND OFF DECIMAL PORTION TO 5 PLACES 
  37. STORE INT(MLOG) + INT((MLOG - INT(MLOG)) * 100000 + .5)/100000.00000 TO MLOG
  38. RELEASE INTERIM,TEMP,POWER
  39. RETURN
  40.