File Exchange

image thumbnail

isodd: a pedestrian parity checker

version (2.58 KB) by us
ISODD returns TRUE for integers of any numeric MATLAB class that are not evenly divisible by 2


Updated 14 Aug 2009

View License

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

Cite As

us (2020). isodd: a pedestrian parity checker (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (4)

Another thing that confuses me:
>> [a,b]=isodd(1:5)
a =
1 0 1 0 1
b =
1 0 1 0 1
Shouldn't "b" be all ones in this case?

I found a bug:
>> x=int8(-128)
x =
>> isodd(x)
ans =
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.)

Matt Fig

Finally, a standard file which can be referenced for the perennial NG question! Well done. Thanks Urs.


change in the help section; version tag 14-Aug-2009 20:35:23

any integer input now is typecast to double before testing; version tag 13-Aug-2009 23:18:39

user request: ND arrays now return the results encapsulated in cells; version tag 29-May-2009 21:36:47

help/example section reorganized; version tag 29-May-2009 15:03:56

changed the output TFODD to mark valid odd integers only; thus, the syntax vec(tfodd&tferr) now is simply vec(tfodd) for odd and vec(~tfodd&tferr) for even integers; version tag 28-May-2009 22:43:42

an annoying typo was corrected

MATLAB Release Compatibility
Created with R2009a
Compatible with any release
Platform Compatibility
Windows macOS Linux