This - the second answer - is one of the best general answers to your question I found without spending too much time at it. As is mentioned there and several other places, the precision you seek...