00000000: 00 20 54 4F 20 45 58 50 41 55 58 32 0D 20 49 46 |. TO EXPAUX2. IF|
00000010: 20 3A 4E 20 3D 20 30 20 53 54 4F 50 0D 20 4D 41 | :N = 0 STOP. MA|
00000020: 4B 45 20 22 4E 20 3A 4E 20 2B 20 31 0D 20 4D 41 |KE "N :N + 1. MA|
00000030: 4B 45 20 22 46 20 3A 46 20 2A 20 30 2E 35 0D 20 |KE "F :F * 0.5. |
00000040: 45 58 50 41 55 58 32 0D 45 4E 44 0D 0D 54 4F 20 |EXPAUX2.END..TO |
00000050: 45 58 50 41 55 58 31 0D 20 49 46 20 3A 4E 20 3D |EXPAUX1. IF :N =|
00000060: 20 30 20 53 54 4F 50 0D 20 4D 41 4B 45 20 22 4E | 0 STOP. MAKE "N|
00000070: 20 3A 4E 20 2D 20 31 0D 20 4D 41 4B 45 20 22 46 | :N - 1. MAKE "F|
00000080: 20 3A 46 20 2A 20 32 0D 20 45 58 50 41 55 58 31 | :F * 2. EXPAUX1|
00000090: 0D 45 4E 44 0D 0D 54 4F 20 4C 4F 47 41 55 58 20 |.END..TO LOGAUX |
000000A0: 3A 4A 20 3A 54 0D 20 49 46 20 4E 4F 54 20 3A 4E |:J :T. IF NOT :N|
000000B0: 20 3E 20 30 20 50 52 20 5B 4E 45 47 20 4C 4F 47 | > 0 PR [NEG LOG|
000000C0: 5D 20 54 4F 50 4C 45 56 45 4C 0D 20 49 46 20 3A |] TOPLEVEL. IF :|
000000D0: 4E 20 3E 20 31 20 4C 4F 47 41 55 58 31 20 45 4C |N > 1 LOGAUX1 EL|
000000E0: 53 45 20 4C 4F 47 41 55 58 32 0D 20 4D 41 4B 45 |SE LOGAUX2. MAKE|
000000F0: 20 22 4E 20 28 20 3A 4E 20 2D 20 31 2E 34 31 34 | "N ( :N - 1.414|
00000100: 32 20 29 20 2F 20 28 20 31 2E 34 31 34 32 20 2B |2 ) / ( 1.4142 +|
00000110: 20 3A 4E 20 29 0D 20 4D 41 4B 45 20 22 54 20 3A | :N ). MAKE "T :|
00000120: 4E 20 2A 20 3A 4E 0D 20 4D 41 4B 45 20 22 4E 20 |N * :N. MAKE "N |
00000130: 30 2E 35 20 2B 20 3A 4E 20 2A 20 28 20 32 2E 38 |0.5 + :N * ( 2.8|
00000140: 38 35 33 33 20 2B 20 3A 54 20 2A 20 28 20 30 2E |8533 + :T * ( 0.|
00000150: 39 36 31 37 39 34 20 2B 20 3A 54 20 2A 20 28 20 |961794 + :T * ( |
00000160: 30 2E 35 37 36 35 38 33 20 2B 20 3A 54 20 2A 20 |0.576583 + :T * |
00000170: 30 2E 34 33 34 32 35 34 20 29 20 29 20 29 0D 20 |0.434254 ) ) ). |
00000180: 4D 41 4B 45 20 22 4E 20 30 2E 36 39 33 31 32 38 |MAKE "N 0.693128|
00000190: 20 2A 20 28 20 3A 4A 20 2B 20 3A 4E 20 29 0D 45 | * ( :J + :N ).E|
000001A0: 4E 44 0D 0D 54 4F 20 4C 4F 47 41 55 58 31 0D 20 |ND..TO LOGAUX1. |
000001B0: 49 46 20 3A 4E 20 3C 20 32 20 53 54 4F 50 0D 20 |IF :N < 2 STOP. |
000001C0: 4D 41 4B 45 20 22 4E 20 3A 4E 20 2A 20 30 2E 35 |MAKE "N :N * 0.5|
000001D0: 0D 20 4D 41 4B 45 20 22 4A 20 3A 4A 20 2B 20 31 |. MAKE "J :J + 1|
000001E0: 0D 20 4C 4F 47 41 55 58 31 0D 45 4E 44 0D 0D 54 |. LOGAUX1.END..T|
000001F0: 4F 20 4C 4F 47 41 55 58 32 0D 20 49 46 20 4E 4F |O LOGAUX2. IF NO|
00000200: 54 20 3A 4E 20 3C 20 31 20 53 54 4F 50 0D 20 4D |T :N < 1 STOP. M|
00000210: 41 4B 45 20 22 4E 20 3A 4E 20 2A 20 32 0D 20 4D |AKE "N :N * 2. M|
00000220: 41 4B 45 20 22 4A 20 3A 4A 20 2D 20 31 0D 20 4C |AKE "J :J - 1. L|
00000230: 4F 47 41 55 58 32 0D 45 4E 44 0D 0D 54 4F 20 45 |OGAUX2.END..TO E|
00000240: 58 50 41 55 58 20 3A 46 0D 20 49 46 20 3A 46 20 |XPAUX :F. IF :F |
00000250: 3C 20 30 20 4D 41 4B 45 20 22 4E 20 28 20 49 4E |< 0 MAKE "N ( IN|
00000260: 54 45 47 45 52 20 3A 46 20 29 20 2D 20 31 20 45 |TEGER :F ) - 1 E|
00000270: 4C 53 45 20 4D 41 4B 45 20 22 4E 20 49 4E 54 45 |LSE MAKE "N INTE|
00000280: 47 45 52 20 3A 46 0D 20 4D 41 4B 45 20 22 46 20 |GER :F. MAKE "F |
00000290: 3A 46 20 2D 20 3A 4E 0D 20 4D 41 4B 45 20 22 46 |:F - :N. MAKE "F|
000002A0: 20 30 2E 35 20 2B 20 3A 46 20 2F 20 28 20 39 2E | 0.5 + :F / ( 9.|
000002B0: 39 35 34 35 39 20 2B 20 30 2E 30 33 34 36 35 36 |95459 + 0.034656|
000002C0: 38 20 2A 20 3A 46 20 2A 20 3A 46 20 2D 20 3A 46 |8 * :F * :F - :F|
000002D0: 20 2D 20 36 31 37 2E 39 37 32 20 2F 20 28 20 3A | - 617.972 / ( :|
000002E0: 46 20 2A 20 3A 46 20 2B 20 38 37 2E 34 31 37 34 |F * :F + 87.4174|
000002F0: 20 29 20 29 0D 20 4D 41 4B 45 20 22 4E 20 3A 4E | ) ). MAKE "N :N|
00000300: 20 2B 20 31 0D 20 49 46 20 3A 4E 20 3E 20 30 20 | + 1. IF :N > 0 |
00000310: 45 58 50 41 55 58 31 20 45 4C 53 45 20 45 58 50 |EXPAUX1 ELSE EXP|
00000320: 41 55 58 32 0D 20 4D 41 4B 45 20 22 4E 20 3A 46 |AUX2. MAKE "N :F|
00000330: 0D 45 4E 44 0D 0D 54 4F 20 45 58 50 20 3A 4E 0D |.END..TO EXP :N.|
00000340: 20 45 58 50 41 55 58 20 3A 4E 20 2A 20 31 2E 34 | EXPAUX :N * 1.4|
00000350: 34 32 36 34 0D 20 4F 50 20 3A 4E 0D 45 4E 44 0D |4264. OP :N.END.|
00000360: 0D 54 4F 20 4C 4F 47 31 30 20 3A 4E 0D 20 4F 50 |.TO LOG10 :N. OP|
00000370: 20 28 20 4C 4F 47 20 3A 4E 20 29 20 2F 20 32 2E | ( LOG :N ) / 2.|
00000380: 33 30 32 35 31 0D 45 4E 44 0D 0D 54 4F 20 48 45 |30251.END..TO HE|
00000390: 4C 50 0D 20 50 52 20 5B 54 48 45 20 50 52 4F 43 |LP. PR [THE PROC|
000003A0: 45 44 55 52 45 53 20 4C 4F 47 2C 20 45 58 50 2C |EDURES LOG, EXP,|
000003B0: 20 41 4E 44 20 4C 4F 47 31 30 20 41 52 45 5D 0D | AND LOG10 ARE].|
000003C0: 20 50 52 20 5B 41 43 43 55 52 41 54 45 20 54 4F | PR [ACCURATE TO|
000003D0: 20 33 20 4F 52 20 34 20 53 49 47 4E 49 46 49 43 | 3 OR 4 SIGNIFIC|
000003E0: 41 4E 54 20 44 49 47 49 54 53 5D 0D 45 4E 44 0D |ANT DIGITS].END.|
000003F0: 0D 54 4F 20 4C 4F 47 20 3A 4E 0D 20 49 46 20 3A |.TO LOG :N. IF :|
00000400: 4E 20 3D 20 31 20 4F 50 20 30 0D 20 4C 4F 47 41 |N = 1 OP 0. LOGA|
00000410: 55 58 20 30 20 30 0D 20 4F 50 20 3A 4E 0D 45 4E |UX 0 0. OP :N.EN|
00000420: 44 0D 0D 4D 41 4B 45 20 22 4E 20 28 31 2E 32 36 |D..MAKE "N (1.26|
00000430: 37 35 38 45 33 30 29 0D 00 00 67 |758E30)...g |
. TO EXPAUX2. IF :N = 0 STOP. MAKE "N :N
+ 1. MAKE "F :F * 0.5. EXPAUX2.END..TO
EXPAUX1. IF :N = 0 STOP. MAKE "N :N - 1.
MAKE "F :F * 2. EXPAUX1.END..TO LOGAUX
:J :T. IF NOT :N > 0 PR [NEG LOG] TOPLEV
EL. IF :N > 1 LOGAUX1 ELSE LOGAUX2. MAKE
"N ( :N - 1.4142 ) / ( 1.4142 + :N ). M
AKE "T :N * :N. MAKE "N 0.5 + :N * ( 2.8
8533 + :T * ( 0.961794 + :T * ( 0.576583
+ :T * 0.434254 ) ) ). MAKE "N 0.693128
* ( :J + :N ).END..TO LOGAUX1. IF :N <
2 STOP. MAKE "N :N * 0.5. MAKE "J :J + 1
. LOGAUX1.END..TO LOGAUX2. IF NOT :N < 1
STOP. MAKE "N :N * 2. MAKE "J :J - 1. L
OGAUX2.END..TO EXPAUX :F. IF :F < 0 MAKE
"N ( INTEGER :F ) - 1 ELSE MAKE "N INTE
GER :F. MAKE "F :F - :N. MAKE "F 0.5 + :
F / ( 9.95459 + 0.0346568 * :F * :F - :F
- 617.972 / ( :F * :F + 87.4174 ) ). MA
KE "N :N + 1. IF :N > 0 EXPAUX1 ELSE EXP
AUX2. MAKE "N :F.END..TO EXP :N. EXPAUX
:N * 1.44264. OP :N.END..TO LOG10 :N. OP
( LOG :N ) / 2.30251.END..TO HELP. PR [
THE PROCEDURES LOG, EXP, AND LOG10 ARE].
PR [ACCURATE TO 3 OR 4 SIGNIFICANT DIGI
TS].END..TO LOG :N. IF :N = 1 OP 0. LOGA
UX 0 0. OP :N.END..MAKE "N (1.26758E30).
..G
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL