Empfehlungen für eine kleine c-basierte Vektor-und matrix-Bibliothek
Ich bin in der Notwendigkeit einer lightweight-Bibliothek für 2d & 3d-Vektoren und 3x3 & 4x4 Matrizen. Im basic-C.
Nur damit ich das Rad nicht neu erfinden suboptimally.
Irgendwelche Vorschläge?
Siehe auch: gibt es eine einfache Vektor - /matrix - /quaternion Mathematik-Bibliothek in reinem C? (geschlossen)
InformationsquelleAutor Hans Sjunnesson | 2008-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meschach ist ein c-nur Vektor - /matrix-Bibliothek, deutlich kleiner als z.B. LAPACK (laut den FAQ, zumindest 🙂
+1 für Meschach. Es ist etwas schneller als der blitz.
InformationsquelleAutor gnud
Viele Leute sagen, Sie verwenden verschiedene BLAS Bibliotheken, aber dies ist wahrscheinlich sehr langsam sein für Sie, da Sie arbeiten auf klein-Matrizen. Die meisten von Ihnen sind optimiert, um den chunk der matrix in festen Größen (rund um 50ish Elemente - abhängig von der cache-Größe) und betreiben auf dem Brocken mit einem optimierten Algorithmus, arbeiten Sie dann auf die Reste mit einem trivialen Algorithmus. Auf kleinen Matrizen, das macht es sogar noch langsamer als nur den Aufruf der triviale Algorithmus.
FWIW, wenn ich brauchte, um dies zu tun in fortran (2x2 und 4x4 quadratische matrix mults) habe ich nur hardcoded vollständig abgerollt Versionen und es funktionierte gut genug (20fachen Geschwindigkeit von builtin MATMUL auf gfortran, zum Teil aber dies war wahrscheinlich aufgrund der Tatsache, dass MATMUL ist nicht vorhanden und meine version war). Ich konnte nie finden, eine gute Bibliothek, dies zu tun für mich.
In C++ wäre es in Ordnung, da Sie in der Lage sein würde zu verwenden BLITZ aber leider...
InformationsquelleAutor Greg Rogers
Angenommen, Sie sind eine Codierung für x86, vielleicht schauen Sie in der Intel Integrated Performance Primitives (IPP) und Math Kernel Library (MKL). Diese bieten ein super-duper-schnell-Bibliotheken (wahrscheinlich schneller als jeder andere schreiben konnte, da Sie optimiert für den nicht-öffentlichen Mikroarchitektur details) für viele häufige Operationen, einschließlich Vektoren und Matrizen.
InformationsquelleAutor Matt J
Versuchen CIMG (cimg.sourceforge.net). Es ist Bild-Bearbeitung konzentriert, aber frei ist, extrem leicht (die gesamte Bibliothek besteht aus einer einzelnen .h-file!), und hat alle standard-Vektor/matrix-Operationen.
Ist es C++, so wird es nicht funktionieren, wenn du tust gerade C, aber es ist einen Blick Wert.
InformationsquelleAutor eglaser
Vielleicht sollten Sie versuchen, DirectX math-lib (nur Windows...). Vektoren, Matrizen, Operationen, alles, was Sie brauchen, ist wahrscheinlich schon dort. Sie können nur diese, nicht die ganze DX. Sie können die Verwendung von version 9 oder 10. Es ist schnell 🙂
InformationsquelleAutor Nazgob
Gibt es eine Menge von Optionen bei Mathtools.net. Objekt-Orientierte Numerik listet auch einige Pakete, die möglicherweise für Sie arbeiten. Da ich nicht sicher bin, was genau Sie tun (tun, müssen Sie eine Menge von optimierten linearen algebra? Oder werden einfache Operationen ausreichend sein?), es ist schwer, genauer zu sein.
Im Allgemeinen, die Matrix Template Library ist ziemlich gut durchdacht. Und wenn Sie benötigen einige ernsthafte lineare algebra Grunzen, sollten Sie schauen, BLAS und LAPACK.
InformationsquelleAutor Jason Sundram
Können Sie auch wollen, um einen Blick auf die Armadillo C++ - Bibliothek
InformationsquelleAutor