Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрое Хартли. Помогите откомпилировать! Не компилируется в Fortran_Force_2 
:(
    Опции темы
VlTag
Дата 12.11.2012, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.10.2010

Репутация: нет
Всего: нет



Программа FHT.
Этот код из старой книги. Программа редкая и ценная. Я попробовал набрать этот код в среде 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

PM MAIL   Вверх
Фантом
Дата 12.11.2012, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 5
Всего: 49



В строке с меткой "60" в самом конце файла явная ошибка, оператор формата (точнее, его "начинка") так выглядеть не может. Похоже, Вы ошиблись при перепечатке (или текст неудачно распознался при сканировании). В остальном вроде все в порядке, она компилируется и даже работает (правда, не в этой среде, в ней проверить не могу).

P.S. Что-то тут еще не то. Синтаксически все корректно, но вот смысл у первого исполнимого оператора (это 8-я строка программы) отсутствует начисто. Либо там было что-то другое, либо где-то в книге есть указание, что именно должно быть туда вставлено.

Это сообщение отредактировал(а) Фантом - 12.11.2012, 19:23
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.0848 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.