RANK

Computes the mathematical rank of a matrix.

Function Return Value

Integer rank of  A.  The output function value is an integer with a value equal to the number of singular values that are greater than a tolerance.  (Output)

Required Argument

A — Matrix for which the rank is to be computed. The argument must be rank-2 or rank-3 (box) array of type single, double, complex, or double complex. (Input)

Optional Arguments, Packaged Options

This function uses lin_sol_svd to compute the singular values of the argument. The singular val­ues are then compared with the value of the tolerance to compute the rank.

The option and derived type names are given in the following tables:

Option Names for RANK

Option Value

?_rank_set_small

1

?_rank_for_lin_sol_svd

2

 

Name of Unallocated Option Array
to Use for Setting Options

Use

Derived Type

?_rank_options(:)

Use when setting options for calls hereafter.

?_options

?_rank_options_once(:)

Use when setting options for next call only.

?_options

For a description on how to use these options, see Matrix Optional Data Changes.  See lin_sol_svd located in Chapter 1, “Linear Systems”  for the specific options for this routine.

FORTRAN 90 Interface

RANK (A)

Description

Computes the mathematical rank of a rank-2 or rank-3 array. The output function value is an integer with a value equal to the number of singular values that are greater than a tolerance.  The default value for this tolerance is , where  is machine precision and is the largest singular value of the matrix. 

Examples

 

 use linear_operators

 real (kind(1e0)) A(5,5)

 A = rand (A)

 write (*,*) rank(A)

 A=1.0

 write (*,*) rank(A)

 end 

Output

     5

     1

Parallel Example

 

 use linear_operators

 use mpi_setup_int

 

 integer, parameter :: N=3, nr=4

 integer  r(nr)

 real (kind(1.e0)) s_mat(N,N), s_box(N,N,nr)

! Setup for MPI

  mp_nprocs = mp_setup()

 

  if (mp_rank == 0) then

      s_mat = reshape((/1.,0.,0.,epsilon(1.0e0)/),(/n,n/))

      s_box = spread(s_mat,dim=3,ncopies=nr)

  end if

 

      r = rank(s_box)

 

 mp_nprocs = mp_setup ('Final')

 

 end


Visual Numerics, Inc.
Visual Numerics - Developers of IMSL and PV-WAVE
http://www.vni.com/
PHONE: 713.784.3131
FAX:713.781.9260