PLASMA  2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
slabad.f
Go to the documentation of this file.
1  SUBROUTINE slabad( SMALL, LARGE )
2 *
3 * -- LAPACK auxiliary routine (version 3.2) --
4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
5 * November 2006
6 *
7 * .. Scalar Arguments ..
8  REAL large, small
9 * ..
10 *
11 * Purpose
12 * =======
13 *
14 * SLABAD takes as input the values computed by SLAMCH for underflow and
15 * overflow, and returns the square root of each of these values if the
16 * log of LARGE is sufficiently large. This subroutine is intended to
17 * identify machines with a large exponent range, such as the Crays, and
18 * redefine the underflow and overflow limits to be the square roots of
19 * the values computed by SLAMCH. This subroutine is needed because
20 * SLAMCH does not compensate for poor arithmetic in the upper half of
21 * the exponent range, as is found on a Cray.
22 *
23 * Arguments
24 * =========
25 *
26 * SMALL (input/output) REAL
27 * On entry, the underflow threshold as computed by SLAMCH.
28 * On exit, if LOG10(LARGE) is sufficiently large, the square
29 * root of SMALL, otherwise unchanged.
30 *
31 * LARGE (input/output) REAL
32 * On entry, the overflow threshold as computed by SLAMCH.
33 * On exit, if LOG10(LARGE) is sufficiently large, the square
34 * root of LARGE, otherwise unchanged.
35 *
36 * =====================================================================
37 *
38 * .. Intrinsic Functions ..
39  INTRINSIC log10, sqrt
40 * ..
41 * .. Executable Statements ..
42 *
43 * If it looks like we're on a Cray, take the square root of
44 * SMALL and LARGE to avoid overflow and underflow problems.
45 *
46  IF( log10( large ).GT.2000. ) THEN
47  small = sqrt( small )
48  large = sqrt( large )
49  END IF
50 *
51  return
52 *
53 * End of SLABAD
54 *
55  END