stdlib_lapack_householder_reflectors.fypp Source File


Source Code

#:include "common.fypp" 
submodule(stdlib_lapack_base) stdlib_lapack_householder_reflectors
  implicit none


  contains
#:for ik,it,ii in LINALG_INT_KINDS_TYPES

     pure module subroutine stdlib${ii}$_slarf( side, m, n, v, incv, tau, c, ldc, work )
     !! SLARF applies a real elementary reflector H to a real m by n matrix
     !! C, from either the left or the right. H is represented in the form
     !! H = I - tau * v * v**T
     !! where tau is a real scalar and v is a real vector.
     !! If tau = 0, then H is taken to be the unit matrix.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_sp, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: incv, ldc, m, n
           real(sp), intent(in) :: tau
           ! Array Arguments 
           real(sp), intent(inout) :: c(ldc,*)
           real(sp), intent(in) :: v(*)
           real(sp), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           logical(lk) :: applyleft
           integer(${ik}$) :: i, lastv, lastc
           ! Executable Statements 
           applyleft = stdlib_lsame( side, 'L' )
           lastv = 0_${ik}$
           lastc = 0_${ik}$
           if( tau/=zero ) then
           ! set up variables for scanning v.  lastv begins pointing to the end
           ! of v.
              if( applyleft ) then
                 lastv = m
              else
                 lastv = n
              end if
              if( incv>0_${ik}$ ) then
                 i = 1_${ik}$ + (lastv-1) * incv
              else
                 i = 1_${ik}$
              end if
           ! look for the last non-zero row in v.
              do while( lastv>0 .and. v( i )==zero )
                 lastv = lastv - 1_${ik}$
                 i = i - incv
              end do
              if( applyleft ) then
           ! scan for the last non-zero column in c(1:lastv,:).
                 lastc = stdlib${ii}$_ilaslc(lastv, n, c, ldc)
              else
           ! scan for the last non-zero row in c(:,1:lastv).
                 lastc = stdlib${ii}$_ilaslr(m, lastv, c, ldc)
              end if
           end if
           ! note that lastc.eq.0_sp renders the blas operations null; no special
           ! case is needed at this level.
           if( applyleft ) then
              ! form  h * c
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastv,1:lastc)**t * v(1:lastv,1)
                 call stdlib${ii}$_sgemv( 'TRANSPOSE', lastv, lastc, one, c, ldc, v, incv,zero, work, 1_${ik}$ &
                           )
                 ! c(1:lastv,1:lastc) := c(...) - v(1:lastv,1) * w(1:lastc,1)**t
                 call stdlib${ii}$_sger( lastv, lastc, -tau, v, incv, work, 1_${ik}$, c, ldc )
              end if
           else
              ! form  c * h
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastc,1:lastv) * v(1:lastv,1)
                 call stdlib${ii}$_sgemv( 'NO TRANSPOSE', lastc, lastv, one, c, ldc,v, incv, zero, work,&
                            1_${ik}$ )
                 ! c(1:lastc,1:lastv) := c(...) - w(1:lastc,1) * v(1:lastv,1)**t
                 call stdlib${ii}$_sger( lastc, lastv, -tau, work, 1_${ik}$, v, incv, c, ldc )
              end if
           end if
           return
     end subroutine stdlib${ii}$_slarf

     pure module subroutine stdlib${ii}$_dlarf( side, m, n, v, incv, tau, c, ldc, work )
     !! DLARF applies a real elementary reflector H to a real m by n matrix
     !! C, from either the left or the right. H is represented in the form
     !! H = I - tau * v * v**T
     !! where tau is a real scalar and v is a real vector.
     !! If tau = 0, then H is taken to be the unit matrix.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_dp, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: incv, ldc, m, n
           real(dp), intent(in) :: tau
           ! Array Arguments 
           real(dp), intent(inout) :: c(ldc,*)
           real(dp), intent(in) :: v(*)
           real(dp), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           logical(lk) :: applyleft
           integer(${ik}$) :: i, lastv, lastc
           ! Executable Statements 
           applyleft = stdlib_lsame( side, 'L' )
           lastv = 0_${ik}$
           lastc = 0_${ik}$
           if( tau/=zero ) then
           ! set up variables for scanning v.  lastv begins pointing to the end
           ! of v.
              if( applyleft ) then
                 lastv = m
              else
                 lastv = n
              end if
              if( incv>0_${ik}$ ) then
                 i = 1_${ik}$ + (lastv-1) * incv
              else
                 i = 1_${ik}$
              end if
           ! look for the last non-zero row in v.
              do while( lastv>0 .and. v( i )==zero )
                 lastv = lastv - 1_${ik}$
                 i = i - incv
              end do
              if( applyleft ) then
           ! scan for the last non-zero column in c(1:lastv,:).
                 lastc = stdlib${ii}$_iladlc(lastv, n, c, ldc)
              else
           ! scan for the last non-zero row in c(:,1:lastv).
                 lastc = stdlib${ii}$_iladlr(m, lastv, c, ldc)
              end if
           end if
           ! note that lastc.eq.0_dp renders the blas operations null; no special
           ! case is needed at this level.
           if( applyleft ) then
              ! form  h * c
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastv,1:lastc)**t * v(1:lastv,1)
                 call stdlib${ii}$_dgemv( 'TRANSPOSE', lastv, lastc, one, c, ldc, v, incv,zero, work, 1_${ik}$ &
                           )
                 ! c(1:lastv,1:lastc) := c(...) - v(1:lastv,1) * w(1:lastc,1)**t
                 call stdlib${ii}$_dger( lastv, lastc, -tau, v, incv, work, 1_${ik}$, c, ldc )
              end if
           else
              ! form  c * h
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastc,1:lastv) * v(1:lastv,1)
                 call stdlib${ii}$_dgemv( 'NO TRANSPOSE', lastc, lastv, one, c, ldc,v, incv, zero, work,&
                            1_${ik}$ )
                 ! c(1:lastc,1:lastv) := c(...) - w(1:lastc,1) * v(1:lastv,1)**t
                 call stdlib${ii}$_dger( lastc, lastv, -tau, work, 1_${ik}$, v, incv, c, ldc )
              end if
           end if
           return
     end subroutine stdlib${ii}$_dlarf

#:for rk,rt,ri in REAL_KINDS_TYPES
#:if not rk in ["sp","dp"]
     pure module subroutine stdlib${ii}$_${ri}$larf( side, m, n, v, incv, tau, c, ldc, work )
     !! DLARF: applies a real elementary reflector H to a real m by n matrix
     !! C, from either the left or the right. H is represented in the form
     !! H = I - tau * v * v**T
     !! where tau is a real scalar and v is a real vector.
     !! If tau = 0, then H is taken to be the unit matrix.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_${rk}$, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: incv, ldc, m, n
           real(${rk}$), intent(in) :: tau
           ! Array Arguments 
           real(${rk}$), intent(inout) :: c(ldc,*)
           real(${rk}$), intent(in) :: v(*)
           real(${rk}$), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           logical(lk) :: applyleft
           integer(${ik}$) :: i, lastv, lastc
           ! Executable Statements 
           applyleft = stdlib_lsame( side, 'L' )
           lastv = 0_${ik}$
           lastc = 0_${ik}$
           if( tau/=zero ) then
           ! set up variables for scanning v.  lastv begins pointing to the end
           ! of v.
              if( applyleft ) then
                 lastv = m
              else
                 lastv = n
              end if
              if( incv>0_${ik}$ ) then
                 i = 1_${ik}$ + (lastv-1) * incv
              else
                 i = 1_${ik}$
              end if
           ! look for the last non-zero row in v.
              do while( lastv>0 .and. v( i )==zero )
                 lastv = lastv - 1_${ik}$
                 i = i - incv
              end do
              if( applyleft ) then
           ! scan for the last non-zero column in c(1:lastv,:).
                 lastc = stdlib${ii}$_ila${ri}$lc(lastv, n, c, ldc)
              else
           ! scan for the last non-zero row in c(:,1:lastv).
                 lastc = stdlib${ii}$_ila${ri}$lr(m, lastv, c, ldc)
              end if
           end if
           ! note that lastc.eq.0_${rk}$ renders the blas operations null; no special
           ! case is needed at this level.
           if( applyleft ) then
              ! form  h * c
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastv,1:lastc)**t * v(1:lastv,1)
                 call stdlib${ii}$_${ri}$gemv( 'TRANSPOSE', lastv, lastc, one, c, ldc, v, incv,zero, work, 1_${ik}$ &
                           )
                 ! c(1:lastv,1:lastc) := c(...) - v(1:lastv,1) * w(1:lastc,1)**t
                 call stdlib${ii}$_${ri}$ger( lastv, lastc, -tau, v, incv, work, 1_${ik}$, c, ldc )
              end if
           else
              ! form  c * h
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastc,1:lastv) * v(1:lastv,1)
                 call stdlib${ii}$_${ri}$gemv( 'NO TRANSPOSE', lastc, lastv, one, c, ldc,v, incv, zero, work,&
                            1_${ik}$ )
                 ! c(1:lastc,1:lastv) := c(...) - w(1:lastc,1) * v(1:lastv,1)**t
                 call stdlib${ii}$_${ri}$ger( lastc, lastv, -tau, work, 1_${ik}$, v, incv, c, ldc )
              end if
           end if
           return
     end subroutine stdlib${ii}$_${ri}$larf

