ISODD returns TRUE for members (N) of a numeric array, which
- are within the range of ±bitmax
- are integers such that N == fix(N)
- are integers not evenly divisible by 2
Unlike the typical computational approach using REM/MOD,
ISODD produces a not-valid flag for numbers, which are
1) not an integer
2) larger than the maximum possible double precision
integer representation (±bitmax)
and does never return their parity as being odd
REM/MOD, on the other hand, do not complain if an input
is not a valid candidate for being even or odd at all
and, therefore, are NOT reliable parity checkers
> help isodd
for usage and a brief example for this small utility
us (2021). isodd: a pedestrian parity checker (https://www.mathworks.com/matlabcentral/fileexchange/24278-isodd-a-pedestrian-parity-checker), MATLAB Central File Exchange. Retrieved .
Another thing that confuses me:
1 0 1 0 1
1 0 1 0 1
Shouldn't "b" be all ones in this case?
I found a bug:
because abs() will round the result to fit in int8, so abs(x)=127. Same for all "weird numbers" in two complement form intN(-2^(N-1)).
I uploaded a similar function, but with only one input and one output. An error is raised if input is wrong. It depends on the application what is most useful i guess. (My function also had a few bugs first, but I hope it is sorted out now. The updated version should appear soon.)
Finally, a standard file which can be referenced for the perennial NG question! Well done. Thanks Urs.
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!