make everything single precision + optimize source data reading a little
add some comment + various fixes
add sse3 optimization and dynamic dispatcher