Notice: All code is provided as is. There is no warranty that it runs on your platform, or that it will be appropriate to solve your problem. Unfortunately, I will not be able to reply to questions on how to run the code on a particular platform. I would be happy to receive reports on ways to improve the code and potential mistakes. If you end up using the code, please send me an email to let me know what the particular problem you worked on was.