Skip to content
Snippets Groups Projects
ft.f90 40.5 KiB
Newer Older

      else if (d1 .eq. 2048 .and.  &
     &    d2 .eq. 1024 .and.  &
     &    d3 .eq. 1024 .and.  &
     &    nt .eq. 25) then
!---------------------------------------------------------------------
!   Class D size reference checksums
!---------------------------------------------------------------------
         class = 'D'
         csum_ref(1)  = dcmplx(5.122230065252D+02, 5.118534037109D+02)
         csum_ref(2)  = dcmplx(5.120463975765D+02, 5.117061181082D+02)
         csum_ref(3)  = dcmplx(5.119865766760D+02, 5.117096364601D+02)
         csum_ref(4)  = dcmplx(5.119518799488D+02, 5.117373863950D+02)
         csum_ref(5)  = dcmplx(5.119269088223D+02, 5.117680347632D+02)
         csum_ref(6)  = dcmplx(5.119082416858D+02, 5.117967875532D+02)
         csum_ref(7)  = dcmplx(5.118943814638D+02, 5.118225281841D+02)
         csum_ref(8)  = dcmplx(5.118842385057D+02, 5.118451629348D+02)
         csum_ref(9)  = dcmplx(5.118769435632D+02, 5.118649119387D+02)
         csum_ref(10) = dcmplx(5.118718203448D+02, 5.118820803844D+02)
         csum_ref(11) = dcmplx(5.118683569061D+02, 5.118969781011D+02)
         csum_ref(12) = dcmplx(5.118661708593D+02, 5.119098918835D+02)
         csum_ref(13) = dcmplx(5.118649768950D+02, 5.119210777066D+02)
         csum_ref(14) = dcmplx(5.118645605626D+02, 5.119307604484D+02)
         csum_ref(15) = dcmplx(5.118647586618D+02, 5.119391362671D+02)
         csum_ref(16) = dcmplx(5.118654451572D+02, 5.119463757241D+02)
         csum_ref(17) = dcmplx(5.118665212451D+02, 5.119526269238D+02)
         csum_ref(18) = dcmplx(5.118679083821D+02, 5.119580184108D+02)
         csum_ref(19) = dcmplx(5.118695433664D+02, 5.119626617538D+02)
         csum_ref(20) = dcmplx(5.118713748264D+02, 5.119666538138D+02)
         csum_ref(21) = dcmplx(5.118733606701D+02, 5.119700787219D+02)
         csum_ref(22) = dcmplx(5.118754661974D+02, 5.119730095953D+02)
         csum_ref(23) = dcmplx(5.118776626738D+02, 5.119755100241D+02)
         csum_ref(24) = dcmplx(5.118799262314D+02, 5.119776353561D+02)
         csum_ref(25) = dcmplx(5.118822370068D+02, 5.119794338060D+02)

      else if (d1 .eq. 4096 .and.  &
     &    d2 .eq. 2048 .and.  &
     &    d3 .eq. 2048 .and.  &
     &    nt .eq. 25) then
!---------------------------------------------------------------------
!   Class E size reference checksums
!---------------------------------------------------------------------
         class = 'E'
         csum_ref(1)  = dcmplx(5.121601045346D+02, 5.117395998266D+02)
         csum_ref(2)  = dcmplx(5.120905403678D+02, 5.118614716182D+02)
         csum_ref(3)  = dcmplx(5.120623229306D+02, 5.119074203747D+02)
         csum_ref(4)  = dcmplx(5.120438418997D+02, 5.119345900733D+02)
         csum_ref(5)  = dcmplx(5.120311521872D+02, 5.119551325550D+02)
         csum_ref(6)  = dcmplx(5.120226088809D+02, 5.119720179919D+02)
         csum_ref(7)  = dcmplx(5.120169296534D+02, 5.119861371665D+02)
         csum_ref(8)  = dcmplx(5.120131225172D+02, 5.119979364402D+02)
         csum_ref(9)  = dcmplx(5.120104767108D+02, 5.120077674092D+02)
         csum_ref(10) = dcmplx(5.120085127969D+02, 5.120159443121D+02)
         csum_ref(11) = dcmplx(5.120069224127D+02, 5.120227453670D+02)
         csum_ref(12) = dcmplx(5.120055158164D+02, 5.120284096041D+02)
         csum_ref(13) = dcmplx(5.120041820159D+02, 5.120331373793D+02)
         csum_ref(14) = dcmplx(5.120028605402D+02, 5.120370938679D+02)
         csum_ref(15) = dcmplx(5.120015223011D+02, 5.120404138831D+02)
         csum_ref(16) = dcmplx(5.120001570022D+02, 5.120432068837D+02)
         csum_ref(17) = dcmplx(5.119987650555D+02, 5.120455615860D+02)
         csum_ref(18) = dcmplx(5.119973525091D+02, 5.120475499442D+02)
         csum_ref(19) = dcmplx(5.119959279472D+02, 5.120492304629D+02)
         csum_ref(20) = dcmplx(5.119945006558D+02, 5.120506508902D+02)
         csum_ref(21) = dcmplx(5.119930795911D+02, 5.120518503782D+02)
         csum_ref(22) = dcmplx(5.119916728462D+02, 5.120528612016D+02)
         csum_ref(23) = dcmplx(5.119902874185D+02, 5.120537101195D+02)
         csum_ref(24) = dcmplx(5.119889291565D+02, 5.120544194514D+02)
         csum_ref(25) = dcmplx(5.119876028049D+02, 5.120550079284D+02)

      else if (d1 .eq. 8192 .and.  &
     &    d2 .eq. 4096 .and.  &
     &    d3 .eq. 4096 .and.  &
     &    nt .eq. 25) then
