# Game Math for Me
A math library for video games that allow independent management of data.
Just like [DirectXMath](https://github.com/microsoft/DirectXMath), data and vectors are divided.
# Design
### Data Type
Data types are designed to be used when storing data in files or exchanging it with other systems.
#### Example
```rust
use gmm::Float4;
let a = Float4::new(1.0, 2.0, 3.0, 4.0);
let s = Float4::fill(5.0);
let res = a + s;
println!("{} + {} = {}", a, s, res);
```
### Vector Type
Vector types are designed to be used when processing calculations.
Some systems use `SIMD` instructions.
#### Example
```rust
use gmm::Vector;
let a = Vector::new(1.0, 2.0, 3.0, 4.0);
let s = Vector::fill(5.0);
let res = a + s;
println!("{} + {} = {}", a, s, res);
```
# Features
### Supports SIMD operations
The gmm library supports SIMD instructions on the `x86`, `x86_64` and the `aarch64` architecture.
### Compile Features
- `bytemuck` - Enables the bytemuck library implementation.
- `serde` - Enables the serde library implementation.
- `mint` - Enables the mint library implementation.
- `scalar-math` - Disable the simd instruction in the library.
- `use-assertion` - Allow panic calls within a function.
# License
MIT license (LICENSE or http://opensource.org/licenses/MIT)