home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / lang / fortran / 4791 < prev    next >
Encoding:
Text File  |  1992-12-17  |  5.6 KB  |  96 lines

  1. Newsgroups: comp.lang.fortran
  2. Path: sparky!uunet!mcsun!dxcern!apofort!metcalf
  3. From: metcalf@apofort.cern.ch (Michael Metcalf )
  4. Subject: Re: Uglifier (was Re: Real Programmers)
  5. Message-ID: <metcalf.724600021@apofort>
  6. Sender: news@dxcern.cern.ch (USENET News System)
  7. Organization: CERN European Lab for Particle Physics
  8. References: <1992Dec16.164347.21210@craycos.com>     <1992Dec17.102911.8075@newssrv.edvz.univie.ac.at> <DODD.92Dec17042004@mycenae.cchem.berkeley.edu>
  9. Date: Thu, 17 Dec 1992 13:47:01 GMT
  10. Lines: 84
  11.  
  12. dodd@mycenae.cchem.berkeley.edu (Lawrence R. Dodd) writes:
  13.  
  14. >>>>>> "Peter" == Peter Marksteiner <pm@cc.univie.ac.at> writes:
  15.  
  16. >  Peter> Here's my favourite ugly program (uglified by hand, not by an automatic
  17. >  Peter> uglifier).
  18.  
  19. >               [much ugly code deleted]
  20.  
  21. >  Peter> C  ... CALCULATE STARTING VALUES
  22. >  Peter> C
  23. >  Peter>       DO 10 I=Z-NDIF
  24. >  Peter>          C1 = 1.D0
  25. >  Peter> C        OOO0O(I)=SQRT(PI)*(I+1)/X(N)
  26. >  Peter> C        CALL REPLSR(OOO0O,O0OOO,NDIF,O,O0O0,OOO0O,C1)
  27. >  Peter>    10 CONTINUE        
  28. >  Peter>       IF(DABS(O).LT.1.E-15.AND.Z.GT.0.5) THEN
  29. >  Peter>           C=137.542
  30. >  Peter>           OOO0O=C
  31. >  Peter>      END IF
  32.  
  33. >get rid of those indents. It makes it too easy to read.  Every should start at
  34. >column 7.
  35.  
  36. That's the point - they are very misleading! This is the code passed through a
  37. program to convert to f90 free source form and with misleading comments removed
  38. by hand. Note variable CNDIF, for example.
  39.  
  40.  
  41.                         Mike Metcalf
  42.                         (metcalf@cernvm.cern.ch)
  43.  
  44.       IMPLICIT DOUBLEPRECISION (A - H, O - Z)                                   
  45. 17321 WRITE (6, 76123)                                                          
  46.       READ (5, * , END = 17213) X                                               
  47.       OOO0 = OOO0O (X)                                                          
  48.       WRITE (6, * ) OOO0                                                        
  49.       GOTO 17321                                                                
  50. 17213 STOP                                                                      
  51. 76123 FORMAT(10H ENTER X: )                                                     
  52.       END                                                                       
  53.       FUNCTION OOO0O (Z)                                                        
  54.       IMPLICIT DOUBLEPRECISION (A - H, O - Z)                                   
  55.       INTEGER O0OOO                                                             
  56.       EQUIVALENCE (O, DO10I) , (O0OOO, NDIF) , (INDIF, O0OOO)                   
  57.       DATA OCO, C2, C3, C4, C5, C6, C7, C8, C9 / - 2.056338417D-7,             
  58.      &- 1.1651675918591D-3, - 9.6219715278770D-3, - 4.20026350340952D-2,       
  59.      &0.1665386113822915D0, - 4.21977345555443D-2, 7.2189432466630D-3,         
  60.      &6.1160950D-9, 1.1330272320D-6 / O0, OO0, CNDIF, O0O, OOO, OO, O00        
  61.      &/ - 0.6558780715202538D0, 1.280502823882D-4, 1.D0, -                     
  62.      &2.01348547807D-5, - 2.152416741149D-4, 0.5772156649015329D0,             
  63.      &- 1.2504934821D-6 /                                                       
  64.       NDIF = NINT (Z)                                                           
  65. *                                                                               
  66. *  ... CALCULATE STARTING VALUES                                                
  67. *                                                                               
  68.       DO10I = Z - NDIF                                                          
  69.       C1 = 1.D0                                                                 
  70.    10 CONTINUE                                                                  
  71.       IF (DABS (O) .LT.1.E-15.AND.Z.GT.0.5) THEN                                
  72.          C = 137.542                                                            
  73.          OOO0O = CNDIF                                                          
  74. *                                                                               
  75. *                                                                               
  76.          DO 171 I = 2, NDIF - 1                                                 
  77.    17       CONTINUE                                                            
  78.   171    OOO0O = OOO0O * I                                                      
  79.          RETURN                                                                 
  80.       ENDIF                                                                     
  81.       OOO0O = O * (C1 + O * (OO + O * (O0 + O * (C4 + O * (C5 + O *            
  82.      &(C6 + O * (C3 + O * (C7 + O * (C2 + O * (OOO + O * (OO0 + O *            
  83.      &(O0O + O * (O00 + O * (C9 + O * (OCO + O * C8) ) ) ) ) ) ) ) ) ) )       
  84.      &) ) ) )                                                                   
  85.       OOO0O = 1. / OOO0O                                                        
  86.       DO 2 I = 1, NDIF                                                          
  87.          OOO0O = OOO0O * O                                                      
  88.          DO10I = O + 1                                                          
  89.     2 CONTINUE                                                                  
  90.       O0OOO = - INDIF                                                           
  91.       DO 3 I = 1, NDIF                                                          
  92.          O = O - 1.                                                             
  93.     3 OOO0O = OOO0O / O                                                         
  94.       RETURN                                                                    
  95.       END                                                                       
  96.