Subroutine */
| 822 | /* *********************************************************************** */ |
| 823 | |
| 824 | /* Subroutine */ int dlamc5_(integer *beta, integer *p, integer *emin, |
| 825 | logical *ieee, integer *emax, doublereal *rmax) |
| 826 | { |
| 827 | /* System generated locals */ |
| 828 | integer i__1; |
| 829 | doublereal d__1; |
| 830 | |
| 831 | /* Local variables */ |
| 832 | static integer i__; |
| 833 | static doublereal y, z__; |
| 834 | static integer try__, lexp; |
| 835 | static doublereal oldy; |
| 836 | static integer uexp, nbits; |
| 837 | extern doublereal dlamc3_(doublereal *, doublereal *); |
| 838 | static doublereal recbas; |
| 839 | static integer exbits, expsum; |
| 840 | |
| 841 | |
| 842 | /* |
| 843 | -- LAPACK auxiliary routine (version 3.2) -- |
| 844 | Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. |
| 845 | November 2006 |
| 846 | |
| 847 | |
| 848 | Purpose |
| 849 | ======= |
| 850 | |
| 851 | DLAMC5 attempts to compute RMAX, the largest machine floating-point |
| 852 | number, without overflow. It assumes that EMAX + abs(EMIN) sum |
| 853 | approximately to a power of 2. It will fail on machines where this |
| 854 | assumption does not hold, for example, the Cyber 205 (EMIN = -28625, |
| 855 | EMAX = 28718). It will also fail if the value supplied for EMIN is |
| 856 | too large (i.e. too close to zero), probably with overflow. |
| 857 | |
| 858 | Arguments |
| 859 | ========= |
| 860 | |
| 861 | BETA (input) INTEGER |
| 862 | The base of floating-point arithmetic. |
| 863 | |
| 864 | P (input) INTEGER |
| 865 | The number of base BETA digits in the mantissa of a |
| 866 | floating-point value. |
| 867 | |
| 868 | EMIN (input) INTEGER |
| 869 | The minimum exponent before (gradual) underflow. |
| 870 | |
| 871 | IEEE (input) LOGICAL |
| 872 | A logical flag specifying whether or not the arithmetic |
| 873 | system is thought to comply with the IEEE standard. |
| 874 | |
| 875 | EMAX (output) INTEGER |
| 876 | The largest exponent before overflow |
| 877 | |
| 878 | RMAX (output) DOUBLE PRECISION |
| 879 | The largest machine floating-point number. |
| 880 | |
| 881 | ===================================================================== |