Как привести формулу к нормальной записи?
Распарсите формулу в дерево.
Линеаризуйте дерево с сортировкой элементов по алфавиту.
Для начала не хватает описания что такое "нормальная запись". Я думаю если вы сформулируете список правил, то потом работа пойдет легче. 
Только учесть придется очень много всего:
sin(x) и sin^1(x) и sin^(1)(x) и даже (sin^1(x))
В общем пока не ясно как это вообще воплотимо.