The basic algorithms are very simple; you could implement yourself. Getting great performance is a different matter.