properly handle floating point numbers
restore ln and exp