LAPACK  3.9.0
LAPACK: Linear Algebra PACKage

◆ dlamc4()

subroutine dlamc4 ( integer  EMIN,
double precision  START,
integer  BASE 
)

DLAMC4

Purpose:

 DLAMC4 is a service routine for DLAMC2.
Parameters
[out]EMIN
          The minimum exponent before (gradual) underflow, computed by
          setting A = START and dividing by BASE until the previous A
          can not be recovered.
[in]START
          The starting point for determining EMIN.
[in]BASE
          The base of the machine.

Definition at line 694 of file dlamchf77.f.

694 *
695 * -- LAPACK auxiliary routine (version 3.7.0) --
696 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
697 * November 2010
698 *
699 * .. Scalar Arguments ..
700  INTEGER BASE, EMIN
701  DOUBLE PRECISION START
702 * ..
703 * =====================================================================
704 *
705 * .. Local Scalars ..
706  INTEGER I
707  DOUBLE PRECISION A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO
708 * ..
709 * .. External Functions ..
710  DOUBLE PRECISION DLAMC3
711  EXTERNAL dlamc3
712 * ..
713 * .. Executable Statements ..
714 *
715  a = start
716  one = 1
717  rbase = one / base
718  zero = 0
719  emin = 1
720  b1 = dlamc3( a*rbase, zero )
721  c1 = a
722  c2 = a
723  d1 = a
724  d2 = a
725 *+ WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND.
726 * $ ( D1.EQ.A ).AND.( D2.EQ.A ) )LOOP
727  10 CONTINUE
728  IF( ( c1.EQ.a ) .AND. ( c2.EQ.a ) .AND. ( d1.EQ.a ) .AND.
729  $ ( d2.EQ.a ) ) THEN
730  emin = emin - 1
731  a = b1
732  b1 = dlamc3( a / base, zero )
733  c1 = dlamc3( b1*base, zero )
734  d1 = zero
735  DO 20 i = 1, base
736  d1 = d1 + b1
737  20 CONTINUE
738  b2 = dlamc3( a*rbase, zero )
739  c2 = dlamc3( b2 / rbase, zero )
740  d2 = zero
741  DO 30 i = 1, base
742  d2 = d2 + b2
743  30 CONTINUE
744  GO TO 10
745  END IF
746 *+ END WHILE
747 *
748  RETURN
749 *
750 * End of DLAMC4
751 *
Here is the caller graph for this function:
dlamc3
double precision function dlamc3(A, B)
DLAMC3
Definition: dlamch.f:174