diff --git a/documentation/Code/Fortran/dfum_035-Dateien/zk-0809.gif b/documentation/Code/Fortran/dfum_035-Dateien/zk-0809.gif new file mode 100644 index 000000000..f6e4c43cc Binary files /dev/null and b/documentation/Code/Fortran/dfum_035-Dateien/zk-0809.gif differ diff --git a/documentation/Code/Fortran/dfum_035-Dateien/zk-6654a.gif b/documentation/Code/Fortran/dfum_035-Dateien/zk-6654a.gif new file mode 100644 index 000000000..4648cccd7 Binary files /dev/null and b/documentation/Code/Fortran/dfum_035-Dateien/zk-6654a.gif differ diff --git a/documentation/Code/Fortran/dfum_035-Dateien/zk-9818.gif b/documentation/Code/Fortran/dfum_035-Dateien/zk-9818.gif new file mode 100644 index 000000000..1af70e3c9 Binary files /dev/null and b/documentation/Code/Fortran/dfum_035-Dateien/zk-9818.gif differ diff --git a/documentation/Code/Fortran/dfum_035.html b/documentation/Code/Fortran/dfum_035.html new file mode 100644 index 000000000..2c3c9c219 --- /dev/null +++ b/documentation/Code/Fortran/dfum_035.html @@ -0,0 +1,1270 @@ + + + +DIGITAL Fortran 90 + + + +

DIGITAL Fortran 90
User Manual for
DIGITAL UNIX Systems

+
+ +
+ + +
Previous + Contents + Index +
+ +
+ +

9.4.6 COMPLEX (KIND=8) or COMPLEX*16 Representation

+ + +

+Intrinsic COMPLEX (KIND=8) or COMPLEX*16 (same as DOUBLE COMPLEX) data +is 16 contiguous bytes containing a pair of REAL*8 values stored in +IEEE T_float format. + +

+The low-order eight bytes contain REAL (KIND=8) data that represents +the real part of the complex data. The high-order eight bytes contain +REAL (KIND=8) data that represents the imaginary part of the complex +data, as shown in Figure 9-10. + +

+Figure 9-10 COMPLEX (KIND =8) or COMPLEX*16 +Representation +


+ + +

+The limits and underflow characteristics for REAL (KIND=8) apply to the +two separate real and imaginary parts of a COMPLEX (KIND=8) or +COMPLEX*16 number. Like REAL (KIND=8) or REAL*8 numbers, the sign bit +representation is 0 (zero) for positive numbers and 1 for negative +numbers. +

+For More Information: +
+ +

+ +

9.4.7 Exceptional Floating-Point Representations

+ + + + + +

+Exceptional values usually result from a computation +and include plus infinity, minus infinity, NaN, and denormalized +numbers. + +

+Floating-point numbers can be one of the following: + +

+ +

+A NaN or infinity value might result from a calculation that contains a +divide by zero, overflow, or invalid data. + +

+A denormalized number occurs when the result of a calculation falls +within the denormalized range for that data type (subnormal value). + +

+To control floating-point exception handling at run time for the main +program, use the appropriate +-fpen + option. The callable +for_set_fpe + routine allows further control for subprogram use or conditional use + during program execution. + +

+If an exceptional value is used in a calculation, an unrecoverable +exception can occur unless you specify the appropriate +-fpen + option or use the +for_set_fpe + routine. Denormalized numbers can be processed as is, set equal to zero + with program continuation or a program stop, and generate warning + messages (see Section 3.33). + +

