Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на ФОРТРАН, как общего так и конкретного характера.
Постарайтесь дать как можно больше информации о возникшей проблеме -- это в конце концов в ваших же интересах чтобы вам помогли...

прежде чем просить помощи в задании
платное решение задач

ресурсы этого топика
ссылка на подборку ресурсов, собранных посетителями этого форума
 
то, чем мы решили поделиться
ссылка на страничку программ etc собственного изготовления, которыми любезно делятся наши форумчане


если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим
 
просьба к пишущим и отвечающим все большие листинги оформлять тегом more
и отключать графические смайлики при размещении фортран-кода

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:11 14-01-2007 | Исправлено: akaGM, 09:47 01-03-2020
Betatroner

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10
Спасибо, попробую. А где прописывать этот ключ?

Всего записей: 5 | Зарегистр. 30-09-2010 | Отправлено: 13:25 01-10-2010
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Betatroner
ничего нигде не конфликтует, это ошибка в самой программе
и, судя по всему, ошибка в индексировании массива
просто так ни компилятор, ни ран-тайм менеджер орать не будет, а то что в ДОСе всё работало нормально ещё ни о чём не говорит...

Цитата:
Спасибо, попробую. А где прописывать этот ключ?

 
df.exe /"ключи компиляции" myprog.for
если компилируешь в строке
или его надо выставить в среде где-то в разделе "Compiler options"
 
а вообще отключать диагностику в неотлаженной программе -- порочная практика...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 14:03 01-10-2010 | Исправлено: akaGM, 14:06 01-10-2010
Betatroner

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, сам разобрался уже. При компиляции из строки без всяких ключей программа работает, но считает немножко по-другому, чем в ДОСе, все-таки с ней не все ладно.
 Насчет неотлаженной програмы - программа старая, ей лет 20 уже считают и приборы, ей рассчитанные нормально работают, а человека, ее писавшего, уже нет в живых. Так что, мне кажется, это вычисление на современных вычислительных системах немножко не так организовано, как раньше (хотя могу и ошибаться).

Всего записей: 5 | Зарегистр. 30-09-2010 | Отправлено: 14:32 01-10-2010 | Исправлено: Betatroner, 14:35 01-10-2010
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Betatroner
ок, удачи...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 14:35 01-10-2010
Betatroner

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такая ситуация: в блоке данных программы задается массив. Перед этим с помощью COMMON задается его размерность и (насколько я понимаю) выделяется ячейка памяти.
Компиляция в CVF без ошибок. При запуске ран-тайм менеджер выдает ошибку переполнения массива
"forrtl: severe (161): Program Exception - array bounds exceeded"
Происходит это после работы с первым членом массива при переходе к следующему. Где может быть ошибка в программе? В самом задании массива?

Всего записей: 5 | Зарегистр. 30-09-2010 | Отправлено: 14:15 07-10-2010
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Betatroner

Цитата:
Происходит это после работы с первым членом массива при переходе к следующему. Где может быть ошибка в программе? В самом задании массива?

Где угодно. Программа обращается к несуществующему элементу массива.  
1. Размерности неправильные
2. Ошибка в написании (использование скалярной величины как массив)
3. Счетчик в цикле > размерности  
4. Все остальные случаи  
И да, если common  повторяется то он должен быть записан идентично, без перестановок.  
 
Советую взять другой компилятор, и внимательно изучить вывод при компиляции. Возможно увидите еще что интересное.  
Хотя если это первый элемент массива то должно быть сразу ясно где ошибка. Скорее всего размерность массива a(1:10) а счетчик хочет a(i=0) например

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 14:27 07-10-2010 | Исправлено: terminat0r, 14:33 07-10-2010
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Betatroner
привёл бы фрагмент кода (описание, данные, коммон и использование), не строили бы догадки
лучше один раз увидеть...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 17:12 07-10-2010
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа Fortran'щики, требуется помощь
 
Потребовалось скомпилировать один пример из исходников Mark 18 под RHEL 5.5. Выдрал взаимосвязанные файлы-исходники (всю библиотеку нет необходимости собирать), это всего 7 файлов. В скриптах сборки указан компилятор f77, хотя в документации речь идет о стандарте f90. В RHEL 5.5 работают команды f77 и f95, но не f90. Компилировал по-разному (записывая все файлы в командной строке и через Makefile), но f77 дает ошибку компиляции (к сожалению, сейчас не могу привести, позже укажу обязательно), связанное с machine precision, и ошибку вызывает строка
Цитата:
DATA X02CON /Z'3CA0000000000001' /
в файле x02ajft.f:
Код:
      DOUBLE PRECISION FUNCTION X02AJF()
C     MARK 12 RELEASE. NAG COPYRIGHT 1986.
C
C     RETURNS  (1/2)*B**(1-P)  IF ROUNDS IS .TRUE.
C     RETURNS  B**(1-P)  OTHERWISE
C
      DOUBLE PRECISION X02CON
      DATA X02CON /Z'3CA0000000000001' /
C     .. Executable Statements ..
      X02AJF = X02CON
      RETURN
      END
Компиляция же через f95 проходит, только предупреждения на устаревшие конструкции, но вот при запуске дает ошибку:
Цитата:
 XXXXXX Example Program Results        
 ** ABNORMAL EXIT from NAG Library routine XXXXXX: IFAIL =     1
 ** NAG hard failure - execution terminated
здесь XXXXXX --- название функции. По документации, если IFAIL =     1, то это вроде soft failure.  
Что важно, исходники оказались для другой платформы, а именно:
Цитата:
IBM RISC System/6000 Double Precision
Какие изменения требуются для платформы Intel?  
 
Заранее благодарен

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 15:14 14-10-2010
Vskazka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Что касается компиляции, то под интеловским фортраном из того пакета, который здесь пробегал в соответствующем месте, я собрал статическую библиотеку и без всяких проблем. На некоторых задачах опробовал.  
Точнее были проблемы в библиотеке для дебагера. Там в интеловсом фортране по дефолту генерятся и интерфейсы подпрограмм, ну и начинается вопль, когда в подпрограмме описан массив, а ей подсовывают элемент массива. Нужно только убрать сию опцию, ну и потом все хорошо получается

Цитата:
Цитата:
IBM RISC System/6000 Double Precision
Какие изменения требуются для платформы Intel?  
 
Заранее благодарен

эти настройки (какие машины рассматриваются) - задаются в файлах x02*.f И те значения, которые стоят в упомянутом пакете, - это значения для PCшек. Я с этой проверки начал собирать библиотеку.
И еще, если уж совсем не получается, то можно самим настроить эти файлы, взяв значения из сишных float.h, и т.д.

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 16:06 14-10-2010 | Исправлено: Vskazka, 16:15 14-10-2010
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
В RHEL 5.5 работают команды f77 и f95, но не f90. Компилировал по-разному (записывая все файлы в командной строке и через Makefile), но f77 дает ошибку компиляции (к сожалению, сейчас не могу привести, позже укажу обязательно), связанное с machine precision, и ошибку вызывает строка  

Хм, а какой компилятор используется?
покажите вывод от  
$ which f77
вообще-то это может быть линк на  какой угодно компилятор
 
я только что собрал статическую под gfortran
на первый взгляд все работает.
Позже напишу наверное скрипт для теста всех примеров
Давайте точно название функции которая глючит
 
собирал просто в лоб
for i in *.f; do gfortran -c "$i" ;done
ar rcs naglib12.a *.o

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 18:43 14-10-2010 | Исправлено: terminat0r, 19:07 14-10-2010
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vskazka
Цитата:
...я собрал статическую библиотеку и без всяких проблем
Мне, вообще говоря, статическая библиотека не нужна
Цитата:
эти настройки (какие машины рассматриваются) - задаются в файлах x02*.f И те значения, которые стоят в упомянутом пакете, - это значения для PCшек
Разве? В документации к исходникам говорится про ту платформу, о которой я выше писал
 
