...
Function | Bounds-checking |
|---|---|
acos | -1 <= x && x <= 1 |
atan2 | x != 0 || y != 0 |
log, log10 | x >= 0 |
pow(x, y) | x != 0 || y > 0 |
sqrt | x >= 0 |
The calling function should take alternative action if these bounds are violated.
acos
...
(x), asin
...
(x)
Non-Compliant Example
| Wiki Markup |
|---|
The following code may produce a domain error if the argument is not in the range \[-1, \+1\]. |
| Code Block |
|---|
float x, result; result = acos(x); |
...
| Code Block |
|---|
float x, y, result;
if( fpclassify(x) == FP_ZERO && fpclassify(y) == FP_ZERO){
/* handle domain error */
}
result = atan2(y, x);
|
log
...
(x), log10
...
(x)
Non-Compliant Example
The following code may produce a domain error if x is negative and a range error if x is zero.
...
| Code Block |
|---|
float x, y, result;
if(fpclassify(x) == FP_ZERO && islessequal(y, 0)){
/* handle domain error condition */
}
result = pow(x, y);
|
...
sqrt(x)
Non-Compliant Solution
The following code may produce a domain error if x is negative.
...