- Notifications
You must be signed in to change notification settings - Fork1
📐 The fastest and smallest Go math library for constrained environments, like microcontrollers or WebAssembly.
License
NotificationsYou must be signed in to change notification settings
orsinium-labs/tinymath
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
The fastest Go math library for constrained environments, like microcontrollers or WebAssembly.
- Optimizes for performance and small code size at the cost of precision.
- Uses float32 because most microcontrollers (likeESP32) have much faster computation for float32 than for float64.
- Designed and tested to work with both Go andTinyGo, hence the name.
- Most algorithms are ported frommicromath Rust library.
- Zero dependency.
go get github.com/orsinium-labs/tinymath
fmt.Println(tinymath.Sin(tinymath.Pi))
Here is a comparison of WebAssembly binary size (built with TinyGo) when using tinymath vs stdlib math:
| function | tinymath | stdlib | ratio |
|---|---|---|---|
| atan | 106 | 367 | 28% |
| atan2 | 167 | 782 | 21% |
| exp | 463 | 2722 | 17% |
| fract | 166 | 154 | 107% |
| hypot | 67 | 203 | 33% |
| ln | 196 | 4892 | 4% |
| powf | 701 | 9167 | 7% |
| round | 129 | 171 | 75% |
| sin | 125 | 1237 | 10% |
| sqrt | 57 | 57 | 100% |
| tan | 138 | 1137 | 12% |
| trunc | 57 | 57 | 100% |
To reproduce:python3 size_bench.py
About
📐 The fastest and smallest Go math library for constrained environments, like microcontrollers or WebAssembly.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.