#:endif
#:endfor

     pure module subroutine stdlib${ii}$_clarf( side, m, n, v, incv, tau, c, ldc, work )
     !! CLARF applies a complex elementary reflector H to a complex M-by-N
     !! matrix C, from either the left or the right. H is represented in the
     !! form
     !! H = I - tau * v * v**H
     !! where tau is a complex scalar and v is a complex vector.
     !! If tau = 0, then H is taken to be the unit matrix.
     !! To apply H**H (the conjugate transpose of H), supply conjg(tau) instead
     !! tau.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_sp, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: incv, ldc, m, n
           complex(sp), intent(in) :: tau
           ! Array Arguments 
           complex(sp), intent(inout) :: c(ldc,*)
           complex(sp), intent(in) :: v(*)
           complex(sp), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           logical(lk) :: applyleft
           integer(${ik}$) :: i, lastv, lastc
           ! Executable Statements 
           applyleft = stdlib_lsame( side, 'L' )
           lastv = 0_${ik}$
           lastc = 0_${ik}$
           if( tau/=czero ) then
           ! set up variables for scanning v.  lastv begins pointing to the end
           ! of v.
              if( applyleft ) then
                 lastv = m
              else
                 lastv = n
              end if
              if( incv>0_${ik}$ ) then
                 i = 1_${ik}$ + (lastv-1) * incv
              else
                 i = 1_${ik}$
              end if
           ! look for the last non-czero row in v.
              do while( lastv>0 .and. v( i )==czero )
                 lastv = lastv - 1_${ik}$
                 i = i - incv
              end do
              if( applyleft ) then
           ! scan for the last non-czero column in c(1:lastv,:).
                 lastc = stdlib${ii}$_ilaclc(lastv, n, c, ldc)
              else
           ! scan for the last non-czero row in c(:,1:lastv).
                 lastc = stdlib${ii}$_ilaclr(m, lastv, c, ldc)
              end if
           end if
           ! note that lastc.eq.0_sp renders the blas operations null; no special
           ! case is needed at this level.
           if( applyleft ) then
              ! form  h * c
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastv,1:lastc)**h * v(1:lastv,1)
                 call stdlib${ii}$_cgemv( 'CONJUGATE TRANSPOSE', lastv, lastc, cone,c, ldc, v, incv, &
                           czero, work, 1_${ik}$ )
                 ! c(1:lastv,1:lastc) := c(...) - v(1:lastv,1) * w(1:lastc,1)**h
                 call stdlib${ii}$_cgerc( lastv, lastc, -tau, v, incv, work, 1_${ik}$, c, ldc )
              end if
           else
              ! form  c * h
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastc,1:lastv) * v(1:lastv,1)
                 call stdlib${ii}$_cgemv( 'NO TRANSPOSE', lastc, lastv, cone, c, ldc,v, incv, czero, &
                           work, 1_${ik}$ )
                 ! c(1:lastc,1:lastv) := c(...) - w(1:lastc,1) * v(1:lastv,1)**h
                 call stdlib${ii}$_cgerc( lastc, lastv, -tau, work, 1_${ik}$, v, incv, c, ldc )
              end if
           end if
           return
     end subroutine stdlib${ii}$_clarf

     pure module subroutine stdlib${ii}$_zlarf( side, m, n, v, incv, tau, c, ldc, work )
     !! ZLARF applies a complex elementary reflector H to a complex M-by-N
     !! matrix C, from either the left or the right. H is represented in the
     !! form
     !! H = I - tau * v * v**H
     !! where tau is a complex scalar and v is a complex vector.
     !! If tau = 0, then H is taken to be the unit matrix.
     !! To apply H**H, supply conjg(tau) instead
     !! tau.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_dp, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: incv, ldc, m, n
           complex(dp), intent(in) :: tau
           ! Array Arguments 
           complex(dp), intent(inout) :: c(ldc,*)
           complex(dp), intent(in) :: v(*)
           complex(dp), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           logical(lk) :: applyleft
           integer(${ik}$) :: i, lastv, lastc
           ! Executable Statements 
           applyleft = stdlib_lsame( side, 'L' )
           lastv = 0_${ik}$
           lastc = 0_${ik}$
           if( tau/=czero ) then
           ! set up variables for scanning v.  lastv begins pointing to the end
           ! of v.
              if( applyleft ) then
                 lastv = m
              else
                 lastv = n
              end if
              if( incv>0_${ik}$ ) then
                 i = 1_${ik}$ + (lastv-1) * incv
              else
                 i = 1_${ik}$
              end if
           ! look for the last non-czero row in v.
              do while( lastv>0 .and. v( i )==czero )
                 lastv = lastv - 1_${ik}$
                 i = i - incv
              end do
              if( applyleft ) then
           ! scan for the last non-czero column in c(1:lastv,:).
                 lastc = stdlib${ii}$_ilazlc(lastv, n, c, ldc)
              else
           ! scan for the last non-czero row in c(:,1:lastv).
                 lastc = stdlib${ii}$_ilazlr(m, lastv, c, ldc)
              end if
           end if
           ! note that lastc.eq.0_dp renders the blas operations null; no special
           ! case is needed at this level.
           if( applyleft ) then
              ! form  h * c
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastv,1:lastc)**h * v(1:lastv,1)
                 call stdlib${ii}$_zgemv( 'CONJUGATE TRANSPOSE', lastv, lastc, cone,c, ldc, v, incv, &
                           czero, work, 1_${ik}$ )
                 ! c(1:lastv,1:lastc) := c(...) - v(1:lastv,1) * w(1:lastc,1)**h
                 call stdlib${ii}$_zgerc( lastv, lastc, -tau, v, incv, work, 1_${ik}$, c, ldc )
              end if
           else
              ! form  c * h
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastc,1:lastv) * v(1:lastv,1)
                 call stdlib${ii}$_zgemv( 'NO TRANSPOSE', lastc, lastv, cone, c, ldc,v, incv, czero, &
                           work, 1_${ik}$ )
                 ! c(1:lastc,1:lastv) := c(...) - w(1:lastc,1) * v(1:lastv,1)**h
                 call stdlib${ii}$_zgerc( lastc, lastv, -tau, work, 1_${ik}$, v, incv, c, ldc )
              end if
           end if
           return
     end subroutine stdlib${ii}$_zlarf

