Doolittle algorithm