!---------------------------------------------------------------------
!   Class F size reference checksums
!---------------------------------------------------------------------
         class = 'F'
         csum_ref( 1) = dcmplx(5.119892866928D+02, 5.121457822747D+02)
         csum_ref( 2) = dcmplx(5.119560157487D+02, 5.121009044434D+02)
         csum_ref( 3) = dcmplx(5.119437960123D+02, 5.120761074285D+02)
         csum_ref( 4) = dcmplx(5.119395628845D+02, 5.120614320496D+02)
         csum_ref( 5) = dcmplx(5.119390371879D+02, 5.120514085624D+02)
         csum_ref( 6) = dcmplx(5.119405091840D+02, 5.120438117102D+02)
         csum_ref( 7) = dcmplx(5.119430444528D+02, 5.120376348915D+02)
         csum_ref( 8) = dcmplx(5.119460702242D+02, 5.120323831062D+02)
         csum_ref( 9) = dcmplx(5.119492377036D+02, 5.120277980818D+02)
         csum_ref(10) = dcmplx(5.119523446268D+02, 5.120237368268D+02)
         csum_ref(11) = dcmplx(5.119552825361D+02, 5.120201137845D+02)
         csum_ref(12) = dcmplx(5.119580008777D+02, 5.120168723492D+02)
         csum_ref(13) = dcmplx(5.119604834177D+02, 5.120139707209D+02)
         csum_ref(14) = dcmplx(5.119627332821D+02, 5.120113749334D+02)
         csum_ref(15) = dcmplx(5.119647637538D+02, 5.120090554887D+02)
         csum_ref(16) = dcmplx(5.119665927740D+02, 5.120069857863D+02)
         csum_ref(17) = dcmplx(5.119682397643D+02, 5.120051414260D+02)
         csum_ref(18) = dcmplx(5.119697238718D+02, 5.120034999132D+02)
         csum_ref(19) = dcmplx(5.119710630664D+02, 5.120020405355D+02)
         csum_ref(20) = dcmplx(5.119722737384D+02, 5.120007442976D+02)
         csum_ref(21) = dcmplx(5.119733705802D+02, 5.119995938652D+02)
         csum_ref(22) = dcmplx(5.119743666226D+02, 5.119985735001D+02)
         csum_ref(23) = dcmplx(5.119752733481D+02, 5.119976689792D+02)
         csum_ref(24) = dcmplx(5.119761008382D+02, 5.119968675026D+02)
         csum_ref(25) = dcmplx(5.119768579280D+02, 5.119961575929D+02)

      endif


      if (class .ne. 'U') then

         do i = 1, nt
            err = abs( (sums(i) - csum_ref(i)) / csum_ref(i) )
            if (ieee_is_nan(err) .or. (err .gt. epsilon)) goto 100
         end do
         verified = .TRUE.
 100     continue

      endif

         
      if (class .ne. 'U') then
         if (verified) then
            write(*,2000)
 2000       format(' Result verification successful')
         else
            write(*,2001)
 2001       format(' Result verification failed')
         endif
      endif
      print *, 'class = ', class

      return
      end