https://github.com/cran/nleqslv
Tip revision: 5ff90986884ba22a58fb60d64341ab718d5004cc authored by Berend Hasselman on 05 September 2009, 00:00:00 UTC
version 1.5
version 1.5
Tip revision: 5ff9098
lixtra.f
subroutine liqrfa(a, lda, n, tau, work, wsiz, info)
integer lda, n, wsiz, info
double precision a(lda,*), tau(*), work(*)
c-------------------------------------------------------------
c
c QR decomposition of A(n,n)
c
c Arguments
c
c Inout A Real(Lda,n) Matrix to transform.
c
c In lda Integer Leading dimension of A
c In n Integer number of rows/cols A
c
c Out tau Real(n) Information for recovering
c orthogonal part of decomposition
c Out work Real(*) workspace
c In wsiz Integer size of work()
c Lapack blocked QR (much faster for larger n)
c
c-------------------------------------------------------------
call dgeqrf(n,n,A,lda,tau,work,wsiz,info)
return
end
c=============================================================
subroutine liqrqt(a, lda, n, tau, qty, work, wsiz, info)
integer lda, n, wsiz, info
double precision a(lda,*), tau(*), qty(*), work(*)
c-------------------------------------------------------------
c Arguments
c
c In A Real(Lda, n) QR decomposition
c
c In Lda Integer Leading dimension A
c In n Integer Number of rows/columns in A
c
c In tau Integer Householder constants from QR
c
c Inout qty Real(n) On input, vector y
c On output, trans(Q)*y
c
c Out work Real(*) workspace
c In wsiz Integer size of work()
c
c Liqrqt calculates trans(Q)*y from the QR decomposition
c
c Lapack blocked
c-------------------------------------------------------------
call dormqr('L','T',n,1,n,A,lda,tau,qty,n,work,wsiz,info)
return
end
c=============================================================
subroutine liqrqq(q,ldq,tau,n,work,wsiz,info)
integer n, ldq, wsiz, info
double precision q(ldq,*),tau(*),work(*)
c Arguments
c
c Inout Q Real(ldq,*) On input, QR decomposition
c On output, the full Q
c In ldq Integer leading dimension of Q
c In tau Real(n) Householder constants of
c the QR decomposition
c In n Integer number of rows/columns in Q
c Out work Real(n) workspace of length n
c In wsiz Integer size of work()
c
c Generate Q from QR decomposition Liqrfa (dgeqr2)
c
c Lapack blocked
c-------------------------------------------------------------
call dorgqr(n,n,n,q,ldq,tau,work,wsiz,info)
return
end