#:for ck,ct,ci in CMPLX_KINDS_TYPES
#:if not ck in ["sp","dp"]
     pure module subroutine stdlib${ii}$_${ci}$larf( side, m, n, v, incv, tau, c, ldc, work )
     !! ZLARF: applies a complex elementary reflector H to a complex M-by-N
     !! matrix C, from either the left or the right. H is represented in the
     !! form
     !! H = I - tau * v * v**H
     !! where tau is a complex scalar and v is a complex vector.
     !! If tau = 0, then H is taken to be the unit matrix.
     !! To apply H**H, supply conjg(tau) instead
     !! tau.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_${ck}$, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: incv, ldc, m, n
           complex(${ck}$), intent(in) :: tau
           ! Array Arguments 
           complex(${ck}$), intent(inout) :: c(ldc,*)
           complex(${ck}$), intent(in) :: v(*)
           complex(${ck}$), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           logical(lk) :: applyleft
           integer(${ik}$) :: i, lastv, lastc
           ! Executable Statements 
           applyleft = stdlib_lsame( side, 'L' )
           lastv = 0_${ik}$
           lastc = 0_${ik}$
           if( tau/=czero ) then
           ! set up variables for scanning v.  lastv begins pointing to the end
           ! of v.
              if( applyleft ) then
                 lastv = m
              else
                 lastv = n
              end if
              if( incv>0_${ik}$ ) then
                 i = 1_${ik}$ + (lastv-1) * incv
              else
                 i = 1_${ik}$
              end if
           ! look for the last non-czero row in v.
              do while( lastv>0 .and. v( i )==czero )
                 lastv = lastv - 1_${ik}$
                 i = i - incv
              end do
              if( applyleft ) then
           ! scan for the last non-czero column in c(1:lastv,:).
                 lastc = stdlib${ii}$_ila${ci}$lc(lastv, n, c, ldc)
              else
           ! scan for the last non-czero row in c(:,1:lastv).
                 lastc = stdlib${ii}$_ila${ci}$lr(m, lastv, c, ldc)
              end if
           end if
           ! note that lastc.eq.0_${ck}$ renders the blas operations null; no special
           ! case is needed at this level.
           if( applyleft ) then
              ! form  h * c
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastv,1:lastc)**h * v(1:lastv,1)
                 call stdlib${ii}$_${ci}$gemv( 'CONJUGATE TRANSPOSE', lastv, lastc, cone,c, ldc, v, incv, &
                           czero, work, 1_${ik}$ )
                 ! c(1:lastv,1:lastc) := c(...) - v(1:lastv,1) * w(1:lastc,1)**h
                 call stdlib${ii}$_${ci}$gerc( lastv, lastc, -tau, v, incv, work, 1_${ik}$, c, ldc )
              end if
           else
              ! form  c * h
              if( lastv>0_${ik}$ ) then
                 ! w(1:lastc,1) := c(1:lastc,1:lastv) * v(1:lastv,1)
                 call stdlib${ii}$_${ci}$gemv( 'NO TRANSPOSE', lastc, lastv, cone, c, ldc,v, incv, czero, &
                           work, 1_${ik}$ )
                 ! c(1:lastc,1:lastv) := c(...) - w(1:lastc,1) * v(1:lastv,1)**h
                 call stdlib${ii}$_${ci}$gerc( lastc, lastv, -tau, work, 1_${ik}$, v, incv, c, ldc )
              end if
           end if
           return
     end subroutine stdlib${ii}$_${ci}$larf

