home *** CD-ROM | disk | FTP | other *** search
- * PROGRAM --- LOG.PRG
- * EXPECTS NUMBERIC VARIABLE, "NUMBER"
- * RETURN NUMBERIC VARIABLE, "MLOG"
-
- SET TALK OFF
- STORE NUMBER TO TEMP
- STORE 0 TO MLOG
-
- * BRANCH FOR NUMBER GREATER THAN 2, AND ZERO OR LESS..
- DO CASE
- CASE NUMBER <=0
- @ 23,0 SAY "ERROR! NUMBER MUST TO GREATER THAN ZERO."
- WAIT
- RETURN
- CASE NUMBER > 2
- DO WHILE TEMP > 2
- STORE TEMP /2 TO TEMP
- STORE MLOG + 0.6931471 TO MLOG
- ENDDO
- ENDCASE
-
-
- * CALCULATION OF THE REMAINDER OF THE LOGARITHM
- * (TAYLOR SERIES EXPANSION: FOR -1 < X <= 1
- * LOG (1+X) = X - X/2 + X/3 - ...+ -X/N
- * OR LOG X = SUM -(1-X)/N FOR N= 1 TO INFINITY)
- STORE -(TEMP -1) TO TEMP
- STORE 1 TO INTERIM
- STORE 0 TO POWER
- DO WHILE POWER <= 25
- STORE POWER + 1 TO POWER
- STORE TEMP * INTERIM /1 TO INTERIM
- STORE MLOG - INTERIM / POWER TO MLOG
- ENDDO
-
- * ROUND OFF DECIMAL PORTION TO 5 PLACES
- STORE INT(MLOG) + INT((MLOG - INT(MLOG)) * 100000 + .5)/100000.00000 TO MLOG
- RELEASE INTERIM,TEMP,POWER
- RETURN