--- 
:name: slarzb
:md5sum: 902d5ca8735017153470221c8083e9c9
:category: :subroutine
:arguments: 
- side: 
    :type: char
    :intent: input
- trans: 
    :type: char
    :intent: input
- direct: 
    :type: char
    :intent: input
- storev: 
    :type: char
    :intent: input
- m: 
    :type: integer
    :intent: input
- n: 
    :type: integer
    :intent: input
- k: 
    :type: integer
    :intent: input
- l: 
    :type: integer
    :intent: input
- v: 
    :type: real
    :intent: input
    :dims: 
    - ldv
    - nv
- ldv: 
    :type: integer
    :intent: input
- t: 
    :type: real
    :intent: input
    :dims: 
    - ldt
    - k
- ldt: 
    :type: integer
    :intent: input
- c: 
    :type: real
    :intent: input/output
    :dims: 
    - ldc
    - n
- ldc: 
    :type: integer
    :intent: input
- work: 
    :type: real
    :intent: workspace
    :dims: 
    - ldwork
    - k
- ldwork: 
    :type: integer
    :intent: input
:substitutions: 
  ldwork: "MAX(1,n) ? side = 'l' : MAX(1,m) ? side = 'r' : 0"
:fortran_help: "      SUBROUTINE SLARZB( SIDE, TRANS, DIRECT, STOREV, M, N, K, L, V, LDV, T, LDT, C, LDC, WORK, LDWORK )\n\n\
  *  Purpose\n\
  *  =======\n\
  *\n\
  *  SLARZB applies a real block reflector H or its transpose H**T to\n\
  *  a real distributed M-by-N  C from the left or the right.\n\
  *\n\
  *  Currently, only STOREV = 'R' and DIRECT = 'B' are supported.\n\
  *\n\n\
  *  Arguments\n\
  *  =========\n\
  *\n\
  *  SIDE    (input) CHARACTER*1\n\
  *          = 'L': apply H or H' from the Left\n\
  *          = 'R': apply H or H' from the Right\n\
  *\n\
  *  TRANS   (input) CHARACTER*1\n\
  *          = 'N': apply H (No transpose)\n\
  *          = 'C': apply H' (Transpose)\n\
  *\n\
  *  DIRECT  (input) CHARACTER*1\n\
  *          Indicates how H is formed from a product of elementary\n\
  *          reflectors\n\
  *          = 'F': H = H(1) H(2) . . . H(k) (Forward, not supported yet)\n\
  *          = 'B': H = H(k) . . . H(2) H(1) (Backward)\n\
  *\n\
  *  STOREV  (input) CHARACTER*1\n\
  *          Indicates how the vectors which define the elementary\n\
  *          reflectors are stored:\n\
  *          = 'C': Columnwise                        (not supported yet)\n\
  *          = 'R': Rowwise\n\
  *\n\
  *  M       (input) INTEGER\n\
  *          The number of rows of the matrix C.\n\
  *\n\
  *  N       (input) INTEGER\n\
  *          The number of columns of the matrix C.\n\
  *\n\
  *  K       (input) INTEGER\n\
  *          The order of the matrix T (= the number of elementary\n\
  *          reflectors whose product defines the block reflector).\n\
  *\n\
  *  L       (input) INTEGER\n\
  *          The number of columns of the matrix V containing the\n\
  *          meaningful part of the Householder reflectors.\n\
  *          If SIDE = 'L', M >= L >= 0, if SIDE = 'R', N >= L >= 0.\n\
  *\n\
  *  V       (input) REAL array, dimension (LDV,NV).\n\
  *          If STOREV = 'C', NV = K; if STOREV = 'R', NV = L.\n\
  *\n\
  *  LDV     (input) INTEGER\n\
  *          The leading dimension of the array V.\n\
  *          If STOREV = 'C', LDV >= L; if STOREV = 'R', LDV >= K.\n\
  *\n\
  *  T       (input) REAL array, dimension (LDT,K)\n\
  *          The triangular K-by-K matrix T in the representation of the\n\
  *          block reflector.\n\
  *\n\
  *  LDT     (input) INTEGER\n\
  *          The leading dimension of the array T. LDT >= K.\n\
  *\n\
  *  C       (input/output) REAL array, dimension (LDC,N)\n\
  *          On entry, the M-by-N matrix C.\n\
  *          On exit, C is overwritten by H*C or H'*C or C*H or C*H'.\n\
  *\n\
  *  LDC     (input) INTEGER\n\
  *          The leading dimension of the array C. LDC >= max(1,M).\n\
  *\n\
  *  WORK    (workspace) REAL array, dimension (LDWORK,K)\n\
  *\n\
  *  LDWORK  (input) INTEGER\n\
  *          The leading dimension of the array WORK.\n\
  *          If SIDE = 'L', LDWORK >= max(1,N);\n\
  *          if SIDE = 'R', LDWORK >= max(1,M).\n\
  *\n\n\
  *  Further Details\n\
  *  ===============\n\
  *\n\
  *  Based on contributions by\n\
  *    A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA\n\
  *\n\
  *  =====================================================================\n\
  *\n"
