А почему бы не воспользоваться уже известным разложением?