home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / adaptor / examples / purdue / prob13.fcm < prev    next >
Encoding:
Text File  |  1993-06-26  |  1.7 KB  |  85 lines

  1.       PROGRAM PROB13
  2. C
  3. C     PROBLEM 13
  4. C
  5. C  REFERENCE:  PROBLEMS TO TEST PARALLEL AND VECTOR LANGUAGES
  6. C              CSD-TR 516, COMPUTER SCIENCE, PURDUE UNIVERSITY
  7. C              JOHN R. RICE, MAY 1, 1985
  8. C
  9. C              REVISED BY JOHN R. RICE AND J. JING, OCT. 1, 1990
  10. C
  11. C
  12. C      *************************************************
  13. C      *      Adapted for FORTRAN D benchmarking       *
  14. C      *    by  T. HAUPT  (haupt@sccs.npac.syr.edu)    *
  15. C      *                                               *
  16. C      *    Northeast Parallel Architectures Center    *
  17. C      *   at Syracuse University, Syracuse, NY, USA   *
  18. C      *************************************************
  19. C
  20. C
  21. C       VERSION SIMD/CM2-1.00
  22. C       ==================================================
  23. C
  24.       INCLUDE '/usr/include/cm/paris-configuration-fort.h'
  25.       INTEGER KASES,NK
  26.       PARAMETER (KASES=4)
  27.       INTEGER N(KASES)
  28. cmf$  layout N(:serial)
  29.       DATA N / 8192, 16384,65536,262144 /
  30.       REAL E
  31.  
  32.       DO 50 K = 1, KASES
  33.  
  34.       CALL CM_TIMER_CLEAR(0)
  35.       CALL CM_TIMER_START(0)
  36.       DO MANY=1,100
  37.       NK=N(K)
  38.       CALL DOIT(NK,E)
  39.       ENDDO
  40.       CALL CM_TIMER_STOP(0)
  41.  
  42.       PRINT *,'PROBLEM 13 WITH N =',NK
  43.       PRINT *,'GIVES E  = ', E
  44.  
  45.  
  46.       CALL CM_TIMER_PRINT(0)
  47.  
  48.    50 CONTINUE
  49. c     STOP
  50.       END
  51.  
  52.       SUBROUTINE DOIT(NK,E)
  53.       INTEGER NK
  54.       REAL E
  55.       REAL, ARRAY(NK)    :: A,B,C,D
  56.       LOGICAL, ARRAY (NK) :: MASK
  57.  
  58.          A = [1:NK]/10.0 + 1.0/[1:NK]
  59.          B = LOG10(A) + 0.02
  60.          C = (A + B) * SIN(A)
  61.          D = A + B - 2.0*C
  62.  
  63.         A = A ** SIN(B)
  64.  
  65.         MASK = (SIN(A) .lt. COS(C))
  66.         WHERE(MASK)
  67.          A=A+C
  68.         ELSEWHERE
  69.          A=A-D
  70.         END WHERE
  71.  
  72.         E=SUM(A**2)
  73.  
  74.  
  75. c     RETURN
  76.       END
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.