terminat0r
Цитата:
Хм, а какой компилятор используется?
покажите вывод от  
$ which f77
вообще-то это может быть линк на  какой угодно компилятор
 
Стандартный GNU'тый компилятор
Код:
 
$ which f77
/usr/bin/f77
$ which f95
/usr/bin/f95
f77 --- символическая ссылка на g77, а f95 --- на gfortran
Цитата:
я только что собрал статическую под gfortran
на первый взгляд все работает
Мне библиотека не нужна, хочется собрать автономную программу, не вижу для этого необходимости собирать всю библиотеку

Цитата:
Позже напишу наверное скрипт для теста всех примеров  
Скрипты там есть, но для той архитектуры, только править надо

Цитата:
Давайте точно название функции которая глючит
 
Как уже писал, нужная мне функция E04CCF зависит от небольшого количества файлов:
Цитата:
E04CCFTEXT CALLS DIRECTLY  P01ABF, X02AJF.  
          INDIRECTLY ALSO  P01ABZ, X04AAF, X04BAF
В итоге имеем такие файлы: p01abzt.f x02ajft.f x04aaft.f x04baft.f p01abft.f e04ccft.f
Захотелось собрать файл-пример e04ccfe.f. Для данного примера файл данных не требуется. Если собираю через f77, ошибка такая:
Код:
x02ajft.f: In function `x02ajf':                                                                              
x02ajft.f:8:                                                                                                  
         DATA X02CON /Z'3CA0000000000001' /                                                                  
                        ^                                                                                    
Integer at (^) too large


----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 20:19 14-10-2010
Macker

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Помогите, пожалуйста написать программу по Фортрану. Для каждой строки матрицы А найти сумму элементов, расположенных между минимальным и максимальным элементами. Результаты записать в одномерный массив S.
Вот что получилось:
 

Код:
program matrix
 
    implicit none
integer, parameter :: n=4, m=4
integer min,i, j, max, s
real d(10), r(n,m) / 6.,1.,2.,5.,&
                             2.,9.,1.,9.,&
                             5.,6.,3.,6.,&
                             7.,3.,1.,4./
do i=1,n
do j=1,m
end do
print*, ' '
end do
write (*,"(1x,4f5.2)") ((r(i,j),j=1,m), i=1,n)  
do i=1, n
min=r(i,1)
max=r(i,1)
do j=1, m
if(r(i,j) <= min) then
min=r(i,j)
endif
if(r(i,j) >= max) then
max=r(i,j)
endif
enddo
s=0.
do j=1,m
s=s+r(i,j)
enddo
d(i)=s-min-max
enddo
write(6,*) (d(i), i=1, m)
end program matrix


Всего записей: 2 | Зарегистр. 05-07-2010 | Отправлено: 20:50 14-10-2010
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
у меня все скомилировалось без ошибок и вроде нормально работает  
$ gfortran e04ccfe.f naglib12.a -o e04ccfe.x
$ ./e04ccfe.x
 
 E04CCF Example Program Results
 
 Final function value is       0.0000
 at the point      0.5000     -0.9999
 This has error number  0
 
$ gfortran --version
GNU Fortran (SUSE Linux) 4.4.1 [gcc-4_4-branch revision 150839]
 
Добавлено:
TeXpert

Цитата:
Мне библиотека не нужна, хочется собрать автономную программу, не вижу для этого необходимости собирать всю библиотеку  

Вы немного не понимаете смысл статической библиотеки. Линкер в линуксе умный и включает в исполняемый файл с библиотеки только то что нужно и не больше.
Например размер  e04ccfe.x 28998 байт после компиляции и это полностью автономная программа по отношению к naglib библиотеке.
Хотя ему нужны, как всегда, остальные файлы  gcc если их не слинковать статически
$ ldd e04ccfe.x
        linux-vdso.so.1 =>  (0x00007fff1b1ff000)
        libgfortran.so.3 => /usr/lib64/libgfortran.so.3 (0x00007ff7032ed000)
        libm.so.6 => /lib64/libm.so.6 (0x00007ff703098000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ff702d3d000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff7035d9000)

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 23:58 14-10-2010 | Исправлено: terminat0r, 00:10 15-10-2010
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
terminat0r
Цитата:
у меня все скомилировалось без ошибок и вроде нормально работает
Ну, я этот вариант не отрицал, у меня пока не получается (компиляция проходит) без сборки всей библиотеки, только с указанными файлами, не пробовал так? Идея простая, зачем компилировать лишние функции, раз они не испльзуются
 
Добавлено:

Цитата:
Вы немного не понимаете смысл статической библиотеки. Линкер в линуксе умный и включает в исполняемый файл с библиотеки только то что нужно и не больше
Это я прекрасно понимаю, просто исхожу из здравого смысла). И потом, линкеры (не только линуксовые) современные и так лишние не зашивают. Просто, нужные мне функции совсем небольшие, вот и захотелось проверить свою идею, вроде простая вещь. Ан нет, оказалось (кстати, такие вещи весьма поучительны)

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 00:08 15-10-2010
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
да пожалуйста,
gfortran -c p01abzt.f x02ajft.f x04aaft.f x04baft.f p01abft.f e04ccft.f
gfortran e04ccfe.f e04ccft.o p01abft.o p01abzt.o x02ajft.o x04aaft.o x04baft.o -o e04ccfe.x
./e04ccfe.x
 E04CCF Example Program Results
 
 Final function value is       0.0000
 at the point      0.5000     -0.9999
 This has error number  0
 
только повторюсь

Цитата:
Идея простая, зачем компилировать лишние функции, раз они не испльзуются

вы компилируете билиотеку только ОДИН раз под конкретный процессор.

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 00:14 15-10-2010 | Исправлено: terminat0r, 00:16 15-10-2010
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Версии моих компиляторов:
Код:
$ gfortran --version
GNU Fortran (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)
Copyright (C) 2007 Free Software Foundation, Inc.
 
$ g77 --version
GNU Fortran (GCC) 3.4.6 20060404 (Red Hat 3.4.6-4)
Copyright (C) 2006 Free Software Foundation, Inc.


----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 00:19 15-10-2010
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если собираю через f77, ошибка такая

ах, да это же у вас g77, зачем вам этот старый и мертвый компилятор?
 
Добавлено:
TeXpert

Цитата:
GNU Fortran (GCC) 4.1.2 20080704

староват конечно,но должен работать. попробуйте проделать компиляцию в точности как я указал без f77 и f95 а указывайте gfortran.

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 00:20 15-10-2010
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
terminat0r
Цитата:
вы компилируете билиотеку только ОДИН раз под конкретный процессор
Ну, маэстро, повторять не надо, я это прекрасно знаю, просто решил таки проверить свою мысль
 
Ща проверю твой вариант компиляции и сборки, у меня слегка (но существенно!) отличался
 
Что странно, в стандартном дистрибутиве SLED 11 нет gfortran. В RHEL 5 мне не приходилось ничего доставлять

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 00:25 15-10-2010
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Macker
Сорри, не смотрел на программу, как-то желания нет, но рекомендую выучить функции
MAXVAL(ARRAY, dim, mask)  
MAXLOC ( array, mask )  
MINVAL(ARRAY, dim, mask)  
MINLOC ( array, mask )  
SUM (ARRAY, dim, mask)
и никогда не используйте названия внутренних функций min max как собственные названия переменных!
 
ладно вот что-то типа этого, но проверяйте сами.

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 00:31 15-10-2010 | Исправлено: terminat0r, 01:02 15-10-2010
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
terminat0r, спасибо конечно, но получилось по размеру такой же файл, и с той же ошибкой:
Код:
 E04CCF Example Program Results
 ** ABNORMAL EXIT from NAG Library routine E04CCF: IFAIL =     1
 ** NAG hard failure - execution terminated
Значит, таки собирал я правильно, теперь попробую с Intel Fortran

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 00:32 15-10-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru