Dieser Abschnitt erläutert
Zunächst gibt es die normalen Funktionen
abs, sqrt, exp, log, sin, cos, tan, asin, acos, atan, re, im, conj.
Diese Funktionen arbeiten auch mit komplexen Werten. In diesen Fällen ergeben sie den prinzipiellen Wert. Einige andere Funktionen haben nur für reelle Zahlen Sinn:
floor, ceil, sign, fak, bin, logfak, logbin.
floor ergibt die größte ganze Zahl nicht größer als x und ceil berechnet die nächste ganze Zahl größer gleich x. "bin(n,m)" berechnet den Binomialkoeffizienten von n und m. "logbin(n,m)" berechnet den Logarithmus davon (für große Werte von n und m).
>pi()
(oder einfach ">pi") ist eine vordefinierte Konstante.
>mod(x,y)
gibt den Modulus, also den reellen Divisionsrest von x durch y zurück.
Beachten Sie bitte, dass die meisten dieser Funktionen für Matrixeingaben vorgesehen sind. Sie bewerten einfach jedes Element der Matrix. Wenn das nicht der Fall sein sollte oder wenn Sie selbst eine Funktion geschrieben haben, die keine Matrixeingabe akzeptiert, so können Sie die Funktion mit
>map("function",...)
kapseln, wobei die Elemente des Matrixparameters ... an die Funktion übergeben werden. Diese Kapselung gehorcht den Regeln, die im Abschnitt Matrix erläutert wurden. Wenn Sie also eine Zeile v und eine Spalte w an die Funktion übergeben, so werden beide zu vollen Matrizen vergrößert mit soviel Zeilen wie v und soviel Spalten wie w.
>max(x,y)
und min(x,y) geben das Maximum bzw. Minimum von x und y zurück.
>max(A)
und min(A) liefern einen Spaltenvektor, der das Maximum bzw. Minimum aller Zeilen von A enthält. Die Funktionen totalmax und totalmin aus util.c berechnen das Maximum bzw. Minimum über alle Elemente einer Matrix.
Ist A eine Matrix des Typs (m,n), dann ergibt
>extrema(A)
eine Matrix des Typs (m,4), die in jeder Zeile einen Vektor der Form [ min imin max imax ] enthält, wobei min und max das Minimum und Maximum entsprechender Zeilen der Matrix A sind und imin und imax ihre Indizes.
Ist v ein Vektor des Typs (1,n), dann liefert
>nonzeros(v)
einen Vektor der Indizes i mit allen v[i] ungleich Null. Außerdem liefert
>count(v,n)
einen Vektor des Typs (1,n), der die Anzahl der Werte im Vektor v jeweils in den Intervallen (0,1) bis (i-1,i) mit i von 1 bis n enthält.
>find(v,x)
setzt voraus, dass die Elemente von v sortiert sind. find gibt den Index i (oder den Vektor der Indizes, falls x ein Vektor ist) zurück, so dass v[i] <= x < v[i+1] gilt oder 0 falls der Vektor v keine Zahl enthält, die kleiner oder gleich x ist.
>sort(v)
sortiert die Elemente von v mit dem quicksort-Algorithmus. sort gibt den sortierten Vektor und die neugeordneten Indizes zurück. Falls man also
>{w,i}=sort(v);
eingibt, so ist v[i[j]] gleich w[j].
Ist A eine Matrix des Typs (m,n), dann liefert
>sum(A)
einen Spaltenvektor, der die Summe aller Zeilen von A enthält. Analog dazu liefert
>prod(A)
das Produkt der Zeilen.
>cumsum(A)
liefert eine Matrix des gleichen Typs wie A, die in jeder Spalte die kumulative Summe über die entsprechenden Zeilenelemente enthält.
>cumprod(A)
arbeitet auf die gleiche Weise für Produkte. Zum Beispiel gibt
>cumprod(1:20)
einen Vektor ( 1:20 definiert einen Vektor, keine Matrix) zurück, der die Fakultäten von 1 bis 20 enthält.
>round(x,n)
rundet x auf n Stellen hinter dem Komma (dem Dezimalpunkt). round funktioniert auch mit komplexen Zahlen. x kann eine Matrix sein.
Die einzigen String-Funktionen in EULER sind
>stringcompare("string1","string2")
das 0 zurückgibt, wenn die Strings gleich sind, einen negativen Wert wenn string1 alphanumerisch vorrangiger ist als string2 und sonst einen positiven Wert sowie die Vergleichsoperatoren ==, <, >, <=, >= .
Darüber hinaus können Sie Strings mit dem senkrechten Strich "|" verbinden.
Außerdem interpretiert
>interpret("expression");
den Ausdruck expression und gibt das Ergebnis der Auswertung zurück.
>time()
liefert eine Zeitmarke in Sekunden. Sie ist u.a. zur Untersuchung des Laufzeitverhaltens sinnvoll.
>wait(n)
wartet n Sekunden oder bis eine Taste gedrückt wird. Es gibt die tatsächliche Wartezeit in Sekunden zurück.
>key()
wartet auf einen Tastendruck und liefert den Tastaturcode bzw. den ASCII-Code der gedrückten Taste zurück. Sie können die ASCII-Codes mit key()==ascii("a") auf bestimmte Zeichen überprüfen.