fixed how solve_diff_eqn handles precision