OS2.org Site Index - Feedback - Impressum
Sprachauswahl / Choose your Language News Software Hardware Projekte Forum Tipps Links Verschiedenes
Editorial Diskussion HelpDesk Umfrage
[Forum]
in nach (Erweiterte Suche)
[Forum]
( Archiv ) ( Neues Thema )
18.10.2000
Wie und Was: (Bis zu 27) mathematische Standardfunktionen unter REXX aufrufen (von: GA, 11:12:53) ^
Mit folgendem Programm(rumpf) kann man bis zu 27 mathematische Standardfunktionen aufrufen:

/* REXXCALC.CMD */
IF RxFuncQuery("MathLoadFuncs") THEN
DO
RC = RxFuncAdd("MATHLOADFUNCS","RXMATHFN","MATHLOADFUNCS")
IF (RC) THEN DO
SAY "RXMATHFN- functions are not accessable"
EXIT
END
RC = MathLoadFuncs("QUIED")
END
CALL RxFuncAdd "sqrt","RXU","RxuMthsqrt"
CALL RxFuncAdd "ceil","RXU","RxuMthceil"
CALL RxFuncAdd "exp","RXU","RxuMthexp"
CALL RxFuncAdd "frexp","RXU","RxuMthfrexp"
CALL RxFuncAdd "floor","RXU","RxuMthfloor"
CALL RxFuncAdd "fmod","RXU","RxuMthfmod"
CALL RxFuncAdd "rexp","RXU","RxuMthrexp"
CALL RxFuncAdd "ldexp","RXU","RxuMthldexp"
CALL RxFuncAdd "log","RXU","RxuMthlog"
CALL RxFuncAdd "log10","RXU","RxuMthlog10"
CALL RxFuncAdd "modf","RXU","RxuMthmodf"
CALL RxFuncAdd "pow","RXU","RxuMthpow"
CALL RxFuncAdd "sinh","RXU","RxuMthsinh"
CALL RxFuncAdd "cosh","RXU","RxuMthcosh"
CALL RxFuncAdd "tanh","RXU","RxuMthtanh"
CALL RxFuncAdd "asin","RXU","RxuMthasin"
CALL RxFuncAdd "acos","RXU","RxuMthacos"
CALL RxFuncAdd "atan2","RXU","RxuMthatan2"
CALL RxFuncAdd "atan","RXU","RxuMthatan"
CALL RxFuncAdd "sin","RXU","RxuMthsin"
CALL RxFuncAdd "cos","RXU","RxuMthcos"
CALL RxFuncAdd "tan","RXU","RxuMthtan"
CALL RxFuncAdd "fabs","RXU","RxuMthfabs"
CALL RxFuncAdd "erf","RXU","RxuMtherf"
CALL RxFuncAdd "erfc","RXU","RxuMtherfc"
CALL RxFuncAdd "gamma","RXU","RxuMthgamma"
CALL RxFuncAdd "hypot","RXU","RxuMthhypot"
NUMERIC DIGITS 9
/* Liste der mathematischen Funktioen:
cos (x) cosine (x), x in radians
sin (x) sine (x), x in radians
tan (x) tangent(x), x in radians
acos (x) arccosine(x),x in radians
asin (x) arcsine (x),x in radians
atan (x) arctangent(x),x in radians
atan2(y,x) arctangent(y/x),x in radians
cosh (x) hyperbolic cosine (x)
sinh (x) hyperbolic sine (x)
tanh (x) hyperbolic tangent (x)
ceil (x) smallest integer that is greater than or equal x
floor(x) largest integer less than or equal x
exp (x) e to power of x (e is natural logarithm base)
frexp(x) returns mantissa and exponent of x
ldexp(x,y) computes x*(2**y)
log (x) natural logrithm of x
log10(x) base 10 logrithm of x
sqrt (x) square root x
erf (x) error function of x
erfc (x) computes 1.0 - erf(x): used for large values of x
pow (x,y) x to power y (x**y)
gamma(x) gamma function of x (ln(|G(x)|))
hypot(x,y) hypotenuse of right triangle of sites x and y
fmod(x,y) floating point remainder of x/y
modf(x,y) returns fractional and integral parts of x
pi() value of pi
e() value of e (e is natural logarithm base)
max(a,b,c,...) maxmimum value of a,b,c,....
min(a,b,c,...) minimum value of a,b,c,....
abs(x) absolute value of x
fabs(x) absolute value of x */

/* Hier folgenden die Anweisungen des Programms */
EXIT


Anmerkungen:

1. Es wurden 2 Bibliotheken RXMATHFN.DLL und RXU.DLL verwendet.
Die erste findet man als Datei hier:

http://www.leo.org/pub/comp/os/os2/leo/rexx/rxmath.zip

Die zweite kann man mit ftpsearch(hier im helpdesk) als Datei RXU1A.ZIP finden.

2. Bei der Bibliothek RXU.DLL wurde die Technik angewendet, daß man in RxFuncAdd das erste Argument im Rahmen der Konventionen unter REXX als Namen frei wählen kann. Damit sind die üblichen Namen der Standardfunktionen wie sin(x) im Programm zu verwenden.

3. Funktionen, die nicht mit RXU.DLL geladen wurden, werden entweder mit RXMATHFN.DLL geladen oder sind Standardfunktionen unter REXX.

4. Die Länge der Mantisse(= ANzahl der Stellenzahl nach dem Komma) ist durch die Funktionen der Bibliotheken vorgegeben.
Es ist also nicht möglich, mit der Anweisung

NUMERIC DIGITS NUM (NUM steht für eine ganze, postive Zahl)

die Mantisse der Funktionsergebnisse zu erhöhen.

Hinweis:

Mit dem Aufruf von

NUMERIC DIGITS 15

kann man die Anzahl der zu berechnenden Stellen im Programm auf 15 erhöhen. Mit einem weiteren Aufruf von NUMERIC DIGITS kann man die Stellenzahl wieder herabsetzen. Dies gilt auch für Routinen. Mit wachsender Stellenzahl erhöht sich der Rechenaufwand bez. der Zeit. Es ist also wohl kaum sinnvoll, ein Ergebnis mit 50 Stellen berechnen zu lassen(bis auf bestimmte Ausnahmen).

Wer kann Ergänzungen zun dem Thema zeigen?
[ Leser: 71 ]

Datum Thema
07.01.2017 *

*

Name: * eMail: Benachrichtigung

Mit * markierte Felder müssen ausgefüllt werden !

( Zeige alle Einträge ) ( Zur Startübersicht )
Thema von: Leser Datum Zeit
 Wie und Was: (Bis zu 27) mathematische Standardfunktionen unter REXX aufrufen
GA7118.10.200011:12


php.net OpenIT © 1998-2017 by WebTeam OS2.org