Evaluator-Änderungen von JACK2 nach JACK3
In JACK3 wird eine neue Evaluatorversion genutzt. Im Folgenden sind die Unterschiede zur alten Version unter JACK2 aufgelistet.
Zeichenketten/Strings
Zeichenketten/Strings können in der Syntax mit einfachen (') oder doppelten Anführungszeichen (") verwendet werden. Eine Benutzung der jeweils anderen ist dann ohne Escaping \" \'
möglich.
Achtung! Das Escaping wird nicht vom Evaluator aufgelöst!
Beispiele:
"Dies ist ein 'Beispiel'."
'Dies ist ein anderes "Beispiel".'
"Dies ist ein drittes \"Beispiel\"."
'Dies ist ein letztes \'Beispiel\'.'
Zeichenketten werden nicht mehr vom Evaluator zerlegt und interpretiert. Das heißt, die Ersetzung von Variablen mit ihren zugehörigen Werten in Zeichenketten geschieht nicht mehr automatisch.
Beispiel: In "Die Ersetzung von Variablen [var=text1] wird nicht mehr automatisch vorgenommen."
wird [var=text1]
nicht ersetzt.
Mit der Funktion concat()
können Variablenwerte aber mit einer oder mehreren Zeichenketten verknüpft werden:
Beispiel: In concat("Die Ersetzung von Variablen ", [var=text1], " kann so vorgenommen werden.")
wird [var=text1]
durch ihren Wert ersetzt.
Nutzt man in equalsExpr()
Anführungszeichen, wird alles in den Anführungszeichen als Text erkannt. Lässt man die Anführungszeichen weg, wird alles als mathematischer Ausdruck erkannt.
Beispiele:
equalsExpr('x^2+3', [input=gleichung])
->x^2+3
wird als Text, nicht als mathematischer Ausdruck erkannt.equalsExpr(x^2+3, [input=gleichung])
->x^2+3
wird als mathematischer Ausdruck erkannt.
Neue Funktionalität
Ausdrücke
Es gibt nun eine Möglichkeit, Ausdrücke zu definieren, welche nicht vom Evaluator ausgerechnet werden sollen. Siehe Evaluator → Ausrechnen von Ausdrücken verhindern.
Anzeige von Variablen
Siehe Variablen → Variablen in Texten einbetten. Die $
-Zeichen, die den in LaTeX zu renderen Text einschließen, müssen noch manuell hinzugefügt werden.
Nicht mehr unterstützte Funktionen
cosineDistance
equalsSemiSem
eval
evalCplx
evalEq
evalPolynomial
evalPolynomialCplx
evalTermIn2Variables
evaluateInSymja
expand
getFromOrderedList
wird durchsortXList
, wobeiX
der Typ der Listenelemente ist (s. Neue Funktionen), undgetFromList
ersetzt. MitsortXList
wird die Liste sortiert und mitgetFromList
kann ein Element aus dieser Liste ausgewählt werden.getFromOrderedSet
getFromSet
Geänderte Funktionen
ifthenelse
- 0 wird zu falsch ausgewertet, 1 wird zu richtig ausgewertet.
- Alle anderen Ergebnisse führen zu einem Fehler.
convertToBinary
- Wird in zwei Methoden aufgeteilt,
convertIntegerToBinaryString
(Ganzzahlen) undconvertDoubleToBinaryString
(Gleitkommazahlen).
- Wird in zwei Methoden aufgeteilt,
equalsBinary
- wird umbenannt in
equalsBinaryString
- wird umbenannt in
evaluateInSage und evaluateInR
Die beiden Funktionen evaluateInSage
und evaluateInR
werten die Eingabe direkt in einem CAS aus.
Der Inhalt der Funktionen ist immer ein String/Zeichenkette. Auch darf die Eingabe nicht verschachtelte Funktionen beinhalten. Sie wird nicht geparsed und nicht evaluiert.
Wenn eine Variable in den Funktionen genutzt werden soll, kann diese, wie zuvor, innerhalb des CAS-Strings angegeben werden.
evaluateInSage("bool(1+[var=value2]==3)")
ist möglichist nicht möglichevaluateInSage(concat("bool(1+", [var=value2], "==3)")
Neue Funktionen
Hinweis: Diese Liste ist nicht vollständig. Zum aktuellen Zeitpunkt kommen zum JACK3-Evaluator laufend neue Funktionen hinzu. Diese sind im Wiki entsprechend gekennzeichnet.
countTrue
- Nimmt beliebig viele Parameter entgegen und zählt, wie viele davon den Wert true() besitzen
equalList
- Vergleicht zwei Listen miteinander. Gibt true zurück, wenn beide die gleichen Elemente in der selben Reihenfolge beinhalten.
convertIntegerToBinaryString
- Erwartet Ganzzahl als Argument und wandelt diese in einen BinaryString(32Bit) um
convertBinaryStringToInteger
- Erwartet einen BinaryString(32Bit) als Argument und wandelt diesen in eine Ganzzahl um
convertDoubleToBinaryString
- Erwartet eine Gleitkommazahl als Argument und wandelt diese in einen BinaryString(64Bit) um
convertBinaryStringToDouble
- Erwartet einen BinaryString(64Bit) als Argument und wandelt diesen in eine Gleitkommazahl um
equalsBinaryString
- Erwartet zwei BinaryStrings als Argument und vergleicht diese
isBinaryString
- Erwartet Zeichenkette oder Ganzzahl als Argument. Prüft, ob es sich dabei um eine Binärzahl (nur 0 und 1) handelt.
Die folgenden Funktionen erwarten als Argument eine Liste und geben eine Liste zurück.
sortDoubleList
- sortiert eine Liste, die nur Doubles/Floats oder Integers beinhaltet
- Ausgabe ist eine sortierte Liste mit Doubles/Floats
sortIntegerList
- sortiert eine Liste, die nur Integers beinhaltet
- Ausgabe ist eine sortierte Liste mit Integers
sortLexicographical
- sortiert eine Liste, die nur Terminale beinhaltet (String/Double/Integer)
- Ausgabe ist eine sortierte Liste mit Strings
sortNumberList
- sortiert eine Liste, die nur Terminale beinhaltet (Double/Integer)
- Ausgabe ist eine sortierte Liste mit Doubles/Floats
sortStringList
- sortiert eine Liste, die nur Strings beinhaltet
- Ausgabe ist eine sortierte Liste mit Strings
convertToDoubleList
- Elemente der Liste werden zu Double umgewandelt
convertToIntegerList
- Elemente der Liste werden zu Integer umgewandelt
convertToStringList
- Elemente der Liste werden zu Strings umgewandelt
removeDuplicates
- Alle Duplikate werden aus der Liste gelöscht
shuffleList
- Die Elemente der Liste werden geshuffelt
Division
Division wird nicht mehr automatisch gerundet. Soll der Bruch als Dezimalzahl ausgegeben werden, kann die Funktion round()
genutzt werden.
Es besteht bei der Berechnung kein Unterschied zwischen der Nutzung von :
und /
.
Wenn :
und /
hingegen in Zeichenketten genutzt werden, werden diese unterschiedlich dargestellt:
:
sowie die Funktiondivide()
wird als\div
in LaTeX konvertiert -> <math>3\div4</math>/
sowie die Funktionrational()
wird als\frac{}{}
in LaTeX konvertiert -> <math>\frac{3}{4}</math>
Runden von Ergebnissen
Ergebnisse werden nicht mehr vom Evaluator gerundet. Stattdessen werden die Ergebnisse genau angegeben. Bsp.: exp(2)
wird zu e^2
evaluiert.
Soll das Ergebnis als Zahl angegeben werden, muss eine Funktion zum Runden genutzt werden. Beispiele: round(), ceil(), floor(),...
Auch über die Syntax-Flags zur Variablenersetzung ist es möglich, die Anzahl an Rundungsstellen zu definieren oder eine wissenschaftliche Schreibweise wie \(5 \cdot 10^{3}\) zu nutzen.
Kleine Änderungen
constE
alsconstE()
benutzbarconstPi
alsconstPi()
benutzbarIEEERemainder
alsiEEERemainder(...)
benutzbar