|
CCS Modul R_RECHNE |
$Id: r_rechne.C,v 1.22 2005/07/07 12:01:32 pv73rt Exp $
---------------------------------------------------------------------
Kurzbeschreibung: Berechnungen durchfÏhren
---------------------------------------------------------------------
Projekt: CCS
Sourcefile: r_rechne.C
Autor: RtW/TEF72-juilfs/Lehmann (28.11.96)
Zielsystem: HP9000/V743 (HP-RT 2.0x), /Sxxx (HP-UX 9.0x)
Sprache: C++
---------------------------------------------------------------------
Prototyp:
MPI Schnittstelle
void r_rechne(shm_stringpointer *zeilen_info
,shm_stringpointer *zeilen_wert
,long index1
,long anzahl)
---------------------------------------------------------------------
Aufruf: im Vectorinterpreter
(*funktionen[modulnummer])
(Ssp_expand_zeile
,Ssp_expand_wert
,p_verwaltung->begin_modulblock
,p_verwaltung->anzahl_modulparameter);
---------------------------------------------------------------------
Funktionsbeschreibung:
Aufgabe des Rechenmodule ist es, Berechnungen anhan der Eingabezeile
vorzunehmen. Das Ergebnis wird wird im Ergebnisstring uebertragen.
Der gesamte Ausdruck muss geklammert werden.
Parameterbeschreibung:
INPUT Beschreibung des aritmethischen Ausdruckes
Laange des Strings 60 Zeichen
ERGEBNIS Ausgabe des Ergebnisses in einer &Variable
FEHLER Fehlerbeschreibung in einer &Variable
RUNDUNGSART Rundart bei Integer Operationen
0 Keine Rundung IND_ERGEBNIS ist eine floatzahl
1 math. Runden zur nächsten Integerzahl
2.49 --> 2
2.5 --> 3
2 Abrunden zur naechsten Integerzahl
2.1 --> 2
2.9 --> 2
-2.1 --> -3
-2.9 --> -3
3 Aufrunden zur naechsten Integerzahl
2.1 --> 3
2.9 --> 3
-2.1 --> -2
-2.9 --> -2
4 stat. Runden zur naechsten Integerzahl (IEEE 754)
"liegt die zu rundende Zahl genau zwischen zwei
Zahlen, dann wird zur naechsten geraden Zahl gerundet
2.49 --> 2
2.5 --> 2
2.51 -> 3
3.49 --> 3
3.5 --> 4
3.51 -> 4
Beispiele des Inputstrings:
(10+4)
(&MEWE*&MEWE2+(&MEWE3/20))
INT(&MEWE1)
RND(1)
+------ String
| +---- interger Array
| | +-- double Array
| | |
Folgende Operanten werden unterstützt
x x x + Addition
x x x - Subtraktion
x x x * Multiplikation
x x x / Division
x x x ^ Potenzierung
x x x % modular
Folgende Funktionen werden unterstuetzt
x x x SIN
x x x ASIN
x x x COS
x x x ACOS
x x x TAN
x x x ATAN
x x x LOG
x x x LOG10
x x x EXPONENT/EXP10
x x x STELLEN
x x x EXP
x x x ABS
x x x SQRT
x x x INT (Ganzzahl bilden, zB. 5.93 wird 5.00)
x x x RND/RAND (Zufallszahlgenerator, Range: 0.000 - 0.999...
und wird dann mit RND-Argument mutlipliziert)
x x x RUND Runden von Zahlen ohne Nachkommastellen
Beispiel: 5.9 -----> 6
x x AVERAGE/MITTEL
x x SUMME
x x MIN/IMIN
x x MAX/IMAX
x x x POTENZ
x x MEDIAN
x ACC2CRC
x x SIGMA
x x SHL shift left, das Array wird von unten um ein element nach oben
geschoben. Element 1 wird mit 0 belegt.
...