Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the data types for the function sq() #991

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

edgar-bonet
Copy link
Contributor

The current description states that the argument of sq() can have “any data type”, whereas only numeric types can be used.

The current description states that the returned value is a “double”, but this is only true if the argument is itself a double.

This pull request attempts to fix the types. It is, however, impossible to give a completely accurate description of the returned type without fully stating all the C++ rules of integral promotion, and this would be too much for the intended audience.

As a compromise, the proposed description is:

Data type: int if the argument type is smaller than an int (e.g. char), otherwise the returned value has the same type as the argument.

This captures the gist of integral promotion, and should be accurate on ILP32 (ARM). On IP16 (AVR), however, this simplified description implies that sq(short_var) is a short, whereas it is actually an int. I deem the inaccuracy acceptable given that, on IP16, short and int are basically the same thing (they have the same underlying representation).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant