Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

IVF and MATHERRQQ

phil31
Beginner
800 Views

Hi all,

In most of the projects I manage, I have used until now the feature of the MATHERRQQ routine to catch and handle properly math exceptions (I code my own MATHERRQQ routine). Unfortunately this feature is no more available with IVF. (in particular the MTH$E_INFO record that contain information does not exists anymore)

How can I do now ?

In particular, can the SIGNALQQ routine, associated withe the SIG$FPE signal, be used to produce the same behavior if the handler routine is a copy of my "old" MATHERRQQ routine (remaned of course) ?

Thanks.

0 Kudos
5 Replies
Xj_Kong
Novice
800 Views

Agree to retrieve MATHERRQQ! This made me quite often jump back to CVF.

0 Kudos
Steven_L_Intel1
Employee
800 Views

Sorry, but we're using a very different math library now. What sort of errors are you hoping to catch and what do you want to do with them?

0 Kudos
Xj_Kong
Novice
800 Views

Most common is the power, exponential and log functions for instance when the number goes to very large or small sometimes, like type*,(-0.008)**(0.33333333333d0)  as I remember but (-0.008)**(1d0/3d0) works.

Let me keep more report later. 

0 Kudos
Xj_Kong
Novice
800 Views

The most common cases I met are the power, exponential and log functions for instance when the number goes to very large or small sometimes, like type*,(-0.008)**(0.33333333333d0)  as I remember but (-0.008)**(1d0/3d0) works.

Let me keep more report later. 

0 Kudos
mecej4
Honored Contributor III
800 Views

For the example you gave, the issue is not related to the presence of very large or very small numbers.

Here is a point to ponder, from a mathematical point of view. The number -0.008, raised to the 1/3-rd power, is -0.2; however, if the exponent is not exactly 1/3, but the reciprocal of any real number greater than 1, the result is, in general, complex and multiple-valued. The exponent that you gave in the first expression is not exactly equal 1/3. Maple gives, for that expression, the value .1000000000+.1732050808*I, which is close to (1 + i.sqrt(3))/10. Would you accept this result?

0 Kudos
Reply