#:endif
#:endfor



     pure module subroutine stdlib${ii}$_slarfx( side, m, n, v, tau, c, ldc, work )
     !! SLARFX applies a real elementary reflector H to a real m by n
     !! matrix C, from either the left or the right. H is represented in the
     !! form
     !! H = I - tau * v * v**T
     !! where tau is a real scalar and v is a real vector.
     !! If tau = 0, then H is taken to be the unit matrix
     !! This version uses inline code if H has order < 11.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_sp, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: ldc, m, n
           real(sp), intent(in) :: tau
           ! Array Arguments 
           real(sp), intent(inout) :: c(ldc,*)
           real(sp), intent(in) :: v(*)
           real(sp), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           integer(${ik}$) :: j
           real(sp) :: sum, t1, t10, t2, t3, t4, t5, t6, t7, t8, t9, v1, v10, v2, v3, v4, v5, v6, &
                     v7, v8, v9
           ! Executable Statements 
           if( tau==zero )return
           if( stdlib_lsame( side, 'L' ) ) then
              ! form  h * c, where h has order m.
              go to ( 10, 30, 50, 70, 90, 110, 130, 150,170, 190 )m
              ! code for general m
              call stdlib${ii}$_slarf( side, m, n, v, 1_${ik}$, tau, c, ldc, work )
              go to 410
              10 continue
              ! special code for 1 x 1 householder
              t1 = one - tau*v( 1_${ik}$ )*v( 1_${ik}$ )
              do j = 1, n
                 c( 1_${ik}$, j ) = t1*c( 1_${ik}$, j )
              end do
              go to 410
              30 continue
              ! special code for 2 x 2 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
              end do
              go to 410
              50 continue
              ! special code for 3 x 3 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
              end do
              go to 410
              70 continue
              ! special code for 4 x 4 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
              end do
              go to 410
              90 continue
              ! special code for 5 x 5 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j )
                           
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
              end do
              go to 410
              110 continue
              ! special code for 6 x 6 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
              end do
              go to 410
              130 continue
              ! special code for 7 x 7 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
              end do
              go to 410
              150 continue
              ! special code for 8 x 8 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
              end do
              go to 410
              170 continue
              ! special code for 9 x 9 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j ) + v9*c( 9_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
                 c( 9_${ik}$, j ) = c( 9_${ik}$, j ) - sum*t9
              end do
              go to 410
              190 continue
              ! special code for 10 x 10 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              v10 = v( 10_${ik}$ )
              t10 = tau*v10
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j ) + v9*c( 9_${ik}$, j ) +v10*c( 10_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
                 c( 9_${ik}$, j ) = c( 9_${ik}$, j ) - sum*t9
                 c( 10_${ik}$, j ) = c( 10_${ik}$, j ) - sum*t10
              end do
              go to 410
           else
              ! form  c * h, where h has order n.
              go to ( 210, 230, 250, 270, 290, 310, 330, 350,370, 390 )n
              ! code for general n
              call stdlib${ii}$_slarf( side, m, n, v, 1_${ik}$, tau, c, ldc, work )
              go to 410
              210 continue
              ! special code for 1 x 1 householder
              t1 = one - tau*v( 1_${ik}$ )*v( 1_${ik}$ )
              do j = 1, m
                 c( j, 1_${ik}$ ) = t1*c( j, 1_${ik}$ )
              end do
              go to 410
              230 continue
              ! special code for 2 x 2 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
              end do
              go to 410
              250 continue
              ! special code for 3 x 3 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
              end do
              go to 410
              270 continue
              ! special code for 4 x 4 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
              end do
              go to 410
              290 continue
              ! special code for 5 x 5 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ )
                           
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
              end do
              go to 410
              310 continue
              ! special code for 6 x 6 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
              end do
              go to 410
              330 continue
              ! special code for 7 x 7 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
              end do
              go to 410
              350 continue
              ! special code for 8 x 8 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
              end do
              go to 410
              370 continue
              ! special code for 9 x 9 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ ) + v9*c( j, 9_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
                 c( j, 9_${ik}$ ) = c( j, 9_${ik}$ ) - sum*t9
              end do
              go to 410
              390 continue
              ! special code for 10 x 10 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              v10 = v( 10_${ik}$ )
              t10 = tau*v10
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ ) + v9*c( j, 9_${ik}$ ) +v10*c( j, 10_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
                 c( j, 9_${ik}$ ) = c( j, 9_${ik}$ ) - sum*t9
                 c( j, 10_${ik}$ ) = c( j, 10_${ik}$ ) - sum*t10
              end do
              go to 410
           end if
       410 return
     end subroutine stdlib${ii}$_slarfx

     pure module subroutine stdlib${ii}$_dlarfx( side, m, n, v, tau, c, ldc, work )
     !! DLARFX applies a real elementary reflector H to a real m by n
     !! matrix C, from either the left or the right. H is represented in the
     !! form
     !! H = I - tau * v * v**T
     !! where tau is a real scalar and v is a real vector.
     !! If tau = 0, then H is taken to be the unit matrix
     !! This version uses inline code if H has order < 11.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_dp, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: ldc, m, n
           real(dp), intent(in) :: tau
           ! Array Arguments 
           real(dp), intent(inout) :: c(ldc,*)
           real(dp), intent(in) :: v(*)
           real(dp), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           integer(${ik}$) :: j
           real(dp) :: sum, t1, t10, t2, t3, t4, t5, t6, t7, t8, t9, v1, v10, v2, v3, v4, v5, v6, &
                     v7, v8, v9
           ! Executable Statements 
           if( tau==zero )return
           if( stdlib_lsame( side, 'L' ) ) then
              ! form  h * c, where h has order m.
              go to ( 10, 30, 50, 70, 90, 110, 130, 150,170, 190 )m
              ! code for general m
              call stdlib${ii}$_dlarf( side, m, n, v, 1_${ik}$, tau, c, ldc, work )
              go to 410
              10 continue
              ! special code for 1 x 1 householder
              t1 = one - tau*v( 1_${ik}$ )*v( 1_${ik}$ )
              do j = 1, n
                 c( 1_${ik}$, j ) = t1*c( 1_${ik}$, j )
              end do
              go to 410
              30 continue
              ! special code for 2 x 2 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
              end do
              go to 410
              50 continue
              ! special code for 3 x 3 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
              end do
              go to 410
              70 continue
              ! special code for 4 x 4 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
              end do
              go to 410
              90 continue
              ! special code for 5 x 5 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j )
                           
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
              end do
              go to 410
              110 continue
              ! special code for 6 x 6 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
              end do
              go to 410
              130 continue
              ! special code for 7 x 7 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
              end do
              go to 410
              150 continue
              ! special code for 8 x 8 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
              end do
              go to 410
              170 continue
              ! special code for 9 x 9 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j ) + v9*c( 9_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
                 c( 9_${ik}$, j ) = c( 9_${ik}$, j ) - sum*t9
              end do
              go to 410
              190 continue
              ! special code for 10 x 10 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              v10 = v( 10_${ik}$ )
              t10 = tau*v10
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j ) + v9*c( 9_${ik}$, j ) +v10*c( 10_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
                 c( 9_${ik}$, j ) = c( 9_${ik}$, j ) - sum*t9
                 c( 10_${ik}$, j ) = c( 10_${ik}$, j ) - sum*t10
              end do
              go to 410
           else
              ! form  c * h, where h has order n.
              go to ( 210, 230, 250, 270, 290, 310, 330, 350,370, 390 )n
              ! code for general n
              call stdlib${ii}$_dlarf( side, m, n, v, 1_${ik}$, tau, c, ldc, work )
              go to 410
              210 continue
              ! special code for 1 x 1 householder
              t1 = one - tau*v( 1_${ik}$ )*v( 1_${ik}$ )
              do j = 1, m
                 c( j, 1_${ik}$ ) = t1*c( j, 1_${ik}$ )
              end do
              go to 410
              230 continue
              ! special code for 2 x 2 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
              end do
              go to 410
              250 continue
              ! special code for 3 x 3 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
              end do
              go to 410
              270 continue
              ! special code for 4 x 4 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
              end do
              go to 410
              290 continue
              ! special code for 5 x 5 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ )
                           
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
              end do
              go to 410
              310 continue
              ! special code for 6 x 6 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
              end do
              go to 410
              330 continue
              ! special code for 7 x 7 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
              end do
              go to 410
              350 continue
              ! special code for 8 x 8 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
              end do
              go to 410
              370 continue
              ! special code for 9 x 9 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ ) + v9*c( j, 9_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
                 c( j, 9_${ik}$ ) = c( j, 9_${ik}$ ) - sum*t9
              end do
              go to 410
              390 continue
              ! special code for 10 x 10 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              v10 = v( 10_${ik}$ )
              t10 = tau*v10
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ ) + v9*c( j, 9_${ik}$ ) +v10*c( j, 10_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
                 c( j, 9_${ik}$ ) = c( j, 9_${ik}$ ) - sum*t9
                 c( j, 10_${ik}$ ) = c( j, 10_${ik}$ ) - sum*t10
              end do
              go to 410
           end if
           410 continue
           return
     end subroutine stdlib${ii}$_dlarfx

#:for rk,rt,ri in REAL_KINDS_TYPES
#:if not rk in ["sp","dp"]
     pure module subroutine stdlib${ii}$_${ri}$larfx( side, m, n, v, tau, c, ldc, work )
     !! DLARFX: applies a real elementary reflector H to a real m by n
     !! matrix C, from either the left or the right. H is represented in the
     !! form
     !! H = I - tau * v * v**T
     !! where tau is a real scalar and v is a real vector.
     !! If tau = 0, then H is taken to be the unit matrix
     !! This version uses inline code if H has order < 11.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_${rk}$, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: ldc, m, n
           real(${rk}$), intent(in) :: tau
           ! Array Arguments 
           real(${rk}$), intent(inout) :: c(ldc,*)
           real(${rk}$), intent(in) :: v(*)
           real(${rk}$), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           integer(${ik}$) :: j
           real(${rk}$) :: sum, t1, t10, t2, t3, t4, t5, t6, t7, t8, t9, v1, v10, v2, v3, v4, v5, v6, &
                     v7, v8, v9
           ! Executable Statements 
           if( tau==zero )return
           if( stdlib_lsame( side, 'L' ) ) then
              ! form  h * c, where h has order m.
              go to ( 10, 30, 50, 70, 90, 110, 130, 150,170, 190 )m
              ! code for general m
              call stdlib${ii}$_${ri}$larf( side, m, n, v, 1_${ik}$, tau, c, ldc, work )
              go to 410
              10 continue
              ! special code for 1 x 1 householder
              t1 = one - tau*v( 1_${ik}$ )*v( 1_${ik}$ )
              do j = 1, n
                 c( 1_${ik}$, j ) = t1*c( 1_${ik}$, j )
              end do
              go to 410
              30 continue
              ! special code for 2 x 2 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
              end do
              go to 410
              50 continue
              ! special code for 3 x 3 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
              end do
              go to 410
              70 continue
              ! special code for 4 x 4 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
              end do
              go to 410
              90 continue
              ! special code for 5 x 5 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j )
                           
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
              end do
              go to 410
              110 continue
              ! special code for 6 x 6 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
              end do
              go to 410
              130 continue
              ! special code for 7 x 7 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
              end do
              go to 410
              150 continue
              ! special code for 8 x 8 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
              end do
              go to 410
              170 continue
              ! special code for 9 x 9 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j ) + v9*c( 9_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
                 c( 9_${ik}$, j ) = c( 9_${ik}$, j ) - sum*t9
              end do
              go to 410
              190 continue
              ! special code for 10 x 10 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              v10 = v( 10_${ik}$ )
              t10 = tau*v10
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j ) + v9*c( 9_${ik}$, j ) +v10*c( 10_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
                 c( 9_${ik}$, j ) = c( 9_${ik}$, j ) - sum*t9
                 c( 10_${ik}$, j ) = c( 10_${ik}$, j ) - sum*t10
              end do
              go to 410
           else
              ! form  c * h, where h has order n.
              go to ( 210, 230, 250, 270, 290, 310, 330, 350,370, 390 )n
              ! code for general n
              call stdlib${ii}$_${ri}$larf( side, m, n, v, 1_${ik}$, tau, c, ldc, work )
              go to 410
              210 continue
              ! special code for 1 x 1 householder
              t1 = one - tau*v( 1_${ik}$ )*v( 1_${ik}$ )
              do j = 1, m
                 c( j, 1_${ik}$ ) = t1*c( j, 1_${ik}$ )
              end do
              go to 410
              230 continue
              ! special code for 2 x 2 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
              end do
              go to 410
              250 continue
              ! special code for 3 x 3 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
              end do
              go to 410
              270 continue
              ! special code for 4 x 4 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
              end do
              go to 410
              290 continue
              ! special code for 5 x 5 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ )
                           
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
              end do
              go to 410
              310 continue
              ! special code for 6 x 6 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
              end do
              go to 410
              330 continue
              ! special code for 7 x 7 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
              end do
              go to 410
              350 continue
              ! special code for 8 x 8 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
              end do
              go to 410
              370 continue
              ! special code for 9 x 9 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ ) + v9*c( j, 9_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
                 c( j, 9_${ik}$ ) = c( j, 9_${ik}$ ) - sum*t9
              end do
              go to 410
              390 continue
              ! special code for 10 x 10 householder
              v1 = v( 1_${ik}$ )
              t1 = tau*v1
              v2 = v( 2_${ik}$ )
              t2 = tau*v2
              v3 = v( 3_${ik}$ )
              t3 = tau*v3
              v4 = v( 4_${ik}$ )
              t4 = tau*v4
              v5 = v( 5_${ik}$ )
              t5 = tau*v5
              v6 = v( 6_${ik}$ )
              t6 = tau*v6
              v7 = v( 7_${ik}$ )
              t7 = tau*v7
              v8 = v( 8_${ik}$ )
              t8 = tau*v8
              v9 = v( 9_${ik}$ )
              t9 = tau*v9
              v10 = v( 10_${ik}$ )
              t10 = tau*v10
              do j = 1, m
                 sum = v1*c( j, 1_${ik}$ ) + v2*c( j, 2_${ik}$ ) + v3*c( j, 3_${ik}$ ) +v4*c( j, 4_${ik}$ ) + v5*c( j, 5_${ik}$ ) + &
                           v6*c( j, 6_${ik}$ ) +v7*c( j, 7_${ik}$ ) + v8*c( j, 8_${ik}$ ) + v9*c( j, 9_${ik}$ ) +v10*c( j, 10_${ik}$ )
                 c( j, 1_${ik}$ ) = c( j, 1_${ik}$ ) - sum*t1
                 c( j, 2_${ik}$ ) = c( j, 2_${ik}$ ) - sum*t2
                 c( j, 3_${ik}$ ) = c( j, 3_${ik}$ ) - sum*t3
                 c( j, 4_${ik}$ ) = c( j, 4_${ik}$ ) - sum*t4
                 c( j, 5_${ik}$ ) = c( j, 5_${ik}$ ) - sum*t5
                 c( j, 6_${ik}$ ) = c( j, 6_${ik}$ ) - sum*t6
                 c( j, 7_${ik}$ ) = c( j, 7_${ik}$ ) - sum*t7
                 c( j, 8_${ik}$ ) = c( j, 8_${ik}$ ) - sum*t8
                 c( j, 9_${ik}$ ) = c( j, 9_${ik}$ ) - sum*t9
                 c( j, 10_${ik}$ ) = c( j, 10_${ik}$ ) - sum*t10
              end do
              go to 410
           end if
           410 continue
           return
     end subroutine stdlib${ii}$_${ri}$larfx

#:endif
#:endfor

     pure module subroutine stdlib${ii}$_clarfx( side, m, n, v, tau, c, ldc, work )
     !! CLARFX applies a complex elementary reflector H to a complex m by n
     !! matrix C, from either the left or the right. H is represented in the
     !! form
     !! H = I - tau * v * v**H
     !! where tau is a complex scalar and v is a complex vector.
     !! If tau = 0, then H is taken to be the unit matrix
     !! This version uses inline code if H has order < 11.
        ! -- lapack auxiliary routine --
        ! -- lapack is a software package provided by univ. of tennessee,    --
        ! -- univ. of california berkeley, univ. of colorado denver and nag ltd..--
           use stdlib_blas_constants_sp, only: negone, zero, half, one, two, three, four, eight, ten, czero, chalf, cone, cnegone
           ! Scalar Arguments 
           character, intent(in) :: side
           integer(${ik}$), intent(in) :: ldc, m, n
           complex(sp), intent(in) :: tau
           ! Array Arguments 
           complex(sp), intent(inout) :: c(ldc,*)
           complex(sp), intent(in) :: v(*)
           complex(sp), intent(out) :: work(*)
        ! =====================================================================
           
           ! Local Scalars 
           integer(${ik}$) :: j
           complex(sp) :: sum, t1, t10, t2, t3, t4, t5, t6, t7, t8, t9, v1, v10, v2, v3, v4, v5, &
                     v6, v7, v8, v9
           ! Intrinsic Functions 
           ! Executable Statements 
           if( tau==czero )return
           if( stdlib_lsame( side, 'L' ) ) then
              ! form  h * c, where h has order m.
              go to ( 10, 30, 50, 70, 90, 110, 130, 150,170, 190 )m
              ! code for general m
              call stdlib${ii}$_clarf( side, m, n, v, 1_${ik}$, tau, c, ldc, work )
              go to 410
              10 continue
              ! special code for 1 x 1 householder
              t1 = cone - tau*v( 1_${ik}$ )*conjg( v( 1_${ik}$ ) )
              do j = 1, n
                 c( 1_${ik}$, j ) = t1*c( 1_${ik}$, j )
              end do
              go to 410
              30 continue
              ! special code for 2 x 2 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
              end do
              go to 410
              50 continue
              ! special code for 3 x 3 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              v3 = conjg( v( 3_${ik}$ ) )
              t3 = tau*conjg( v3 )
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
              end do
              go to 410
              70 continue
              ! special code for 4 x 4 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              v3 = conjg( v( 3_${ik}$ ) )
              t3 = tau*conjg( v3 )
              v4 = conjg( v( 4_${ik}$ ) )
              t4 = tau*conjg( v4 )
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
              end do
              go to 410
              90 continue
              ! special code for 5 x 5 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              v3 = conjg( v( 3_${ik}$ ) )
              t3 = tau*conjg( v3 )
              v4 = conjg( v( 4_${ik}$ ) )
              t4 = tau*conjg( v4 )
              v5 = conjg( v( 5_${ik}$ ) )
              t5 = tau*conjg( v5 )
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j )
                           
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
              end do
              go to 410
              110 continue
              ! special code for 6 x 6 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              v3 = conjg( v( 3_${ik}$ ) )
              t3 = tau*conjg( v3 )
              v4 = conjg( v( 4_${ik}$ ) )
              t4 = tau*conjg( v4 )
              v5 = conjg( v( 5_${ik}$ ) )
              t5 = tau*conjg( v5 )
              v6 = conjg( v( 6_${ik}$ ) )
              t6 = tau*conjg( v6 )
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
              end do
              go to 410
              130 continue
              ! special code for 7 x 7 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              v3 = conjg( v( 3_${ik}$ ) )
              t3 = tau*conjg( v3 )
              v4 = conjg( v( 4_${ik}$ ) )
              t4 = tau*conjg( v4 )
              v5 = conjg( v( 5_${ik}$ ) )
              t5 = tau*conjg( v5 )
              v6 = conjg( v( 6_${ik}$ ) )
              t6 = tau*conjg( v6 )
              v7 = conjg( v( 7_${ik}$ ) )
              t7 = tau*conjg( v7 )
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
              end do
              go to 410
              150 continue
              ! special code for 8 x 8 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              v3 = conjg( v( 3_${ik}$ ) )
              t3 = tau*conjg( v3 )
              v4 = conjg( v( 4_${ik}$ ) )
              t4 = tau*conjg( v4 )
              v5 = conjg( v( 5_${ik}$ ) )
              t5 = tau*conjg( v5 )
              v6 = conjg( v( 6_${ik}$ ) )
              t6 = tau*conjg( v6 )
              v7 = conjg( v( 7_${ik}$ ) )
              t7 = tau*conjg( v7 )
              v8 = conjg( v( 8_${ik}$ ) )
              t8 = tau*conjg( v8 )
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
              end do
              go to 410
              170 continue
              ! special code for 9 x 9 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              v3 = conjg( v( 3_${ik}$ ) )
              t3 = tau*conjg( v3 )
              v4 = conjg( v( 4_${ik}$ ) )
              t4 = tau*conjg( v4 )
              v5 = conjg( v( 5_${ik}$ ) )
              t5 = tau*conjg( v5 )
              v6 = conjg( v( 6_${ik}$ ) )
              t6 = tau*conjg( v6 )
              v7 = conjg( v( 7_${ik}$ ) )
              t7 = tau*conjg( v7 )
              v8 = conjg( v( 8_${ik}$ ) )
              t8 = tau*conjg( v8 )
              v9 = conjg( v( 9_${ik}$ ) )
              t9 = tau*conjg( v9 )
              do j = 1, n
                 sum = v1*c( 1_${ik}$, j ) + v2*c( 2_${ik}$, j ) + v3*c( 3_${ik}$, j ) +v4*c( 4_${ik}$, j ) + v5*c( 5_${ik}$, j ) + &
                           v6*c( 6_${ik}$, j ) +v7*c( 7_${ik}$, j ) + v8*c( 8_${ik}$, j ) + v9*c( 9_${ik}$, j )
                 c( 1_${ik}$, j ) = c( 1_${ik}$, j ) - sum*t1
                 c( 2_${ik}$, j ) = c( 2_${ik}$, j ) - sum*t2
                 c( 3_${ik}$, j ) = c( 3_${ik}$, j ) - sum*t3
                 c( 4_${ik}$, j ) = c( 4_${ik}$, j ) - sum*t4
                 c( 5_${ik}$, j ) = c( 5_${ik}$, j ) - sum*t5
                 c( 6_${ik}$, j ) = c( 6_${ik}$, j ) - sum*t6
                 c( 7_${ik}$, j ) = c( 7_${ik}$, j ) - sum*t7
                 c( 8_${ik}$, j ) = c( 8_${ik}$, j ) - sum*t8
                 c( 9_${ik}$, j ) = c( 9_${ik}$, j ) - sum*t9
              end do
              go to 410
              190 continue
              ! special code for 10 x 10 householder
              v1 = conjg( v( 1_${ik}$ ) )
              t1 = tau*conjg( v1 )
              v2 = conjg( v( 2_${ik}$ ) )
              t2 = tau*conjg( v2 )
              v3 = conjg( v( 3_${ik}$ ) )
              t3 = tau*conjg( v3 )
              v4 = conjg( v( 4_${ik}$