summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rwxr-xr-xREADME.md86
1 files changed, 86 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100755
index 0000000..a3f2732
--- /dev/null
+++ b/README.md
@@ -0,0 +1,86 @@
+# C Header Libraries
+
+The following libraries are *highly* experimental and should be treated as such. The intent of this repository is archival in nature. While I do use many of the following libraries in my projects, they are not production ready.
+
+Please feel free to create issues, and pull requests are always welcome.
+
+## ann.h - Artifical Neural Network
+
+This library provides an implementation of a fully connected, artifical neural network with backpropagation. The entirety of the ANN is stored in a single memory allocation, allowing for ease in persisting models and training via external methods.
+
+### Activation Functions
+
+The activation function for hidden layers can be chosen independently from that used for the output layer.
+
+- Identity
+- Binary
+- Sigmoid
+- RELU
+- ELU
+- LRELU
+- Tanh
+
+## bin.h - Flat File Block Storage
+
+This library is an experiment in storing ordered numerical data as binary "flat files". The contained data must be of a fixed block size. The primary goal of the library is to provide a simple method of persisting and caching data that is time-series in nature. The resulting files should be short lived.
+
+### Format
+
+The file header contains two 64 bit unsigned integers, block count and block size. The rest of the file contains the block data.
+
+Each block must possess a numerical key/index as the first element. Prior to using the library, a ```typedef [numerical_type] bin_key_t``` must be declared in the implementation file.
+
+**Operations:** read, write, insert, append, search, and fuzzy search
+
+This is a naive library, and as such, does not provide input validation. If data is placed out of order, *there it will remain.*
+
+## escape.h - ANSI Escape Codes
+
+This library provides utility functions/macros for an assortment of ANSI escape codes.
+
+## flat.h - Directory Traversal
+
+This library provides a simple wrapper for traversing POSIX file systems. The intention for this library is to be used alongside bin.h, for the purpose of traversing hierarchial directory structures.
+
+## genetic.h - Genetic Algorithm
+
+An implementation of a genetic algorithm. The library exposes a single function for creating a new generation of individuals. The function is "generic", meaning that the respective operations for crossover, mutation, and fitness are passed as as function pointers.
+
+### Algorithm Overview
+
+**1. Crossover**
+
+- Determine the selection cutoff for the population.
+- Replace all unfit individuals by preforming a crossover operation with two randomly selected fit indivuals.
+
+**2. Mutation**
+
+- Determine the number of mutation operations, and perform those on a randomly selected individual.
+
+**3. Fitness**
+
+- Sort the population by descending fitness, in preparation for the next generation.
+
+## pool.h - Memory Pool
+
+A free-list based memory pool. The pool has a fixed size after allocation.
+
+**Note:** The size of a block must be greater than or equal to ```sizeof(void *)```
+
+## stack.h - Stack Implementation
+
+A stack implementation to be used with pushdown.h
+
+**Note:** A pop operation on an empty stack will return 0/NULL.
+
+## pushdown.h - A Pushdown/Stack Automata
+
+This file provides an implementation of a pushdown/stack automata.
+
+## ufo.h - Universal Functions Originator
+
+ An implementation of the symbolic regression technique known as a Universal Functions Originator. The originating paper can be found [here](https://doi.org/10.1016/j.asoc.2020.106417).
+
+## uri.h - URI Builder
+
+A simple, and likely incomplete, implementation of a "builder" pattern to generate URIs as defined by [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). The URIs are stored interally as separate blocks, enabling sequential URIs to be generated with ease.