-
-
Ich habe mich entschieden, die nummerischen Aspekte von Math.NET in
eine seperate kleine Bibliothek auszulagern. Neben rein
organisatorischen Gründen und dem stetigen Anwachsen der Bibliothek in
letzter Zeit verhindert die Abspaltung ein vermischen der nummerischen
und symbolischen Aspekte und entsprechende potentielle Redundanzen.
Dazu kommt die Tatsache, dass in der Praxis häufig rein nummerische
Probleme gelöst werden müssen; der symbolische Overhead ist dabei nur
störend.
Die neue Unterbibliothek, Math.NET Library Numerical, ist
eine reine API (unabhängig vom Math.NET Operatorensystem) und somit
wesentlich produktiver und "straight forward" in der programmatischen
Anwendung. Sie repräsentiert das nummerische Backend des ScalarExpression Typs in Math.NET und erlaubt ein beliebiges Umschalten zwischen verschiedenen Fliesskomma Zahlensystemen wie Double Precision und Arbitrary Precision, die durch Vererbung zum generalisierten Numerical Typ zusammengeführt werden. Der auf Numerical aufbauende Typ ComplexNumerical, der eine komplexe Zahl in kartesischer oder polarer Form darstellt, wird wahrscheinlich die Grundlage der ScalarExpression bilden.
Für
die Unterbibliothek wäre es interessant, wenn sie von bewiesenen und
besonders effizienten Algorithmen (besonders bzgl. der Linearen
Algebra) in bestehenden OpenSource Projekten wie beispielsweise .num oder Mapack
(die wiederum auf Systemen wie LAPACK und BLAS aufbauen) profitieren
könnte. Allerdings musste ich bereits einige lizenztechnische Hürden
ausmachen, insbesondere da sich eines der Projekte aufgrund schlechter
Erfahrungen leider (aber verständlicherweise) möglicherweise aus der
Opensource Gemeinde zurückziehen möchte ...