SGN
Die BASIC-Funktion SGN() (Signumfunktion) gibt abhängig vom Vorzeichen folgende Ergebnisse für das verwendete numerische Argument zurück:
- 1 bei positivem Wert,
- -1 bei negativem Wert und
- 0 beim Wert Null.
Ergibt die Auswertung des Parameters keine Zahl, so erscheint die BASIC-Fehlermeldung ?TYPE MISMATCH ERROR. Es werden alle Zahlen akzeptiert, sofern der Parameter eine gültige Fließkommazahl ergibt. Fehlt das numerische Argument, so erscheint ein ?SYNTAX ERROR.
Beispiele
PRINT SGN(-11) ergibt -1
PRINT SGN(0.0) ergibt 0
PRINT SGN(105) ergibt 1
Verwendung bei der Implementierung der FRAC(x)-Funktion (Ermittlung der Nachkommastellen):
100 DEF FN FRAC(X)=SGN(X)*(ABS(X) - INT(ABS(X)))
200 A=-31/6
210 PRINT A;FN FRAC(A)
-5.16666667 -0.16666666
Der Effekt einer Rundungsungenauigkeit kann hier beobachtet werden.
Die ABS()-Funktion mit Hilfe der SGN()-Funktion implementiert:
100 DEF FN NA(X)=X/(SGN(X)-(X=0))
200 FOR I=-10 TO 10 STEP 10
210 PRINT I,ABS(I),FN NA(I)
220 NEXT
Liefert für die Werte in der 1. Spalte den Absolutwert der internen Funktion in der 2. Spalte und in der 3. Spalte den Wert der nachgebildeten Funktion:
-10 10 10
0 0 0
10 10 10
Die neu definierte Funktion FN NA(X)
deckt auch den Sonderfall mit Wert 0 ab, indem der zusätzlich Term -(X=0)
den Wert 1 ergibt und somit eine Division durch 0 vermeidet.