Comparison of three (slightly) different implementations.
Project page on GitHub You can download a ready to launch executable or all of the source code from GitHub, here's how you do it.