| Using the C++ Math Library | ![]() |
Logical Values
In MATLAB, a logical value is either a logical scalar or an array of logical values. You create a logical array by calling the logical() function or by using a relational operator to compare two arrays. In C++, logical values are always scalars. A 1-by-1 mwArray object can be cast to a scalar. When an array object appears where a logical value is expected, C++ automatically attempts to cast the array to a scalar. This casting operation fails (raises an exception) if the array is not 1-by-1.
When a relational operation between arrays appears where a scalar Boolean value is required, you must use the MATLAB C++ Math Library function tobool() to reduce the result of the operation to a scalar Boolean. tobool() reduces any real or complex array to a Boolean true or false result. If you pass tobool() an empty array, it returns false.
For example, to test if every element in an array A is nonzero, write:
if (tobool(A != 0))
{
// test succeeded, do something
}
if and while statements in C++ require you to use these functions. Because the relational operators (<, >, <=, >=, == and !=) each return an array of logical values in both MATLAB and C++, it is necessary, when using the result of one of these operators in an if or while statement, to wrap it with a call to tobool().
There is one exception to this rule: if an array is a scalar, tobool() is unnecessary, since the compiler will attempt to convert the array, by default, to a double. However, if the array is not a scalar, this conversion fails at runtime and throws an exception.
| Control Structure | Name Conflicts with Standard C Library Functions | ![]() |