Introduce union types to allow pow(2, n) to return int or float