+ + +Table 9-2 lists the hexadecimal (hex) values of the IEEE +exceptional floating-point numbers in Alpha systems, for S_float +(single precision), T_float (double precision), and X_float (extended +precision) formats:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 9-2 Exceptional Floating-Point Numbers
Exceptional Number Hex Value
S_float Representation
+ Infinity (+) + +Z + +' + +7F800000 + +' + +
+ Infinity (--) + +Z + +' + +FF800000 + +' + +
+ Zero (+0) + +Z + +' + +00000000 + +' + +
+ Zero (--0) + +Z + +' + +80000000 + +' + +
+ Quiet NaN (+) + +From Z + +' + +7FC00000 + +' + + to Z + +' + +7FFFFFFF + +' + +
+ Quiet NaN (--) + +From Z + +' + +FFC00000 + +' + + to Z + +' + +FFFFFFFF + +' + +
+ Signaling NaN (+) + +From Z + +' + +7F800001 + +' + + to Z + +' + +7FBFFFFF + +' + +
+ Signaling NaN (--) + +From Z + +' + +FF800001 + +' + + to Z + +' + +FFBFFFFF + +' + +
T_float Representation
+ Infinity (+) + +Z + +' + +7FF0000000000000 + +' + +
+ Infinity (--) + +Z + +' + +FFF0000000000000 + +' + +
+ Zero (+0) + +Z + +' + +0000000000000000 + +' + +
+ Zero (-0) + +Z + +' + +8000000000000000 + +' + +
+ Quiet NaN (+) + +From Z + +' + +7FF8000000000000 + +' + + to Z + +' + +7FFFFFFFFFFFFFFF + +' + +
+ Quiet NaN (--) + +From Z + +' + +FFF8000000000000 + +' + + to Z + +' + +FFFFFFFFFFFFFFFF + +' + +
+ Signaling NaN (+) + +From Z + +' + +7FF0000000000001 + +' + + to Z + +' + +7FF7FFFFFFFFFFFF + +' + +
+ Signaling NaN (--) + +From Z + +' + +FFF0000000000001 + +' + + to Z + +' + +FFF7FFFFFFFFFFFF + +' + +
X_float Representation
+ Infinity (+) + + Z + +' + +7FFF0000000000000000000000000000 + +' + +
+ Infinity (--) + + Z + +' + +FFFF0000000000000000000000000000 + +' + +
+ Zero (+0) + + Z + +' + +000000000000000000000000000000000 + +' + +
+ Zero (--0) + + Z + +' + +800000000000000000000000000000000 + +' + +
+ Quiet NaN (+) + +From Z + +' + +7FFF80000000000000000000000000000 + +' + + to Z + +' + +7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + +' + +
+ Quiet NaN (--) + +From Z + +' + +FFFF80000000000000000000000000000 + +' + + to Z + +' + +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + +' + +
+ Signaling NaN (+) + +From Z + +' + +7FFF00000000000000000000000000001 + +' + + to Z + +' + +7FFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFF + +' + +
+ Signaling NaN (--) + +From Z + +' + +FFFF00000000000000000000000000001 + +' + + to Z + +' + +FFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFF + +' + +
+ +

+DIGITAL Fortran 90 supports IEEE exception handling, allowing you to test +for infinity by using a comparison of floating-point data (such as +generating positive infinity by using a calculation like x=1.0/0 and +comparing x to the calculated number). + +

+The appropriate +f90 + command +-fpen + options or calling the +for_set_fpe + routine with appropriate arguments allows program continuation when a + calculation results in a divide by zero, overflow, or invalid data + arithmetic exception, generating an exceptional value (a NaN or + Infinity (+ or --)). + +

+ + + +To test for a NaN when DIGITAL Fortran 90 allows continuation for +arithmetic exceptions, you can use the ISNAN intrinsic function. + +

+For example, you might use the following code to test a DOUBLE +PRECISION (REAL (KIND=8)) value: + + +

+ + +
+
+
      DOUBLE PRECISION A, B, F 
+      A = 0. 
+      B = 0. 
+ 
+!     Perform calculations with variables A and B 
+      . 
+      . 
+      . 
+ 
+!     f contains the value to check against a particular NaN 
+ 
+      F = A / B 
+ 
+      IF (ISNAN(F)) THEN 
+         WRITE (6,*) '--> Variable F contains a NaN value <--' 
+      ENDIF 
+ 
+!     Inform user that f has the hardware quiet NaN value 
+ 
+!     Perform calculations with variable F (or stop program early) 
+ 
+      END PROGRAM 
+
+
+
+ +

+ + + +This program might be compiled with +-fpe2 + or +-fpe4 + to allow: + +

+ +

+The FP_CLASS intrinsic function is also available to check for +exceptional values (see the DIGITAL Fortran Language Reference Manual and the file +/usr/include/fordef.f +). +

+For More Information: +
+ +

+ +

9.5 Character Representation

+ + + +

+A character string is a contiguous sequence of bytes in memory, as +shown in Figure 9-11. + +

+Figure 9-11 CHARACTER Data Representation +


+ + +

+A character string is specified by two attributes: the address A of the +first byte of the string, and the length L of the string in bytes. The +length L of a string is in the range 1 through 65,535. +

+For More Information: +
+ +

+ +

9.6 Hollerith Representation

+ + + +

+Hollerith constants are stored internally, one character per byte. When +Hollerith constants contain the ASCII representation of characters, +they resemble the storage of character data (see Figure 9-11). + +

+When Hollerith constants store numeric data, they usually have a length +of one, two, four, or eight bytes and resemble the corresponding +numeric data type. +

+For More Information: +
+ +

+ +

+


+ +

Chapter 10
Converting Unformatted Numeric Data

+
+ +

+This chapter describes how you can use DIGITAL Fortran 90 to read and write +unformatted numeric data in certain nonnative formats, including big +endian IEEE and VAX floating-point formats. + +

+On DIGITAL UNIX systems, DIGITAL Fortran 90 supports the following little +endian floating-point formats in memory: + + + + + + + + + + + + + + + + + + +
Floating-Point Size Format in Memory
+ KIND=4 + + IEEE S_float +
+ KIND=8 + + IEEE T_float +
+ KIND=16 + + DIGITAL IEEE style X_float +
+ +

+If your program needs to read or write unformatted data files +containing a floating-point format that differs from the format in +memory for that data size, you can request that the unformatted data be +converted. + +

+Converting unformatted data is generally faster than converting +formatted data and is less likely to lose precision for floating-point +numbers. + +

10.1 Endian Order of Numeric Formats

+ +

+ + + + + + + + + + + + + +Data storage in different computers use a convention of either +little endian or big endian storage. +The storage convention generally applies to numeric values that span +multiple bytes, as follows: + +

+ +

+Figure 10-1 shows the difference between the two byte-ordering +schemes. + +

+Figure 10-1 Little and Big Endian Storage of an INTEGER +Value +


+ + +

+Moving data files between big endian and little endian computers +requires that the data be converted. + +

10.2 Native and Supported Nonnative Numeric Formats

+ +

+ + + + + + + + + + + + + + + + +DIGITAL Fortran 90 provides the capability for programs to read and write +unformatted data (originally written using unformatted I/O statements) +in + +several nonnative floating-point formats and in big endian INTEGER or +floating-point format. + +

+When reading a nonnative unformatted format, the nonnative format on +disk must be converted to native format in memory. Similarly, native +data in memory can be written to a nonnative unformatted format. If a +converted nonnative value is outside the range of the native data type, +a run-time message appears (listed in Table 8-2). + +

+Supported native and nonnative floating-point formats include: + +

+ +

+ + + +The native memory format uses little endian integers and little endian +IEEE floating-point formats, as follows: + +

+ +

