The algorithms and most of the code is not my own. I have refactored the code to be more module-friendly and I have added a few functions. I mostly consider myself a maintainer of the code, but I feel I have made enough changes so I have changed the copyright notices to be in my name. Appropriate credits have been included in this README under References. I do not guarantee any of the algorithms to be accurate, and appropriate testing should be done before this module is relied upon for accuracy.