Encog is a machine learning framework available for Java, .Net, and C++. Encog supports different learning algorithms such as Bayesian Networks, Hidden Markov Models and Support Vector Machines. However, its main strength lay in its neural network algorithms. Encog contains classes to create a wide variety of networks, as well as support classes to normalize and process data for these neural networks. Encog trains using many different techniques. Multithreading is used to allow optimal training performance on multicore machines. The C++ version of Encog can offload some processing to an OpenCL compatible GPU for further performance gains. Encog can be used for many tasks, including medical