<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: abrupt underflow in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958556#M21332</link>
    <description>Tim,&lt;BR /&gt;&lt;BR /&gt;I suggest sending this sort of question to us at vf-support@compaq.com - this is the place to write if you want a response from a Compaq engineer.  One or two of us read this forum, but not our expert in this area.&lt;BR /&gt;&lt;BR /&gt;Steve</description>
    <pubDate>Sun, 15 Jul 2001 04:06:22 GMT</pubDate>
    <dc:creator>Steven_L_Intel1</dc:creator>
    <dc:date>2001-07-15T04:06:22Z</dc:date>
    <item>
      <title>abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958555#M21331</link>
      <description>We note that VF programs running on P4 may spend a great deal of time processing de-normalized numbers.  Believing that setting abrupt underflow (also know as flush to zero) would be part of the solution, I'm trying to understand whether SETCONTROLFPQQ() provides for this.  Many of the de-normalized numbers are generated by storing tables of direction cosines in single precision.  &lt;BR /&gt;  &lt;BR /&gt;The FPCW$UNDERFLOW bit seems to control only whether underflow generates an exception, which I don't want.  &lt;BR /&gt;  &lt;BR /&gt;I've tried to use FOR_SET_FPE() but got no effect.  I haven't found examples which would show if it is meant to be used this way.  &lt;BR /&gt;  &lt;BR /&gt;The VA subroutine are running under a main() built with CALL, and my experiments indicate that /fpe:0 has no effect in this case.  Anyway, the application does bad things elsewhere, using double precision arrays as a general purpose means for copying mixed type data, and all of these must be found and fixed before /fpe:0 would work.  In the absence of a portable 64-bit integer in Fortran, those are dealt with by calling back to something in C.  Needless to say, a partial solution is wanted in short order.  &lt;BR /&gt;  &lt;BR /&gt;I would prefer a scheme which allows simply changing the underflow behavior to abrupt without affecting exceptions.  With that in effect, trapping of denormals might be turned on to catch any remaining use of mis-typed data.</description>
      <pubDate>Sun, 15 Jul 2001 01:41:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958555#M21331</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2001-07-15T01:41:03Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958556#M21332</link>
      <description>Tim,&lt;BR /&gt;&lt;BR /&gt;I suggest sending this sort of question to us at vf-support@compaq.com - this is the place to write if you want a response from a Compaq engineer.  One or two of us read this forum, but not our expert in this area.&lt;BR /&gt;&lt;BR /&gt;Steve</description>
      <pubDate>Sun, 15 Jul 2001 04:06:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958556#M21332</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2001-07-15T04:06:22Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958557#M21333</link>
      <description>Apologies for the typos; I shouldn't  have clicked on the spell check. It changed all the compiler names (protecting the innocent?).  The compiler for main() is CL (MSVC6).  There have been a number of presentations on how the P4 was designed with the expectation of running in abrupt underflow mode that I thought this would be an FAQ and barely worthy of the time of the forum audience.  I certainly hope that Intel understands that the reputation of CVF was built on a higher level of service than most Windows compiler customers can expect.</description>
      <pubDate>Sun, 15 Jul 2001 14:06:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958557#M21333</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2001-07-15T14:06:47Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958558#M21334</link>
      <description>&lt;I&gt;I certainly hope that Intel understands that the reputation of CVF was built on a higher level of service than most Windows compiler customers can expect.&lt;/I&gt;&lt;BR /&gt;&lt;BR /&gt;From what they have been telling us, they do.&lt;BR /&gt;&lt;BR /&gt;Steve</description>
      <pubDate>Sun, 15 Jul 2001 20:02:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958558#M21334</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2001-07-15T20:02:55Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958559#M21335</link>
      <description>Comparing the for_get_fpe() value of 0 set by /fpe:3 and the z'11000F' set by /fpe:0, I find that using for_set_fpe() to set this mask to z'110001' or z'10001' appears to give the behavior I'm looking for.  If that continues to work, a major task remaining will be to explain why.  I could describe the latter value as being documented in DFLIB.F90 as the setting to invoke abrupt underflow and underflow trap.</description>
      <pubDate>Mon, 16 Jul 2001 09:36:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958559#M21335</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2001-07-16T09:36:19Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958560#M21336</link>
      <description>What's a denormalized number? The next-to-last CVF newsletter article on floating point numbers also mentioned them. &lt;BR /&gt; &lt;BR /&gt;Mike</description>
      <pubDate>Mon, 16 Jul 2001 22:32:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958560#M21336</guid>
      <dc:creator>durisinm</dc:creator>
      <dc:date>2001-07-16T22:32:52Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958561#M21337</link>
      <description>The /fpe:n appears to operate differently depending on the project type(console, Windows app, DLL, etc). &lt;BR /&gt; &lt;BR /&gt;You might like to take a peek at J. DEMMEL, Underflow and the &lt;BR /&gt;reliability of numerical software, SIAM J. Sci. Stat. Comput., 5 (1984), &lt;BR /&gt;pp. 887-919. &lt;BR /&gt; &lt;BR /&gt;If that fails to allay your fears, consider the following: On Intel, &lt;BR /&gt;denormals, underflows, and inexacts are the lowest in the x87 exception &lt;BR /&gt;precedence. Masked denormals can be accompanied by a lower-priority &lt;BR /&gt;exception (underflow or inexact); underflows can also trigger inexacts; &lt;BR /&gt;and only the lowest-ranked inexacts can occur in isolation. In short, if &lt;BR /&gt;any of these show, you'll have a hard time deciding its origin: just &lt;BR /&gt;clear all fpe status bits in both hardware and memory and carry on. &lt;BR /&gt; &lt;BR /&gt;If you call GETCONTROLFPQQ(control), set control = control .AND. #0000, redefine cw to your liking,eg, VC++ x86 default (all fpe traps disabled &lt;BR /&gt;control = FPCW$NEAR + FPCW$53 + FPCW$INVALID  + FPCW$ZERODIVIDE + FPCW$OVERFLOW + FPCW$UNDERFLOW + FPCW$DENORMAL + FPCW$INEXACT) &lt;BR /&gt;and then do a SETCONTROLFPQQ(control). To mask a fpe define FPE_MASK =  FPE_M_TRAP_UND, for eg,  and pass it to FOR_SET_FPE(FPE_MASK). &lt;BR /&gt; &lt;BR /&gt;Good Luck, &lt;BR /&gt;Gerry T.</description>
      <pubDate>Tue, 17 Jul 2001 01:41:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958561#M21337</guid>
      <dc:creator>Intel_C_Intel</dc:creator>
      <dc:date>2001-07-17T01:41:14Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958562#M21338</link>
      <description>The IEEE 754 and 854 standards, which formally nowadays go by a newer ISO designation, mandate gradual underflow.  Numbers which are smaller in magnitude than the underflow threshold (2.22....e-308 for double precision) are to be stored with the exponent value (MINEXPONENT(x)-1), but with the high order bit not suppressed as it is for normalized numbers.  As the numbers get smaller, more leading 0's come in, until the smallest non-zero number EPSILON(x)*2**MINEXPONENT(x) has only 1 signficant bit.  These numbers EPSILON(x)*2**MINEXPONENT(x) &amp;lt;= x &amp;lt; 2**MINEXPONENT(x), which contain an expressed high order bit, are called de-normalized.  i386 through P-III compatible CPU's included on-chip support for fld and fst to convert de-normalized numbers between memory and register format, but (in effect) NetBurst chips use trap handlers to perform "x87 assists." This treatment has been the one used by typical RISC chips in Unix boxes. I'm sure I've done violence to the technical facts. &lt;BR /&gt;&lt;BR /&gt; Intel P4 optimization guides contain recommendations to use "flush-to-zero" settings, where all de-normals are set to 0 when generated, and "data-as-zero" settings, where any de-normalized data would be treated as zero.  The Intel ICL compiler reference describes a /Qftz compile option, but it may not be implemented.  MSVC and gcc programmers are expected to use _asm constructs, without adequate guidance.&lt;BR /&gt;&lt;BR /&gt;CVF's /fpe:0 option should flush generated de-normals to zero, but traps on several other situations.  One of the reasons for trapping might be to catch situations such as the one I described with the use of mis-typed data.&lt;BR /&gt;&lt;BR /&gt;The reasons for the IEEE standard specifying gradual underflow include preservation of accuracy in calculations involving values |x| &amp;lt; 2**MINEXPONENT(x)/EPSILON(x), which was a serious problem in older formats such as VAX D-float.  One must recognize that a flush-to-zero option may reduce accuracy of single precision results of magnitude &amp;lt; .5**31, but the hardware designers have told us we can't have both accuracy and speed there.</description>
      <pubDate>Tue, 17 Jul 2001 01:42:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958562#M21338</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2001-07-17T01:42:23Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958563#M21339</link>
      <description>The /fpe:n appears to operate differently depending on the project type(console, Windows app, DLL, etc). &lt;BR /&gt; &lt;BR /&gt;You might like to take a peek at J. DEMMEL, Underflow and the &lt;BR /&gt;reliability of numerical software, SIAM J. Sci. Stat. Comput., 5 (1984), &lt;BR /&gt;pp. 887-919. &lt;BR /&gt; &lt;BR /&gt;If that fails to allay your fears, consider the following: On Intel, &lt;BR /&gt;denormals, underflows, and inexacts are the lowest in the x87 exception &lt;BR /&gt;precedence. Masked denormals can be accompanied by a lower-priority &lt;BR /&gt;exception (underflow or inexact); underflows can also trigger inexacts; &lt;BR /&gt;and only the lowest-ranked inexacts can occur in isolation. In short, if &lt;BR /&gt;any of these show, you'll have a hard time deciding its origin: just &lt;BR /&gt;clear all fpe status bits in both hardware and memory and carry on. &lt;BR /&gt; &lt;BR /&gt;If you call GETCONTROLFPQQ(control), set control = control .AND. #0000, redefine cw to your liking,eg, VC++ x86 default (all fpe traps disabled &lt;BR /&gt;control = FPCW$NEAR + FPCW$53 + FPCW$INVALID  + FPCW$ZERODIVIDE + FPCW$OVERFLOW + FPCW$UNDERFLOW + FPCW$DENORMAL + FPCW$INEXACT) &lt;BR /&gt;and then do a SETCONTROLFPQQ(control). To mask a fpe define FPE_MASK =  FPE_M_TRAP_UND, for eg,  and pass it to FOR_SET_FPE(FPE_MASK). &lt;BR /&gt; &lt;BR /&gt;Good Luck, &lt;BR /&gt;Gerry T.</description>
      <pubDate>Tue, 17 Jul 2001 01:42:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958563#M21339</guid>
      <dc:creator>Intel_C_Intel</dc:creator>
      <dc:date>2001-07-17T01:42:27Z</dc:date>
    </item>
    <item>
      <title>Re: abrupt underflow</title>
      <link>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958564#M21340</link>
      <description>A VNI implementation of the f2k ieee exception handling via f90 modules &lt;BR /&gt;proposal suggests that CVF 6.5a for x86 does indeed have problems in setting ieee &lt;BR /&gt;rounding. I first noticed this in DVF 5.x and reported the problem to vf support. Perhaps it'll get fixed when CVF transitions to IVF.  &lt;BR /&gt; &lt;BR /&gt;BTW, has Palmer been with Compaq since they acquired Digital and if so is he going back to Intel? &lt;BR /&gt; &lt;BR /&gt;-- &lt;BR /&gt;Gerry T.</description>
      <pubDate>Tue, 17 Jul 2001 03:03:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/abrupt-underflow/m-p/958564#M21340</guid>
      <dc:creator>Intel_C_Intel</dc:creator>
      <dc:date>2001-07-17T03:03:13Z</dc:date>
    </item>
  </channel>
</rss>

