Fonctions mathématiques simulées
Les sous-programmes suivants sont destinés aux utilisateurs de 4K BASIC souhaitant utiliser les fonctions transcendantales non intégrées à 4K BASIC. Les routines correspondantes pour ces fonctions dans la version 8K sont beaucoup plus rapides et plus précises. Les instructions REM de ces sous-programmes sont données à des fins de documentation uniquement et ne doivent pas être saisies car elles occupent une grande quantité de mémoire.
Voici les appels de sous-programme et leurs équivalents 8K :
Équivalent 8K | Appel de sous-routine |
---|---|
P9=X9↑Y9 | GOSUB 60030 |
L9=LOG(X9) | GOSUB 60090 |
E9=EXP(X9) | GOSUB 60160 |
C9=COS(X9) | GOSUB 60240 |
T9=TAN(X9) | GOSUB 60280 |
A9=ATN(X9) | GOSUB 60310 |
Les sous-programmes inutiles ne doivent pas être saisis. Veuillez noter quelles variables sont utilisées par chaque sous-programme. Notez également que TAN et COS exigent que la fonction SIN soit conservée lorsque BASIC est chargé et initialisé :
- 60000 REM EXPONENTIATION: P9=X9↑Y9
- 60010 REM BESOIN: EXP, LOG
- 60020 REM VARIABLES UTILISEES: A9,B9,C9,E9,L9,P9,X9,Y9
- 60030 P9=1:E9=0: IF Y9=0 THEN RETURN
- 60040 IF X9<0 THEN IF INT(Y9)=Y9 THEN P9=1-2*Y9+4*INT(Y9/2):X9=-X9
- 60050 IF X9<>0 THEN GOSUB 60090 : X9=Y9*L9 : GOSUB 60160
- 60060 P9=P9*E9 : RETURN
- 60070 REM LOGARITHME NATUREL: L9=LOG(X9)
- 60080 REM VARIABLES UTILISEES: A9,B9,C9,E9,L9,X9
- 60090 E9=0:IF X9<=0 THEN PRINT "ERREUR FC DE LOG "; : STOP
- 60095 A9=1:B9=2:C9=.5 : REM CECI ACCELERE LA SUITE
- 60100 IF X9>=A9 THEN X9=C9*X9 : E9=E9+A9 : GOTO 60100
- 60110 IF X9<C9 THEN X9=B9*X9 : E9=E9-A9 : GOTO 60110
- 60120 X9=(X9-.707107)/(X9+.707107) : L9=X9*X9
- 60130 L9=(((.598979*L9+.961471)*L9+2.88539)*X9+E9-.5) * .693147
- 60135 RETURN
- 60140 REM EXPONENTIEL: E9=EXP(X9)
- 60150 REM VARIABLES UTILISEES: A9,E9,L9,X9
- 60160 L9=INT(1.4427*X9)+1 : IF L9<127 THEN 60180
- 60170 IF X9>0 THEN PRINT "ERREUR OV DE EXP "; : STOP
- 60175 E9=0 : RETURN
- 60180 E9=.693147*L9-X9 : A9=1.32988E-3-1.41316E-4*E9
- 60190 A9=((A9*E9-8.30136E-3)*E9+4.16574E-2)*E9
- 60195 E9=(((A9-.166665)*E9+.5)*E9-1)*E9+1 : A9=2
- 60197 IF L9<=Q THEN A9=.5 : L9=-L9 : IF L9=0 THEN RETURN
- 60200 FOR X9=1 TO L9:E9=A9*E9:NEXT X:RETURN
- 60210 REM COSINE: C9=COS(X9)
- 60220 REM N.B. SIN DOIT ETRE CONSERVE AU TEMPS DE CHARGEMENT
- 60230 REM VARIABLES UTILISEES: C9,X9
- 60240 C=SIN(X9+1.5708) : RETURN
- 60250 REM TANGENTR: T9=TAN(X9)
- 60260 REM NÉCESSITE COS (SIN DOIT ÊTRE CONSERVÉ AU TEMPS DE CHARGEMENT)
- 60270 REM VARIABLES UTILISEES: C9,T9,X9
- 60280 GOSUB 60240 : T9=SIN(X9)/C9 : RETURN
- 60290 REM ARCTANGENT: A9=ATN(X9)
- 60300 REM VARIABLES UTILISEES: A9,B9,C9,T9,X9
- 60310 T9=SGN(X9): X9=ABS(X9): C9=0 : IF X9>1 THEN C9=1 : X9=1/X9
- 60320 A9=X9*X9 : B9=((2-86623E-3*A9-1-61657E-2)*A9+4-29096E-2)*A9
- 60330 B9=((((B9-7-5289E-2)*A9+-106563)*A9-.142089)*A9+.199936)*A9
- 60340 A9=((B9-.333332)*A9+1)*X9 : IF C9=1 THEN A9=1-5708-A9
- 60350 A9=T9*A9 : RETURN