Add precise definitions and tests.
Merge pull request #2888 from CodeAnimal/precise

Add precise definitions and tests.