--- 
:name: slarra
:md5sum: 8c265e4b5b823f839c614ef3bc019488
:category: :subroutine
:arguments: 
- n: 
    :type: integer
    :intent: input
- d: 
    :type: real
    :intent: input
    :dims: 
    - n
- e: 
    :type: real
    :intent: input/output
    :dims: 
    - n
- e2: 
    :type: real
    :intent: input/output
    :dims: 
    - n
- spltol: 
    :type: real
    :intent: input
- tnrm: 
    :type: real
    :intent: input
- nsplit: 
    :type: integer
    :intent: output
- isplit: 
    :type: integer
    :intent: output
    :dims: 
    - n
- info: 
    :type: integer
    :intent: output
:substitutions: {}

:fortran_help: "      SUBROUTINE SLARRA( N, D, E, E2, SPLTOL, TNRM, NSPLIT, ISPLIT, INFO )\n\n\
  *  Purpose\n\
  *  =======\n\
  *\n\
  *  Compute the splitting points with threshold SPLTOL.\n\
  *  SLARRA sets any \"small\" off-diagonal elements to zero.\n\
  *\n\n\
  *  Arguments\n\
  *  =========\n\
  *\n\
  *  N       (input) INTEGER\n\
  *          The order of the matrix. N > 0.\n\
  *\n\
  *  D       (input) REAL             array, dimension (N)\n\
  *          On entry, the N diagonal elements of the tridiagonal\n\
  *          matrix T.\n\
  *\n\
  *  E       (input/output) REAL             array, dimension (N)\n\
  *          On entry, the first (N-1) entries contain the subdiagonal\n\
  *          elements of the tridiagonal matrix T; E(N) need not be set.\n\
  *          On exit, the entries E( ISPLIT( I ) ), 1 <= I <= NSPLIT,\n\
  *          are set to zero, the other entries of E are untouched.\n\
  *\n\
  *  E2      (input/output) REAL             array, dimension (N)\n\
  *          On entry, the first (N-1) entries contain the SQUARES of the\n\
  *          subdiagonal elements of the tridiagonal matrix T;\n\
  *          E2(N) need not be set.\n\
  *          On exit, the entries E2( ISPLIT( I ) ),\n\
  *          1 <= I <= NSPLIT, have been set to zero\n\
  *\n\
  *  SPLTOL (input) REAL            \n\
  *          The threshold for splitting. Two criteria can be used:\n\
  *          SPLTOL<0 : criterion based on absolute off-diagonal value\n\
  *          SPLTOL>0 : criterion that preserves relative accuracy\n\
  *\n\
  *  TNRM (input) REAL            \n\
  *          The norm of the matrix.\n\
  *\n\
  *  NSPLIT  (output) INTEGER\n\
  *          The number of blocks T splits into. 1 <= NSPLIT <= N.\n\
  *\n\
  *  ISPLIT  (output) INTEGER array, dimension (N)\n\
  *          The splitting points, at which T breaks up into blocks.\n\
  *          The first block consists of rows/columns 1 to ISPLIT(1),\n\
  *          the second of rows/columns ISPLIT(1)+1 through ISPLIT(2),\n\
  *          etc., and the NSPLIT-th consists of rows/columns\n\
  *          ISPLIT(NSPLIT-1)+1 through ISPLIT(NSPLIT)=N.\n\
  *\n\
  *\n\
  *  INFO    (output) INTEGER\n\
  *          = 0:  successful exit\n\
  *\n\n\
  *  Further Details\n\
  *  ===============\n\
  *\n\
  *  Based on contributions by\n\
  *     Beresford Parlett, University of California, Berkeley, USA\n\
  *     Jim Demmel, University of California, Berkeley, USA\n\
  *     Inderjit Dhillon, University of Texas, Austin, USA\n\
  *     Osni Marques, LBNL/NERSC, USA\n\
  *     Christof Voemel, University of California, Berkeley, USA\n\
  *\n\
  *  =====================================================================\n\
  *\n"
