38 lines
1.7 KiB
Markdown
38 lines
1.7 KiB
Markdown
# PANIC
|
|
|
|
**Portable Algorithms and Numerics In C++**
|
|
|
|
PANIC is a from-scratch C++ foundation for numerical and scientific computing. The goal is not to compete with mature, highly optimized libraries. The goal is to build readable, portable, dependency-light implementations of the core pieces needed for experiments, learning, embedded systems, and scientific code.
|
|
|
|
PANIC is intentionally written from first principles. Math functions, vector operations, matrix operations, tensor structures, neural-network components, and future simulation tools are implemented directly instead of being wrapped around large external dependencies.
|
|
|
|
## Goals
|
|
|
|
* Write clear numerical code that can be understood and modified.
|
|
* Keep the core portable and dependency-light.
|
|
* Provide optional parallel implementations where useful.
|
|
* Build toward embedded and microcontroller-friendly use.
|
|
* Support scientific computing experiments from a common foundation.
|
|
|
|
## Planned modules
|
|
|
|
* `panic::math` - scalar math, vector operations, matrix operations, tensor operations
|
|
* `panic::tensor` - tensor, matrix, and vector data structures
|
|
* `panic::random` - random number generation and sampling utilities
|
|
* `panic::neural_network` - neural-network layers, activations, losses, and training utilities
|
|
* `panic::interpolation` - interpolation of systems
|
|
|
|
## Philosophy
|
|
|
|
PANIC exists because sometimes the point is not to use the most convenient tool. Sometimes the point is to understand the tool by rebuilding it.
|
|
|
|
This project favors clarity, portability, and experimentation over peak performance.
|
|
|
|
## Status
|
|
|
|
Early development. Interfaces, file structure, and module names may change frequently.
|
|
|
|
## License
|
|
|
|
Private for now. A license will be chosen before public release.
|