pi - Matheparser/Taschenrechner

Über das Projekt Π

Offizielles Repository: GitHub.
Projekt-Thread in der Entwickler-Ecke: pi - Matheparsertaschenrechner

Syntax

Gleichungen eben ;)

Eine Besonderheit ist, dass mit dem Definition-Operator (:=) Ausdrücke direkt ohne Auswertung gespeichert werden können. Diese kann man dann durch eine spezielle Art des Funktionsaufrufs verwenden: Eckige Klammern führen eine Expression mit neuem Kontext aus, der durch die Ausdrücke in der Klammer vorbereitet werden kann.

Operatoren

Operatoren können auch durch Packages definiert werden. Eine Reihe ist jedoch immer definiert:

Datentypen

Unassigned
Kein Wert zugewiesen (wird intern verwendet; Darstellung: <?>)
Null
Nullwert
Integer
64bit Integer (long long)
-2^63 .. 2^64-1
Float
80bit Extended (long double)
3.6 x 10^-4951 bis 1.1 x 10^4932 bei 19–20 stelliger Genauigkeit
FloatDimension
Wie Float, jedoch mit physikalischer Dimension
String
Ansi-String
RangeList
Bereich, Darstellung: {Enfang->Ende, Schrittweite}
FixedList
Liste mehrerer Werte, Darstellung: {el1,el2,el3}

Ausdrücke, Werte und Variablen

Alles, was (syntaktisch korrekt) eingegeben werden kann wird als Ausdruck bezeichnet. Das Umfasst sowohl mathematische Ausdrücke ("Formeln") als auch Funktionsaufrufe, Listen etc. Um herauszufinden, wie ein Ausdruck definiert ist kann der Describe-Operator ? verwendet werden. Dieser verwendet die FullForm der Ausdrücke, die den Ausdruck als Baum der beteiligten Funktionen beschreibt.

In Π ist es möglich, Ausdrücke ohne vorherige Zuweisung an eine Variable zu verwenden. Darüber hinaus sind weitergehende Zuweisungen möglich.

Statische Zuweisungen mit = legen den Wert der sich bei der Auswertung des Ausdrucks auf der rechten Seite in der Variable im aktuellen Kontext ab. Dies kann also z.B. ein Zahlenwert sein.
Diese Syntax wird außerdem von manchen Funktionen verwendet, um Konfigurationsparameter angeben zu können und so das Verhalten der Funktionen zu beeinflussen.

Dynamische Zuweisungen mit := werten den Ausdruck nicht aus sondern speichern den Ausdruck selbst. Dieser kann dann später ausgewertet oder in weiteren dynamischen Zuweisungen verwendet werden. Das ermöglicht es, eine Funktion zu definieren und wiederholt für verschiedene Parameter aufzurufen.

Einheiten

Π unterstützt das Rechnen mit Einheiten direkt auf Ebene der algebraischen Funktionen. Dazu kann an einen Wert über den Einheiten-Operator _ ein Einheitenstring angehängt werden. Dabei stehen mehrere Schreibweisen zur Verfügung: Verwendung genau eines Bruchstrichs, Exponenten mit und ohne Potenzzeichen sowie Präfixe der Basis 10 von yocto bis yotta. Diese können optional mit einem Doppelpunkt abgetrennt werden. Ist eine Auflösung nicht eindeutig möglich, wird dieser zwingend erforderlich: nmi=Seemeilen, aber n:mi=Nano-Meilen

Die Grundrechenarten sowie Wurzeln und Potenzen und einige weitere Funktionen beachten Einheiten physikalisch korrekt. Jede andere Funktion wird einen dimensionierten Wert immer so behandeln wie eine einfache Zahl mit dem Anzeigewert. 1_'km/h' wird also wie 1 behandelt, obwohl der Grundwert in SI-Einheiten ungefähr 0.277 m/s entsprechen würde.

Der _-Operator ist als normaler Operator auch auf Variablen anwendbar, muss dann allerdings mit einem Leerzeichen abgetrennt werden. So kann man z.B. einfach Umrechnungen durchführen.

Funktionen

Funktionen sind in sogenannten Packages organisiert. Jedes dieser Packages stellt eine Einheit von Funktionen ähnlicher Kategorie dar.

Package Core

Das Package stellt System-Funktionen zur Verfügung.

Package Trig

Das Package stellt trigonometrische und hyperbolische Funktionen zur Verfügung.

Package Elementary

Das Package stellt grundlegende mathematische Funktionen zur Verfügung.

Package Numerical

Das Package stellt Funktionen zum Umgang mit Zahlenwerten und Zahlsystemen zur Verfügung.

Package Lists

Das Package stellt Funktionen zur Listen-Verarbeitung zur Verfügung.

Package Data

Das Package stellt Funktionen zum Arbeiten mit Dateien zur Verfügung.

Package String

Das Package stellt Funktionen zur Verarbeitung von Strings zur Verfügung.

Package Statistics

Das Package stellt Funktionen zu Statistischen Verteilungen zur Verfügung.

Package Graph

Das Package stellt Funktionen zum Erstellen und Anzeigen von Diagrammen und Plots zur Verfügung.
Alle range-Angaben sind Listen der 2 Grenzen: range={min, max}
Alle Funktionen, die Plot-Objekte erstellen backen den aktuellen Kontext zum Zeitpunkt ihrer Ausführung. Spätere Änderungen werden nicht übernommen. Das kann man verwenden, um Funktionsscharen zu plotten

Package Symbolics

Das Package implementiert Funktionen zur symbolischen Manipulation von Ausdrücken. Achtung: Experimentell!

Package Dimensions

Das Package bietet Funktionen zum erzeugen von Einheiten, mit denen dann gerechnet werden kann.
Es existiert eine Bibliothek von vordefinierten Einheiten, die mit SI-Prefixen verbunden werden können. Dabei kann sowohl die "natürliche" Syntax ls auch die getrennte Syntax verwendet werden (km = k:m = m * 1E3). Ist eine Prefix/Einheit-Kombination nicht eindeutig, muss die getrennte Syntax angewendet werden.

License

This license applies to everything in this package, except where otherwise
noted. Parts taken from other authors may be subject to their own licenses.


This project is available under a dual-license model, applying either (1) or (2):

1. Non-Commercial and Evaluation Use:
   This Source Code Form is subject to the terms of the Mozilla Public License,
   v. 2.0. If a copy of the MPL was not distributed with this package, You can
   obtain one at http://mozilla.org/MPL/2.0/

   If you use this software in a product, an acknowledgment in the product
   documentation would be appreciated but is not required.

2. Commercial Use:
  A special permission is required, please contact us for details.