kusano 7d535a
kusano 7d535a
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
kusano 7d535a
<title>SuperLU: SRC/dlamch.c File Reference</title>
kusano 7d535a
<link href="doxygen.css" rel="stylesheet" type="text/css">
kusano 7d535a
<link href="tabs.css" rel="stylesheet" type="text/css">
kusano 7d535a
kusano 7d535a
kusano 7d535a
kusano 7d535a
  
kusano 7d535a
    
    kusano 7d535a
          
  • Main Page
  • kusano 7d535a
          
  • Data Structures
  • kusano 7d535a
          
  • Files
  • kusano 7d535a
        
    kusano 7d535a
      
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    SRC/dlamch.c File Reference

    Determines double precision machine parameters. More...
    kusano 7d535a

    kusano 7d535a
    #include <stdio.h>
    kusano 7d535a
    #include "slu_Cnames.h"
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    Defines

    kusano 7d535a
    #define TRUE_   (1)
    kusano 7d535a
    kusano 7d535a
    #define FALSE_   (0)
    kusano 7d535a
    kusano 7d535a
    #define abs(x)   ((x) >= 0 ? (x) : -(x))
    kusano 7d535a
    kusano 7d535a
    #define min(a, b)   ((a) <= (b) ? (a) : (b))
    kusano 7d535a
    kusano 7d535a
    #define max(a, b)   ((a) >= (b) ? (a) : (b))
    kusano 7d535a
    kusano 7d535a

    Functions

    kusano 7d535a
    double dlamch_ (char *cmach)
    kusano 7d535a
    kusano 7d535a
    int dlamc1_ (int *beta, int *t, int *rnd, int *ieee1)
    kusano 7d535a
    kusano 7d535a
    int dlamc2_ (int *beta, int *t, int *rnd, double *eps, int *emin, double *rmin, int *emax, double *rmax)
    kusano 7d535a
    kusano 7d535a
    double dlamc3_ (double *a, double *b)
    kusano 7d535a
    kusano 7d535a
    int dlamc4_ (int *emin, double *start, int *base)
    kusano 7d535a
    kusano 7d535a
    int dlamc5_ (int *beta, int *p, int *emin, int *ieee, int *emax, double *rmax)
    kusano 7d535a
    kusano 7d535a
    double pow_di (double *ap, int *bp)
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    Detailed Description

    kusano 7d535a
    kusano 7d535a
           -- LAPACK auxiliary routine (version 2.0) --   
    kusano 7d535a
           Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,   
    kusano 7d535a
           Courant Institute, Argonne National Lab, and Rice University   
    kusano 7d535a
           October 31, 1992   
    kusano 7d535a
      

    Define Documentation

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              #define abs          
    kusano 7d535a
              (
    kusano 7d535a
    kusano 7d535a
                        
    kusano 7d535a
               ) 
    kusano 7d535a
                 ((x) >= 0 ? (x) : -(x))
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              #define FALSE_   (0)          
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              #define max          
    kusano 7d535a
              (
    kusano 7d535a
              a,         
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
    kusano 7d535a
                        
    kusano 7d535a
               ) 
    kusano 7d535a
                 ((a) >= (b) ? (a) : (b))
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              #define min          
    kusano 7d535a
              (
    kusano 7d535a
              a,         
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
    kusano 7d535a
                        
    kusano 7d535a
               ) 
    kusano 7d535a
                 ((a) <= (b) ? (a) : (b))
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              #define TRUE_   (1)          
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a

    Function Documentation

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              int dlamc1_           
    kusano 7d535a
              (
    kusano 7d535a
              int * 
    kusano 7d535a
               beta, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               t, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               rnd, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               ieee1 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              )
    kusano 7d535a
              
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
     Purpose   
    kusano 7d535a
        =======

    kusano 7d535a
        DLAMC1 determines the machine parameters given by BETA, T, RND, and   
    kusano 7d535a
        IEEE1.

    kusano 7d535a
        Arguments   
    kusano 7d535a
        =========

    kusano 7d535a
        BETA    (output) INT   
    kusano 7d535a
                The base of the machine.

    kusano 7d535a
        T       (output) INT   
    kusano 7d535a
                The number of ( BETA ) digits in the mantissa.

    kusano 7d535a
        RND     (output) INT   
    kusano 7d535a
                Specifies whether proper rounding  ( RND = .TRUE. )  or   
    kusano 7d535a
                chopping  ( RND = .FALSE. )  occurs in addition. This may not

    kusano 7d535a
                be a reliable guide to the way in which the machine performs

    kusano 7d535a
                its arithmetic.

    kusano 7d535a
        IEEE1   (output) INT   
    kusano 7d535a
                Specifies whether rounding appears to be done in the IEEE   
    kusano 7d535a
                'round to nearest' style.

    kusano 7d535a
        Further Details   
    kusano 7d535a
        ===============

    kusano 7d535a
        The routine is based on the routine  ENVRON  by Malcolm and   
    kusano 7d535a
        incorporates suggestions by Gentleman and Marovich. See

    kusano 7d535a
           Malcolm M. A. (1972) Algorithms to reveal properties of   
    kusano 7d535a
              floating-point arithmetic. Comms. of the ACM, 15, 949-951.

    kusano 7d535a
           Gentleman W. M. and Marovich S. B. (1974) More on algorithms   
    kusano 7d535a
              that reveal properties of floating point arithmetic units.   
    kusano 7d535a
              Comms. of the ACM, 17, 276-277.

    kusano 7d535a
       ===================================================================== 
    kusano 7d535a
     
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              int dlamc2_           
    kusano 7d535a
              (
    kusano 7d535a
              int * 
    kusano 7d535a
               beta, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               t, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               rnd, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              double * 
    kusano 7d535a
               eps, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               emin, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              double * 
    kusano 7d535a
               rmin, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               emax, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              double * 
    kusano 7d535a
               rmax 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              )
    kusano 7d535a
              
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
        Purpose   
    kusano 7d535a
        =======

    kusano 7d535a
        DLAMC2 determines the machine parameters specified in its argument   
    kusano 7d535a
        list.

    kusano 7d535a
        Arguments   
    kusano 7d535a
        =========

    kusano 7d535a
        BETA    (output) INT   
    kusano 7d535a
                The base of the machine.

    kusano 7d535a
        T       (output) INT   
    kusano 7d535a
                The number of ( BETA ) digits in the mantissa.

    kusano 7d535a
        RND     (output) INT   
    kusano 7d535a
                Specifies whether proper rounding  ( RND = .TRUE. )  or   
    kusano 7d535a
                chopping  ( RND = .FALSE. )  occurs in addition. This may not

    kusano 7d535a
                be a reliable guide to the way in which the machine performs

    kusano 7d535a
                its arithmetic.

    kusano 7d535a
        EPS     (output) DOUBLE PRECISION   
    kusano 7d535a
                The smallest positive number such that

    kusano 7d535a
                   fl( 1.0 - EPS ) .LT. 1.0,

    kusano 7d535a
                where fl denotes the computed value.

    kusano 7d535a
        EMIN    (output) INT   
    kusano 7d535a
                The minimum exponent before (gradual) underflow occurs.

    kusano 7d535a
        RMIN    (output) DOUBLE PRECISION   
    kusano 7d535a
                The smallest normalized number for the machine, given by   
    kusano 7d535a
                BASE**( EMIN - 1 ), where  BASE  is the floating point value

    kusano 7d535a
                of BETA.

    kusano 7d535a
        EMAX    (output) INT   
    kusano 7d535a
                The maximum exponent before overflow occurs.

    kusano 7d535a
        RMAX    (output) DOUBLE PRECISION   
    kusano 7d535a
                The largest positive number for the machine, given by   
    kusano 7d535a
                BASE**EMAX * ( 1 - EPS ), where  BASE  is the floating point

    kusano 7d535a
                value of BETA.

    kusano 7d535a
        Further Details   
    kusano 7d535a
        ===============

    kusano 7d535a
        The computation of  EPS  is based on a routine PARANOIA by   
    kusano 7d535a
        W. Kahan of the University of California at Berkeley.

    kusano 7d535a
       ===================================================================== 
    kusano 7d535a
     
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              double dlamc3_           
    kusano 7d535a
              (
    kusano 7d535a
              double * 
    kusano 7d535a
               a, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              double * 
    kusano 7d535a
               b 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              )
    kusano 7d535a
              
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
        Purpose   
    kusano 7d535a
        =======

    kusano 7d535a
        DLAMC3  is intended to force  A  and  B  to be stored prior to doing

    kusano 7d535a
        the addition of  A  and  B ,  for use in situations where optimizers

    kusano 7d535a
        might hold one of these in a register.

    kusano 7d535a
        Arguments   
    kusano 7d535a
        =========

    kusano 7d535a
        A, B    (input) DOUBLE PRECISION   
    kusano 7d535a
                The values A and B.

    kusano 7d535a
       ===================================================================== 
    kusano 7d535a
     
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              int dlamc4_           
    kusano 7d535a
              (
    kusano 7d535a
              int * 
    kusano 7d535a
               emin, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              double * 
    kusano 7d535a
               start, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               base 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              )
    kusano 7d535a
              
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
        Purpose   
    kusano 7d535a
        =======

    kusano 7d535a
        DLAMC4 is a service routine for DLAMC2.

    kusano 7d535a
        Arguments   
    kusano 7d535a
        =========

    kusano 7d535a
        EMIN    (output) EMIN   
    kusano 7d535a
                The minimum exponent before (gradual) underflow, computed by

    kusano 7d535a
                setting A = START and dividing by BASE until the previous A   
    kusano 7d535a
                can not be recovered.

    kusano 7d535a
        START   (input) DOUBLE PRECISION   
    kusano 7d535a
                The starting point for determining EMIN.

    kusano 7d535a
        BASE    (input) INT   
    kusano 7d535a
                The base of the machine.

    kusano 7d535a
       ===================================================================== 
    kusano 7d535a
     
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              int dlamc5_           
    kusano 7d535a
              (
    kusano 7d535a
              int * 
    kusano 7d535a
               beta, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               p, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               emin, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               ieee, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               emax, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              double * 
    kusano 7d535a
               rmax 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              )
    kusano 7d535a
              
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
        Purpose   
    kusano 7d535a
        =======

    kusano 7d535a
        DLAMC5 attempts to compute RMAX, the largest machine floating-point   
    kusano 7d535a
        number, without overflow.  It assumes that EMAX + abs(EMIN) sum   
    kusano 7d535a
        approximately to a power of 2.  It will fail on machines where this   
    kusano 7d535a
        assumption does not hold, for example, the Cyber 205 (EMIN = -28625,

    kusano 7d535a
        EMAX = 28718).  It will also fail if the value supplied for EMIN is   
    kusano 7d535a
        too large (i.e. too close to zero), probably with overflow.

    kusano 7d535a
        Arguments   
    kusano 7d535a
        =========

    kusano 7d535a
        BETA    (input) INT   
    kusano 7d535a
                The base of floating-point arithmetic.

    kusano 7d535a
        P       (input) INT   
    kusano 7d535a
                The number of base BETA digits in the mantissa of a   
    kusano 7d535a
                floating-point value.

    kusano 7d535a
        EMIN    (input) INT   
    kusano 7d535a
                The minimum exponent before (gradual) underflow.

    kusano 7d535a
        IEEE    (input) INT   
    kusano 7d535a
                A int flag specifying whether or not the arithmetic   
    kusano 7d535a
                system is thought to comply with the IEEE standard.

    kusano 7d535a
        EMAX    (output) INT   
    kusano 7d535a
                The largest exponent before overflow

    kusano 7d535a
        RMAX    (output) DOUBLE PRECISION   
    kusano 7d535a
                The largest machine floating-point number.

    kusano 7d535a
       =====================================================================

    kusano 7d535a
           First compute LEXP and UEXP, two powers of 2 that bound   
    kusano 7d535a
           abs(EMIN). We then assume that EMAX + abs(EMIN) will sum   
    kusano 7d535a
           approximately to the bound that is closest to abs(EMIN).   
    kusano 7d535a
           (EMAX is the exponent of the required number RMAX).
    kusano 7d535a
     
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              double dlamch_           
    kusano 7d535a
              (
    kusano 7d535a
              char * 
    kusano 7d535a
               cmach          
    kusano 7d535a
               ) 
    kusano 7d535a
              
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
        Purpose   
    kusano 7d535a
        =======

    kusano 7d535a
        DLAMCH determines double precision machine parameters.

    kusano 7d535a
        Arguments   
    kusano 7d535a
        =========

    kusano 7d535a
        CMACH   (input) CHARACTER*1   
    kusano 7d535a
                Specifies the value to be returned by DLAMCH:   
    kusano 7d535a
                = 'E' or 'e',   DLAMCH := eps   
    kusano 7d535a
                = 'S' or 's ,   DLAMCH := sfmin   
    kusano 7d535a
                = 'B' or 'b',   DLAMCH := base   
    kusano 7d535a
                = 'P' or 'p',   DLAMCH := eps*base   
    kusano 7d535a
                = 'N' or 'n',   DLAMCH := t   
    kusano 7d535a
                = 'R' or 'r',   DLAMCH := rnd   
    kusano 7d535a
                = 'M' or 'm',   DLAMCH := emin   
    kusano 7d535a
                = 'U' or 'u',   DLAMCH := rmin   
    kusano 7d535a
                = 'L' or 'l',   DLAMCH := emax   
    kusano 7d535a
                = 'O' or 'o',   DLAMCH := rmax

    kusano 7d535a
                where

    kusano 7d535a
                eps   = relative machine precision   
    kusano 7d535a
                sfmin = safe minimum, such that 1/sfmin does not overflow   
    kusano 7d535a
                base  = base of the machine   
    kusano 7d535a
                prec  = eps*base   
    kusano 7d535a
                t     = number of (base) digits in the mantissa   
    kusano 7d535a
                rnd   = 1.0 when rounding occurs in addition, 0.0 otherwise   
    kusano 7d535a
                emin  = minimum exponent before (gradual) underflow   
    kusano 7d535a
                rmin  = underflow threshold - base**(emin-1)   
    kusano 7d535a
                emax  = largest exponent before overflow   
    kusano 7d535a
                rmax  = overflow threshold  - (base**emax)*(1-eps)

    kusano 7d535a
       ===================================================================== 
    kusano 7d535a
     
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
          
    kusano 7d535a
            
    kusano 7d535a
              double pow_di           
    kusano 7d535a
              (
    kusano 7d535a
              double * 
    kusano 7d535a
               ap, 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              
    kusano 7d535a
              int * 
    kusano 7d535a
               bp 
    kusano 7d535a
            
    kusano 7d535a
            
    kusano 7d535a
              
    kusano 7d535a
              )
    kusano 7d535a
              
    kusano 7d535a
            
    kusano 7d535a
          
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a
    kusano 7d535a

    kusano 7d535a
    kusano 7d535a

    <address style="text-align: right;"><small>Generated on Mon Nov 22 10:23:47 2010 for SuperLU by </small></address>
    kusano 7d535a
    kusano 7d535a
    doxygen 1.5.5 
    kusano 7d535a
    kusano 7d535a