+Table 10-1 lists the keywords for the supported unformatted file +data formats. Use the appropriate keyword after the +-convert + option (such as +-convert cray +) or as an environment variable value (see Section 10.4). + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 10-1 Unformatted Numeric Formats, Keywords, and Supported Data Types
Recognized Keyword1 Description
+ BIG_ENDIAN + +Big endian integer data of the appropriate INTEGER size (one, two, or +four bytes) and big endian IEEE floating-point formats for REAL and +COMPLEX single- and double-precision numbers. INTEGER (KIND=1) or +INTEGER*1 data is the same for little endian and big endian. + + + + +
+ CRAY + +Big endian integer data of the appropriate INTEGER size (one, two, +four, or eight bytes) and big endian CRAY proprietary floating-point +format for + + + REAL and COMPLEX single- and double-precision numbers. +
+ FDX + +Native little endian integers of the appropriate INTEGER size (one, +two, four, or eight bytes) and the following little endian DIGITAL +proprietary floating-point formats: +
    +
  • VAX F_float for REAL (KIND=4) and COMPLEX (KIND=4) + + + + +
  • VAX D_float for REAL (KIND=8) and COMPLEX (KIND=8) +
  • IEEE style X_float for REAL (KIND=16) +
+
+ FGX + +Native little endian integers of the appropriate INTEGER size (one, +two, four, or eight bytes) and the following little endian DIGITAL +proprietary floating-point formats: +
    +
  • VAX F_float for REAL (KIND=4) and COMPLEX (KIND=4) + + + + +
  • VAX G_float for REAL (KIND=8) and COMPLEX (KIND=8) +
  • IEEE style X_float for REAL (KIND=16) +
+
+ IBM + +Big endian integer data of the appropriate INTEGER size (one, two, or +four bytes) and big endian IBM proprietary (System\370 and similar) +floating-point format for + + + REAL and COMPLEX single- and double-precision numbers. +
+ LITTLE_ENDIAN + +Native little endian integers of the appropriate INTEGER size (one, +two, four, or eight bytes) and the following native little endian IEEE +floating-point formats: +
    +
  • S_float for REAL (KIND=4) and COMPLEX (KIND=4) + + + + +
  • T_float for REAL (KIND=8) and COMPLEX (KIND=8) +
  • IEEE style X_float for REAL (KIND=16) +
+
+ NATIVE + + No conversion occurs between memory and disk. This is the default for + unformatted files. +
+ VAXD + +Native little endian integers of the appropriate INTEGER size (one, +two, four, or eight bytes) and the following little endian VAX DIGITAL +proprietary floating-point formats: +
    +
  • VAX F_float for REAL (KIND=4) and COMPLEX (KIND=4) + + + + +
  • VAX D_float for REAL (KIND=8) and COMPLEX (KIND=8) +
  • VAX H_float for REAL (KIND=16) +
+
+ VAXG + +Native little endian integers of the appropriate INTEGER size (one, +two, four, or eight bytes) and the following little endian VAX DIGITAL +proprietary floating-point formats: +
    +
  • VAX F_float for REAL (KIND=4) and COMPLEX (KIND=4) + + + + +
  • VAX G_float for REAL (KIND=8) and COMPLEX (KIND=8) +
  • VAX H_float for REAL (KIND=16) +
+
+


+1When using the data type as a -convert keyword option on the f90 command line, the data type keyword must be +in lowercase, such as -convert big_endian. +
+
+ +

+While this solution is not expected to fulfill all floating-point +conversion needs, it provides the capability to read and write various +types of unformatted nonnative floating-point data. +

+For More Information: +
+ +

+ +

+

+ + + + +
+
Note
+
+ +

1 IEEE floating-point formats are + defined in the IEEE Standard for Binary Floating-Point Arithmetic, + ANSI/IEEE Standard 754-1985, Institute of Electrical and Electronics + Engineers, August 1985.

+
+
+
+

+ + +

+


+ + +
Previous + Next + Contents + Index +
+ + + \ No newline at end of file diff --git a/documentation/SpectralMethod/The Fourier Transform and its Applications.pdf b/documentation/SpectralMethod/The Fourier Transform and its Applications.pdf new file mode 100644 index 000000000..b1bd794fd Binary files /dev/null and b/documentation/SpectralMethod/The Fourier Transform and its Applications.pdf differ