slamch_8c.html
来自「SuperLU is a general purpose library for」· HTML 代码 · 共 711 行 · 第 1/2 页
HTML
711 行
</tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>rnd</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>float * </td> <td class="mdname" nowrap> <em>eps</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>emin</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>float * </td> <td class="mdname" nowrap> <em>rmin</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>emax</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>float * </td> <td class="mdname" nowrap> <em>rmax</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><pre> Purpose =======</pre><p><pre> SLAMC2 determines the machine parameters specified in its argument list.</pre><p><pre> Arguments =========</pre><p><pre> BETA (output) INT The base of the machine.</pre><p><pre> T (output) INT The number of ( BETA ) digits in the mantissa.</pre><p><pre> RND (output) INT Specifies whether proper rounding ( RND = .TRUE. ) or chopping ( RND = .FALSE. ) occurs in addition. This may not</pre><p><pre> be a reliable guide to the way in which the machine performs</pre><p><pre> its arithmetic.</pre><p><pre> EPS (output) FLOAT The smallest positive number such that</pre><p><pre> fl( 1.0 - EPS ) .LT. 1.0,</pre><p><pre> where fl denotes the computed value.</pre><p><pre> EMIN (output) INT The minimum exponent before (gradual) underflow occurs.</pre><p><pre> RMIN (output) FLOAT The smallest normalized number for the machine, given by BASE**( EMIN - 1 ), where BASE is the floating point value</pre><p><pre> of BETA.</pre><p><pre> EMAX (output) INT The maximum exponent before overflow occurs.</pre><p><pre> RMAX (output) FLOAT The largest positive number for the machine, given by BASE**EMAX * ( 1 - EPS ), where BASE is the floating point</pre><p><pre> value of BETA.</pre><p><pre> Further Details ===============</pre><p><pre> The computation of EPS is based on a routine PARANOIA by W. Kahan of the University of California at Berkeley.</pre><p><pre> ===================================================================== </pre> </td> </tr></table><a class="anchor" name="a422da346f4ae26603bbc9b657191e5f"></a><!-- doxytag: member="slamch.c::slamc3_" ref="a422da346f4ae26603bbc9b657191e5f" args="(float *a, float *b)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">double slamc3_ </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">float * </td> <td class="mdname" nowrap> <em>a</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>float * </td> <td class="mdname" nowrap> <em>b</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><pre> Purpose =======</pre><p><pre> SLAMC3 is intended to force A and B to be stored prior to doing</pre><p><pre> the addition of A and B , for use in situations where optimizers</pre><p><pre> might hold one of these in a register.</pre><p><pre> Arguments =========</pre><p><pre> A, B (input) FLOAT The values A and B.</pre><p><pre> ===================================================================== </pre> </td> </tr></table><a class="anchor" name="0f5092460355cf3d3461688e37cc70a0"></a><!-- doxytag: member="slamch.c::slamc4_" ref="0f5092460355cf3d3461688e37cc70a0" args="(int *emin, float *start, int *base)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int slamc4_ </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">int * </td> <td class="mdname" nowrap> <em>emin</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>float * </td> <td class="mdname" nowrap> <em>start</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>base</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><pre> Purpose =======</pre><p><pre> SLAMC4 is a service routine for SLAMC2.</pre><p><pre> Arguments =========</pre><p><pre> EMIN (output) EMIN The minimum exponent before (gradual) underflow, computed by</pre><p><pre> setting A = START and dividing by BASE until the previous A can not be recovered.</pre><p><pre> START (input) FLOAT The starting point for determining EMIN.</pre><p><pre> BASE (input) INT The base of the machine.</pre><p><pre> ===================================================================== </pre> </td> </tr></table><a class="anchor" name="ed7eefa5a851c36909eee77beed124b0"></a><!-- doxytag: member="slamch.c::slamc5_" ref="ed7eefa5a851c36909eee77beed124b0" args="(int *beta, int *p, int *emin, int *ieee, int *emax, float *rmax)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">int slamc5_ </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">int * </td> <td class="mdname" nowrap> <em>beta</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>p</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>emin</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>ieee</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>emax</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap>float * </td> <td class="mdname" nowrap> <em>rmax</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><pre> Purpose =======</pre><p><pre> SLAMC5 attempts to compute RMAX, the largest machine floating-point number, without overflow. It assumes that EMAX + <a class="el" href="slamch_8c.html#3aa069ac3980707dae1e0530f50d59e4">abs(EMIN)</a> sum approximately to a power of 2. It will fail on machines where this assumption does not hold, for example, the Cyber 205 (EMIN = -28625,</pre><p><pre> EMAX = 28718). It will also fail if the value supplied for EMIN is too large (i.e. too close to zero), probably with overflow.</pre><p><pre> Arguments =========</pre><p><pre> BETA (input) INT The base of floating-point arithmetic.</pre><p><pre> P (input) INT The number of base BETA digits in the mantissa of a floating-point value.</pre><p><pre> EMIN (input) INT The minimum exponent before (gradual) underflow.</pre><p><pre> IEEE (input) INT A logical flag specifying whether or not the arithmetic system is thought to comply with the IEEE standard.</pre><p><pre> EMAX (output) INT The largest exponent before overflow</pre><p><pre> RMAX (output) FLOAT The largest machine floating-point number.</pre><p><pre> =====================================================================</pre><p><pre> First compute LEXP and UEXP, two powers of 2 that bound <a class="el" href="slamch_8c.html#3aa069ac3980707dae1e0530f50d59e4">abs(EMIN)</a>. We then assume that EMAX + <a class="el" href="slamch_8c.html#3aa069ac3980707dae1e0530f50d59e4">abs(EMIN)</a> will sum approximately to the bound that is closest to <a class="el" href="slamch_8c.html#3aa069ac3980707dae1e0530f50d59e4">abs(EMIN)</a>. (EMAX is the exponent of the required number RMAX). </pre> </td> </tr></table><a class="anchor" name="0933fc0ce8bfc358a32e1d58aab83d13"></a><!-- doxytag: member="slamch.c::slamch_" ref="0933fc0ce8bfc358a32e1d58aab83d13" args="(char *cmach)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">double slamch_ </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">char * </td> <td class="mdname1" valign="top" nowrap> <em>cmach</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p><pre> Purpose =======</pre><p><pre> SLAMCH determines single precision machine parameters.</pre><p><pre> Arguments =========</pre><p><pre> CMACH (input) CHARACTER*1 Specifies the value to be returned by SLAMCH: = 'E' or 'e', SLAMCH := eps = 'S' or 's , SLAMCH := sfmin = 'B' or 'b', SLAMCH := base = 'P' or 'p', SLAMCH := eps*base = 'N' or 'n', SLAMCH := t = 'R' or 'r', SLAMCH := rnd = 'M' or 'm', SLAMCH := emin = 'U' or 'u', SLAMCH := rmin = 'L' or 'l', SLAMCH := emax = 'O' or 'o', SLAMCH := rmax</pre><p><pre> where</pre><p><pre> eps = relative machine precision sfmin = safe minimum, such that 1/sfmin does not overflow base = base of the machine prec = eps*base t = number of (base) digits in the mantissa rnd = 1.0 when rounding occurs in addition, 0.0 otherwise emin = minimum exponent before (gradual) underflow rmin = underflow threshold - base**(emin-1) emax = largest exponent before overflow rmax = overflow threshold - (base**emax)*(1-eps)</pre><p><pre> ===================================================================== </pre> </td> </tr></table><hr size="1"><address style="align: right;"><small>Generated on Fri Aug 1 22:40:40 2008 for SuperLU by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?