(octave.info)Predicates for Numeric Objects


Prev: Promotion and Demotion of Data Types Up: Numeric Data Types
Enter node , (file) or (file)node

4.8 Predicates for Numeric Objects
==================================

Since the type of a variable may change during the execution of a
program, it can be necessary to do type checking at run-time.  Doing
this also allows you to change the behavior of a function depending on
the type of the input.  As an example, this naive implementation of
‘abs’ returns the absolute value of the input if it is a real number,
and the length of the input if it is a complex number.

     function a = abs (x)
       if (isreal (x))
         a = sign (x) .* x;
       elseif (iscomplex (x))
         a = sqrt (real(x).^2 + imag(x).^2);
       endif
     endfunction

   The following functions are available for determining the type of a
variable.

 -- : isnumeric (X)
     Return true if X is a numeric object, i.e., an integer, real, or
     complex array.

     Logical and character arrays are not considered to be numeric.

     See also: Note: isinteger, *note isfloat:
     XREFisfloat, Note: isreal, *note iscomplex:
     XREFiscomplex, Note: ischar, *note islogical:
     XREFislogical, Note: isstring, *note iscell:
     XREFiscell, Note: isstruct, Note: isa.

 -- : islogical (X)
 -- : isbool (X)
     Return true if X is a logical object.

     See also: Note: ischar, Note: isfloat,
     Note: isinteger, Note: isstring, Note:
     isnumeric, Note: isa.

 -- : isfloat (X)
     Return true if X is a floating-point numeric object.

     Objects of class double or single are floating-point objects.

     See also: Note: isinteger, Note: ischar,
     Note: islogical, Note: isnumeric,
     Note: isstring, Note: isa.

 -- : isreal (X)
     Return true if X is a non-complex matrix or scalar.

     For compatibility with MATLAB, this includes logical and character
     matrices.

     See also: Note: iscomplex, *note isnumeric:
     XREFisnumeric, Note: isa.

 -- : iscomplex (X)
     Return true if X is a complex-valued numeric object.

     See also: Note: isreal, Note: isnumeric,
     Note: ischar, Note: isfloat, Note:
     islogical, Note: isstring, *note isa:
     XREFisa.

 -- : ismatrix (A)
     Return true if A is a 2-D array.

     See also: Note: isscalar, *note isvector:
     XREFisvector, Note: iscell, *note isstruct:
     XREFisstruct, Note: issparse, Note: isa.

 -- : isvector (X)
     Return true if X is a vector.

     A vector is a 2-D array where one of the dimensions is equal to 1.
     As a consequence a 1x1 array, or scalar, is also a vector.

     See also: Note: isscalar, *note ismatrix:
     XREFismatrix, Note: size, Note: rows, Note:
     columns, Note: length.

 -- : isrow (X)
     Return true if X is a row vector 1xN with non-negative N.

     See also: Note: iscolumn, *note isscalar:
     XREFisscalar, Note: isvector, *note ismatrix:
     XREFismatrix.

 -- : iscolumn (X)
     Return true if X is a column vector Nx1 with non-negative N.

     See also: Note: isrow, Note: isscalar,
     Note: isvector, Note: ismatrix.

 -- : isscalar (X)
     Return true if X is a scalar.

     See also: Note: isvector, *note ismatrix:
     XREFismatrix.

 -- : issquare (X)
     Return true if X is a square matrix.

     See also: Note: isscalar, *note isvector:
     XREFisvector, Note: ismatrix, Note: size.

 -- : issymmetric (A)
 -- : issymmetric (A, TOL)
     Return true if A is a symmetric matrix within the tolerance
     specified by TOL.

     The default tolerance is zero (uses faster code).

     Matrix A is considered symmetric if ‘norm (A - A.', Inf) / norm (A,
     Inf) < TOL’.

     See also: Note: ishermitian, *note isdefinite:
     XREFisdefinite.

 -- : ishermitian (A)
 -- : ishermitian (A, TOL)
     Return true if A is Hermitian within the tolerance specified by
     TOL.

     The default tolerance is zero (uses faster code).

     Matrix A is considered symmetric if ‘norm (A - A', Inf) / norm (A,
     Inf) < TOL’.

     See also: Note: issymmetric, *note isdefinite:
     XREFisdefinite.

 -- : isdefinite (A)
 -- : isdefinite (A, TOL)
     Return 1 if A is symmetric positive definite within the tolerance
     specified by TOL or 0 if A is symmetric positive semi-definite.
     Otherwise, return -1.

     If TOL is omitted, use a tolerance of ‘100 * eps * norm (A, "fro")’

     See also: Note: issymmetric, *note ishermitian:
     XREFishermitian.

 -- : isbanded (A, LOWER, UPPER)
     Return true if A is a matrix with entries confined between LOWER
     diagonals below the main diagonal and UPPER diagonals above the
     main diagonal.

     LOWER and UPPER must be non-negative integers.

     See also: Note: isdiag, Note: istril, Note:
     istriu, Note: bandwidth.

 -- : isdiag (A)
     Return true if A is a diagonal matrix.

     See also: Note: isbanded, Note: istril,
     Note: istriu, Note: diag, *note bandwidth:
     XREFbandwidth.

 -- : istril (A)
     Return true if A is a lower triangular matrix.

     A lower triangular matrix has nonzero entries only on the main
     diagonal and below.

     See also: Note: istriu, Note: isbanded,
     Note: isdiag, Note: tril, *note bandwidth:
     XREFbandwidth.

 -- : istriu (A)
     Return true if A is an upper triangular matrix.

     An upper triangular matrix has nonzero entries only on the main
     diagonal and above.

     See also: Note: isdiag, Note: isbanded,
     Note: istril, Note: triu, *note bandwidth:
     XREFbandwidth.

 -- : isprime (X)
     Return a logical array which is true where the elements of X are
     prime numbers and false where they are not.

     A prime number is conventionally defined as a positive integer
     greater than 1 (e.g., 2, 3, ...) which is divisible only by itself
     and 1.  Octave extends this definition to include both negative
     integers and complex values.  A negative integer is prime if its
     positive counterpart is prime.  This is equivalent to ‘isprime (abs
     (x))’.

     If ‘class (X)’ is complex, then primality is tested in the domain
     of Gaussian integers
     (<https://en.wikipedia.org/wiki/Gaussian_integer>).  Some
     non-complex integers are prime in the ordinary sense, but not in
     the domain of Gaussian integers.  For example, 5 = (1+2i)*(1-2i)
     shows that 5 is not prime because it has a factor other than itself
     and 1.  Exercise caution when testing complex and real values
     together in the same matrix.

     Examples:

          isprime (1:6)
              ⇒ [0, 1, 1, 0, 1, 0]

          isprime ([i, 2, 3, 5])
              ⇒ [0, 0, 1, 0]

     Programming Note: ‘isprime’ is appropriate if the maximum value in
     X is not too large (< 1e15).  For larger values special purpose
     factorization code should be used.

     Compatibility Note: MATLAB does not extend the definition of prime
     numbers and will produce an error if given negative or complex
     inputs.

     See also: Note: primes, Note: factor, Note:
     gcd, Note: lcm.

   If instead of knowing properties of variables, you wish to know which
variables are defined and to gather other information about the
workspace itself, Note: Status of Variables.


automatically generated by info2www version 1.2.2.9