Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2012, 19:23   #1
VlTag
Пользователь
 
Регистрация: 25.09.2011
Сообщений: 10
По умолчанию Ветеранам: ценная программа на Fortran

Эта программа набрана для неизвестного старого компилятора. Я попрбовал её в среде Fortran_Force_2. Немного не получается: компилятор показывает непонятно что. Помогите исправить код. Программа редкая и ценная.
Код:
c     *******************************************
      PROGRAM FHT
c     ----- PEREMENNUE OPISANIE -----------------
      DIMENSION F(0:8,0:256), R(0:256), X(0:256), M(0:20)
      DIMENSION S(64), C(64)
      INTEGER D,E,I,K,L,M0,N,N2,N4
      INTEGER N7,P,P0,P7,Q,S0,S1,S2,S4,U
      FIN(I)=I+1
      P=8
      N4=2**(P-2)
      N2=N4+N4
      N=N2+N2
      N7=N-1
      P7=P-1
c     ----- INSERT DAATA ---------------------
      DO I=0,N7
      F(0,I)=FIN(I)
      F(1,I)=F(0,I)
      END DO
c     ----- GET POWERS OF 2 ---------------------
      I=1
      M(0)=1
      M(1)=2
 10   M(I+1)=M(I)+M(I)
      I=I+1
      IF (I.LT.P) GO TO 10
c     ----- GET SINES AND COSINES ---------------
      PI=3.14159265
      W=2*PI/N
      A=0
      DO I=1,N4
      A=A+W
      S(I)=SIN(A)
      C(I)=COS(A)
      END DO
c     ----- PERMUTE -----------------------------
      J=-1
      I=-1
 20   I=I+1
      P0=P
 30   P0=P0-1
      J=J-M(P0)
      IF (J.GE.-1) GO TO 30
      J=J+M(P0+1)
      IF (I.LE.J) GO TO 20
      T=F(0,I+1)
      F(0,I+1)=F(0,J+1)
      F(0,J+1)=T
      IF (I.LT.(N-3)) GO TO 20
c     ----- GET F(I,1),  2-ELEMENT DHTs
      DO I=0,N-2,2
      F(1,I)=F(0,I)+F(0,I+1)
      F(1,I+1)=F(0,I)-F(0,I+1)
      END DO
      IF (P.EQ.1) GO TO 40
c     ----- GET F(2,I), 4-ELEMENT DHTs
      L=2
      M0=2
      DO I=0,N-4,4
      F(2,I)=F(1,I)+F(1,I+2)
      F(2,I+1)=F(1,I+1)+F(1,I+3)
      F(2,I+2)=F(1,I)-F(1,I+2)
      F(2,I+3)=F(1,I+1)-F(1,I+3)
      END DO
      IF (P.EQ.2) GO TO 40
c     ----- STAGES 3,4 .... -------------------
      U=P7
      S1=4
      DO L=2,P7
      S2=S1+S1
      U=U-1
      S0=M(U-1)
      DO Q=0,N7,S2
      I=Q
      D=I+S1
      F(L+1,I)=F(L,I)+F(L,D)
      F(L+1,D)=F(L,I)-F(L,D)
      K=D-1
      DO J=S0,N4,S0
      I=I+1
      D=I+S1
      E=K+S1
      Y=F(L,D)*C(J)+F(L,E)*S(J)
      Z=F(L,D)*S(J)-F(L,E)*C(J)
      F(L+1,I)=F(L,I)+Y
      F(L+1,D)=F(L,I)-Y
      F(L+1,K)=F(L,K)+Z
      F(L+1,E)=F(L,K)-Z
      K=K-1
      END DO
      E=K+S1
      END DO
      S1=S2
      END DO
c     ----- GET DFT ---------------------------
      R(0)=(F(L,0)+F(L,0))/2
      X(0)=0
      DO I=1,N7
      B=F(L,N-1)
      R(I)=(F(L,I)+B)/2
      X(I)=(F(L,I)-B)/2
      END DO
 40   CONTINUE
c     ----- WRRITTE RESULTS -------------------
      TYPE 50
 50   FORMAT (' Input H( ) R( ) X( ) ')
      DO I=0,N7
      TYPE 60, I,FIN(I),F(L,I)/N,R(I)/N,X(I)/N
 60   FORMAT (16,4 F9.3)
      END DO
      END

Последний раз редактировалось ACE Valery; 12.11.2012 в 19:39.
VlTag вне форума Ответить с цитированием
Старый 13.11.2012, 03:51   #2
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

Цитата:
Сообщение от VlTag Посмотреть сообщение
Эта программа набрана для неизвестного старого компилятора. Я попрбовал её в среде Fortran_Force_2. Немного не получается: компилятор показывает непонятно что. Помогите исправить код. Программа редкая и ценная.
Код:
c     *******************************************
      PROGRAM FHT
c     ----- PEREMENNUE OPISANIE -----------------
      DIMENSION F(0:8,0:256), R(0:256), X(0:256), M(0:20)
......
      60   FORMAT (16,4 F9.3)
      END DO
      END
1) это не этот раздел, тему переместят, будьте к этому готовы.
2) Хм, вот как фортан выглядит, мдя, как по мне читабельность нулевая, но просто чуствуеться мощь этого языка, его годы и то к чему он дошёл )
3) я наверное ничем не помогу, но можна попробовать использовать более старые или более новые компиляторы для фортана. А где вы взяли эту программу?
4) Напишите, что показывает компилятор?


______________
pufystyj, не злоупотребляйте избыточным цитированием! Оверквотинг (overquoting) запрещён!

Модератор
Это ещё не конец и даже не начало конца, это возможно только конец начала.

Последний раз редактировалось Serge_Bliznykov; 13.11.2012 в 08:42.
pufystyj вне форума Ответить с цитированием
Старый 13.11.2012, 06:44   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

VlTag, Вы так и не указали, чем-же ценна эта программа? Заниматься ней, имеет смысл только в том случае, если она окажется полезной и тому человеку, который за это возмётся.
А пока я не вижу особого смысла, тратить на неё своё время.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.11.2012, 08:30   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...типовой расчет ДПФ вижу, ничего особо ценного. Алгоритмов сейчас море, можете даже FFTW либу задействовать, чтобы самому не писать.

Смущает название - FHT, желательны пояснения ТС.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 13.11.2012, 22:14   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

http://alglib.sources.ru/fasttransforms/fht.php
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 13.11.2012, 22:57   #6
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от VlTag Посмотреть сообщение
...
Программа редкая и ценная.
Что тут редкого-то?.. Через 22 года после перевода книги на русский?..

ADDED 20:14 СЕТ:
Цитата:
Сообщение от VlTag
компилятор показывает непонятно что.
Чисто внешне, синтаксическая ошибка - одна единственная - третья снизу строчка. Должно быть
Код:
   60 FORMAT (I6, 4F9.3)
Exe-шник строится. Сорри, но алгоритм не проверял - давно уже этим не занимаюсь.

Последний раз редактировалось Vago; 13.11.2012 в 23:14.
Vago вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание FORTRAN dll (Compaq visual fortran) для BorlandDelphi Melfa Помощь студентам 25 13.04.2012 23:49
Ошибка в программа (Fortran) Далила Помощь студентам 4 14.01.2011 19:13
Ценная литература kayman Общие вопросы Delphi 5 28.04.2008 22:47