Subroutine */
| 728 | /* *********************************************************************** */ |
| 729 | |
| 730 | /* Subroutine */ int dlamc4_(integer *emin, doublereal *start, integer *base) |
| 731 | { |
| 732 | /* System generated locals */ |
| 733 | integer i__1; |
| 734 | doublereal d__1; |
| 735 | |
| 736 | /* Local variables */ |
| 737 | static doublereal a; |
| 738 | static integer i__; |
| 739 | static doublereal b1, b2, c1, c2, d1, d2, one, zero, rbase; |
| 740 | extern doublereal dlamc3_(doublereal *, doublereal *); |
| 741 | |
| 742 | |
| 743 | /* |
| 744 | -- LAPACK auxiliary routine (version 3.2) -- |
| 745 | Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. |
| 746 | November 2006 |
| 747 | |
| 748 | |
| 749 | Purpose |
| 750 | ======= |
| 751 | |
| 752 | DLAMC4 is a service routine for DLAMC2. |
| 753 | |
| 754 | Arguments |
| 755 | ========= |
| 756 | |
| 757 | EMIN (output) INTEGER |
| 758 | The minimum exponent before (gradual) underflow, computed by |
| 759 | setting A = START and dividing by BASE until the previous A |
| 760 | can not be recovered. |
| 761 | |
| 762 | START (input) DOUBLE PRECISION |
| 763 | The starting point for determining EMIN. |
| 764 | |
| 765 | BASE (input) INTEGER |
| 766 | The base of the machine. |
| 767 | |
| 768 | ===================================================================== |
| 769 | */ |
| 770 | |
| 771 | |
| 772 | a = *start; |
| 773 | one = 1.; |
| 774 | rbase = one / *base; |
| 775 | zero = 0.; |
| 776 | *emin = 1; |
| 777 | d__1 = a * rbase; |
| 778 | b1 = dlamc3_(&d__1, &zero); |
| 779 | c1 = a; |
| 780 | c2 = a; |
| 781 | d1 = a; |
| 782 | d2 = a; |
| 783 | /* |
| 784 | + WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND. |
| 785 | $ ( D1.EQ.A ).AND.( D2.EQ.A ) )LOOP |
| 786 | */ |
| 787 | L10: |