Posts

Showing posts with the label fortran

FP epsilon estimation in Fortran

Image
Floating-point epsilon estimation in retro Fortran no-talking, in emulated 80286 / MS-DOS machine in DOSbox. This program implements floating-point 'epsilon' estimation in retro Fortran no-talking, in emulated 80286 / MS-DOS machine in DOSbox. This very short code demonstrates how easy it is to get the actual FP accuracy, i.e., the significant decimal digits in FP arithmetic operations. The result in Fortran 77 is seven FP digits for REAL type and 15 digits for DOUBLE PRECISION type, which are consistent with 2-byte and 4-byte float types, correspondingly, used in other programming languages of that era like C. Warning: In some older versions of Microsoft's Fortran 77, the batch process 'FORT.BAT' assumed that the input filename is given as argument *without* the '.FOR' extension. If it is given, then the output is unpredictable and usually results in a corrupted *original* (source) file! Make sure to always keep backup before compiling - I had to write th...

PRNG function in Fortran

Image
Pseudo-random number generator function in retro Fortran no-talking, in emulated 80286 / MS-DOS machine in DOSbox. This program implements a pseudo-random number generator (PRNG) by using the classic Mixed-Congruential Sequence (linear) method, as it was described by D. Knuth (1972) regarding proper parameter choices for high-entropy output. The general rules for parameter choice are: M (modulo) must be at most half the available bits width of the integer type used. C (increment) should be chosen close to the value: M * (1/2 - sqrt(3)/6) = 0.2113248654051871... For example: M=2^8 gives C=54 (54.09916...) A (multiplier) should be chosen as to satisfy the following three requirements: A mod 8 = 5 , A between M/100 and M-sqrt(M) , A must not have trivial bit pattern value. Then these three values, along with a user-provided seed value X0, can be used iteratively with: X(n+1) = (A * X(n) + C) mod M , X(0)=X0. Provided that all constraints are satisfied, there are various ...

Channel Updates