4968

Kompatibel zu Mathematica 11

MathCode C++

Optimierter C++-Code aus Mathematica-Programmen

MathCode kompiliert Mathematica-Funktionen in hocheffizienten und lesbaren C++-Code. Mathematica und MathCode C++ stellen eine Plattform für die schnelle Entwicklung von Code in Industriequalität dar, die für schwierige Simulationen und andere umfangreiche Berechnungen benötigt wird. MathCode C++ als System zur Codeerzeugung bietet dem Mathematica-Entwickler eine hohe Leistung, Vernetzung und eine einfach zu bedienende Matrix-Arithmetik. Im Zentrum steht die Übersetzung einer Mathematica-Code-Teilmenge nach C++. Dazu benötigt MathCode C++ einen externen C++-Kompiler, jedoch wird das gesamte Zusammenspiel mit dem Kompiler durch Funktionen in MathCode C++ gesteuert.

Des Weiteren können Mathematica-Zusatzpakete in ausführbare Programme kompiliert und nahtlos in Mathematica integriert werden. Die Funktionen eines Mathematica-Zusatzpakets, die der Anwender kompilieren möchte, müssen dazu allerdings numerische Argumente verwenden und numerische Ergebnisse an MathCode C++ zurückliefern, damit C++-Code erzeugt werden kann. Symbolischer Mathematica-Code kann jedoch Teil einer Funktionsdefinition sein, wenn die symbolischen Operationen als arithmetische Ausdrücke einer erweiterten Klasse von elementaren Funktionen erweitert werden können. Bereits bestehende C++-Funktionen/Bibliotheken können darüber hinaus während des Kompilierens mit Mathematica verlinkt werden.

MathCode C++ ermöglicht die Entwicklung von Prototypen innerhalb der leistungsfähigen und interaktiven Mathematica-Umgebung. Diese Prototypen können automatisch in schnellen Produktionscode nach C++ übersetzt und mit externen Applikationen verlinkt werden. Ebenso können Rückrufe aus externen Applikationen automatisch erzeugt werden. Dies bedeutet, dass die Funktionalität von Mathematica, die nicht einfach in C++-Code übertragen werden kann, ebenso für externe Applikationen zugänglich wird.

Die Erzeugung von selbstständigem externem Code wird unterstützt, dabei wird keine Runtime-Lizenz für die Weitergabe des kompilierten Codes benötigt.

Die Schlüsselfunktionen von MathCode C++

  • Generierung von Standalone-C++-Code aus Mathematica-Code, optional mit MathLink an Mathematica angebunden
  • Kompilierung von komplexen arithmetischen Operationen, komplexen Funktionen (Re, Im, Abs, Arg und Conjugate) sowie trigonometrischen Funktionen für komplexe Zahlen und Felder
  • Kompilierung der Mathematica-Funktionen Fourier und InverseFourier
  • Unterstützung für komplexe Datentypen und Felder aus komplexen Zahlen
  • Unterstützung für g++ unter Linux und OS X sowie Visual C++ 2008/2010 unter Windows

Der Einsatz von MathCode C++ bietet folgende Vorteile:

  • Erhöhte Produktivität
    Die gesteigerte Geschwindigkeit von Mathematica Code bringt schnellere Analyseergebnisse und eine gesteigerte Produktivität.
  • Reduzierte Entwicklungszeit und -kosten
    Bei der Verwendung der leistungsfähigen Mathematica-Umgebung und der Erzeugung von C++-Code mit MathCode C++ können Entwicklungszeit und Kosten gespart werden.
  • Gesteigerte Flexibilität
    Mit dem Export von Mathematica-Funktionen für den Endanwender verbessert sich die Flexibilität.

Features

Features

  • Erzeugt lesbaren Code, verwendet Operatorenüberladung in C++.
  • Kompilieren von erzeugten Code aus Mathematica.
  • Nahtlose Installation von erzeugtem Code in Mathematica
  • Bequemes Hin- und Herschalten zwischen internem und erzeugtem Code.
  • Einfache Syntax für das Bestimmen von Typen innerhalb des erzeugten Codes.
  • Automatische symbolische Erweiterung und Eliminierung der Unterausdrücke.
  • Anpassung durch benutzerdefinierte Mathematica-Regeln, die in der Codeerzeugung ineinander verschachtelt werden.
  • Zur Vereinfachung des Auskoppelns von Spalten oder Untermatrizen gibt es eine einfachere Syntax für die Schachtelung von Matrizen, die sowohl in Mathematica als auch durch den erzeugten Code unterstützt werden.
  • Überschaubare Syntax für das Verlinken externer Funktionen, einschließlich des Argument-Typs, der Ordnung und des "Aufrufs durch Referenz".
  • Unterstützung der Interpolationsfunktionen
  • Mathematica-Listen und -Matrizen werden mit Hilfe der LightMat-C++-Klassenbibliothek dargestellt:
    • Hohe Lesbarkeit und Effizienz durch Verwendung von C++-Templates und Operatoren-Überladung.
    • Getrennte Implementierung jeder Matrix und jedes Listentyps für hohe Geschwindigkeit.
    • Optimierte Standardoperationen auf Listen und Matrizen.
    • Spaltendarstellung nach Hauptordnung zur einfachen Verknüpfung von numerischen Paketen in C++.