This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.


Assertions for debugging

MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.




The statement assert(cond) declares that the condition cond holds true at the moment when the statement is evaluated. By default, MuPAD® does not care about assertions. After setting testargs(TRUE), however, MuPAD checks every assertion and stops with an error if boolean evaluation of cond does not give TRUE.

Assertions are a major debugging tool for programmers: by stating frequently what they think to have achieved, programmers make it easy for themselves to detect the first unintended intermediate result.


Example 1

Suppose we want to write a function f that takes an integer as its argument and returns 0 if that integer is a multiple of 3, and 1 otherwise. One idea how to code this could be the following: given an integer n, n modulo 3 must be equal to one of - 1, 1, or 0. In any case, abs(n mod 3) should do what we want:

f := proc(n: DOM_INT): DOM_INT
local k: DOM_INT;
  k := n mod 3;
  assert(k = 1 or k = -1 or k = 0);

Checking assertions is switched on or off using testargs:

oldtestargs := testargs(): testargs(FALSE): f(5)

The result does not equal 1. For debugging purposes, we switch on assertion checking:

testargs(TRUE): f(5)
Error: Assertion 'k = 1 or k = -1 or k = 0' has failed. [f]

This shows that the local variable k must have gotten a wrong value. Indeed, when writing our program we overlooked the difference between mod and the symmetric remainder given by mods.




A boolean expression

Return Values

assert returns TRUE or raises an error.

See Also

MuPAD Functions

Was this topic helpful?