Each DPML routine description contains a table of exceptions. Each exception listed in the table represents an exceptional case that is handled in a platform- specific manner. For example, the atan2() exception table contains the following two entries:
Exceptional Argument Routine Behavior y = x = 0 Invalid argument |y| = |x| = infinity Invalid argument
The first entry describes an exception condition containing two input arguments with zero values. Upon detecting this error, the routine behavior signals the "invalid argument" condition. The second entry is applicable only to platforms supporting signed or unsigned infinity values. Here, if the absolute value of both input arguments is equal to infinity, an "invalid argument" condition is signaled.
The exact behavior of a routine that detects an exceptional argument varies from platform to platform and is sometimes dependent on the environment in which it is called. The behavior you see depends on the platform and language used. It also depends on how the routine was called and the interaction of the various layers of software through which the call to the routine was made. Remember, access to a DPML routine can be made through direct access (a CALL statement written by a programmer in a source code statement) or through indirect access (from compiler- implemented mathematical syntax).
The default behavior for detecting the x=y=0 arguments is to generate an exception trap when accessing atan2() indirectly through Fortran compiler syntax. C compiler syntax for the atan2() routine sets errno and returns a NaN when give the same input. In these cases, your compiler documentation provides you with information on how to work with exception conditions.