61 lines
1.5 KiB
Plaintext
61 lines
1.5 KiB
Plaintext
|
|
||
|
Vectorial - vector math library
|
||
|
|
||
|
|
||
|
|
||
|
Motivation
|
||
|
|
||
|
I couldn't find an open source math library that was usable and
|
||
|
supported simd - especially the ARM NEON variant.
|
||
|
|
||
|
|
||
|
Features
|
||
|
|
||
|
Supports NEON, SSE, scalar and generic gcc vector extension.
|
||
|
Most basic vector and matrix math is available, but not quite
|
||
|
yet full featured.
|
||
|
|
||
|
|
||
|
Design
|
||
|
|
||
|
Vectorial consists of two main parts, pure-C wrapper around
|
||
|
platform-specific vector instructions in the simd*.h files
|
||
|
and C++ classes for common uses, the vec*.h and mat*.h
|
||
|
|
||
|
The config.h autodetects approriate vector instructions to use.
|
||
|
|
||
|
The platform-specific support is done with intrisincs only,
|
||
|
allowing the compiler to have a full view of the code, hopefully
|
||
|
resulting in better optimizations especially with reordering etc.
|
||
|
|
||
|
|
||
|
Installation / Usage
|
||
|
|
||
|
Add vectorial/include to your include path
|
||
|
|
||
|
#include "vectorial/simd4f.h"
|
||
|
for C-only simd wrapper, using it looks like this:
|
||
|
simd4f v = simd4f_normalize( simd4f_add( simd4f_create(1,2,3,4), y) );
|
||
|
float z = simd4f_get_z(v);
|
||
|
|
||
|
#include "vectorial/vectorial.h"
|
||
|
for C++ classes. They reside in vectorial namespace, you might
|
||
|
want to alias them to your own namespace
|
||
|
namespace myproject {
|
||
|
using namespace ::vectorial;
|
||
|
// if you like different name: typedef vec3f Vector3;
|
||
|
}
|
||
|
using myproject::vec4f;
|
||
|
|
||
|
vec4f v = normalize( vec4f(1,2,3,4) + y );
|
||
|
float z = v.z();
|
||
|
|
||
|
|
||
|
License
|
||
|
|
||
|
2-clause BSD. See LICENSE
|
||
|
|
||
|
|
||
|
|
||
|
|