The first function requires type constraint because n could be an integer or a real The second function does not require type constraint because Math.sin takes a real to a real, meaning that the compiler would be able to infer that this function takes a real to a real The third function requires type constraint because k could be an integer or a real