There is this thing though: https://en.wikipedia.org/wiki/Risch_algorithm , the best practical implementation was Axiom CAS