LAPACK  3.6.1
LAPACK: Linear Algebra PACKage
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 690 of file dlamchf77.f.

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

Here is the caller graph for this function: