dwnlt2 Function

private function dwnlt2(me, mend, ir, factor, tau, scale, wic)

To test independence of incoming column.

Test the column IC to determine if it is linearly independent of the columns already in the basis. In the initial tri. step, we usually want the heavy weight ALAMDA to be included in the test for independence. In this case, the value of FACTOR will have been set to 1.0 before this procedure is invoked. In the potentially rank deficient problem, the value of FACTOR will have been set to ALSQ=ALAMDA**2 to remove the effect of the heavy weight from the test for independence.

Write new column as partitioned vector

  • (A1) number of components in solution so far = NIV
  • (A2) M-NIV components

And compute

  • SN = inverse weighted length of A1
  • RN = inverse weighted length of A2

Call the column independent when RN > TAU*SN

Revision history

  • 790701 DATE WRITTEN. Hanson, R. J., (SNLA), Haskell, K. H., (SNLA)
  • 890620 Code extracted from WNLIT and made a subroutine. (RWC))
  • 900604 DP version created from SP version. (RWC)

Arguments

Type IntentOptional Attributes Name
integer :: me
integer :: mend
integer :: ir
real(kind=wp) :: factor
real(kind=wp) :: tau
real(kind=wp) :: scale(*)
real(kind=wp) :: wic(*)

Return Value logical


Called by

proc~~dwnlt2~~CalledByGraph proc~dwnlt2 dwnlt2 proc~dwnlit dwnlit proc~dwnlit->proc~dwnlt2 proc~dwnlsm dwnlsm proc~dwnlsm->proc~dwnlit proc~dwnnls dwnnls proc~dwnnls->proc~dwnlsm proc~dlpdp dlpdp proc~dlpdp->proc~dwnnls proc~dlsi dlsi proc~dlsi->proc~dlpdp proc~dlsei dlsei proc~dlsei->proc~dlsi proc~dfcmn dfcmn proc~dfcmn->proc~dlsei proc~dfc dfc proc~dfc->proc~dfcmn

Source Code

   logical function dwnlt2 (me, mend, ir, factor, tau, scale, wic)

   real(wp) :: factor, scale(*), tau, wic(*)
   integer :: ir, me, mend

   real(wp) :: rn, sn, t
   integer :: j

   sn = 0.0_wp
   rn = 0.0_wp
   do j=1,mend
      t = scale(j)
      if (j<=me) t = t/factor
      t = t*wic(j)**2
      if (j<ir) then
         sn = sn + t
      else
         rn = rn + t
      endif
   end do
   dwnlt2 = rn > sn*tau**2

   end function dwnlt2