add p() and tests for it

yay, play around with tests and corner cases and integers and things *gg*