...
Function | Bounds-checking |
---|---|
acos(x), asin (x) | -1 <= x && x <= 1 |
atan2 | x != 0 || y != 0 |
log, log10 | x >= 0 |
pow(x, y) | x != 0 || y > 0 |
sqrt (x) | 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.
...