**di**viding **rect**angles, and the algorithms that stem from it. for a description and history of these methods, please refer to ["The DIRECT algorithm: 25 years Later."](https://link.springer.com/article/10.1007/s10898-020-00952-6) i don't plan on implementing the original DIRECT algorithm itself, but i've heard through the grapevine that [scipy](https://docs.scipy.org/doc/scipy/reference/optimize.html#global-optimization) is getting its own DIRECT implementation soon. `birect.py` is a modification of DIRECT that divides hyper-rectangles into halves instead of thirds, and re-uses one point per evaluation. there's a couple other devils in the details, but that's the gist of it. `soo.py` allows for an arbitrary (K≥2) number of subdivisions, behaving somewhat similar to BIRECT (K=2), DIRECT (K=3), and beyond. SOO stands for **S**imultaneous **O**ptimistic **O**ptimization. SOO is typically not as efficient as the other algorithms, but it is simpler to implement, especially when K is fixed to a constant. curiously, SOO is not covered in the aforementioned article, so please refer to ["Optimistic Optimization of a Deterministic Function without the Knowledge of its Smoothness."](https://team.inria.fr/sequel/software/soo/) i'm in the process of writing comments for these files, so if you have any curiosities, i suggest you take a peek at the code first.