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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки

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

non100p

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почитал тему "Работа с Intel Fortran через Visual Studio 2003 и не только" узнал о mpfun90. Закачал себе на ПК, но вот ни как не могу заставить работать, то ошибки какие-то лезут, то еще чего. Делал следующие: переименовал файл mpfun90.f в mpfun90.f90 (тоже самое с mpmod90.f) добавил их в проект и создал новый файл test.f90 со след. содержанием:
 
program main
    use mpmodule
    implicit none
    type (mp_real) a, b
    call mpinit (15)
    a = 1.d0
    b = cos(a)**2 + sin(a)**2 - 1.d0
    call mpwrite(6, b)
    stop
 end program
 
не фурычит!!! выдает след:
forrtl: severe (161): Program Exception - array bounds exceeded
Image              PC        Routine            Line        Source
test.exe           00553F8C  MPDEFMOD_mp_MPOUT         729  mpmod90.f90
test.exe           00553338  MPDEFMOD_mp_MPOUT         633  mpmod90.f90
test.exe           005602DC  MPGENMOD_mp_MP_OU        6760  mpmod90.f90
test.exe           00440054  MAIN                        8  test.f90
test.exe           0059D779  Unknown               Unknown  Unknown
test.exe           0058FB84  Unknown               Unknown  Unknown
kernel32.dll       7C816FD7  Unknown               Unknown  Unknown
 
Помогите плз.
Компьютер дома Athlon 2500 barton.

Всего записей: 12 | Зарегистр. 13-01-2006 | Отправлено: 01:54 09-11-2006
akaGM

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

Код:
call mpinit (15)

просишь 15 верных цифр, а сам:

Код:
b = cos(a)**2 + sin(a)**2 - 1.d0  

считаешь с одинарной точностью...
 
------
кстати, у меня всё корректно работает, правда я не использую VS...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 15:27 09-11-2006 | Исправлено: akaGM, 16:16 09-11-2006
non100p

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Блин, да я вообще не понимаю, как этим пользоваться... Может кто-нибудь напишет примерный алгоритм с нуля, чтобы понять... Желательно начиная с выбора 100% работающего компилятора для этой библиотеки, с шагами установки этой библиотеки и простеньким примером программки.
 
Я просто не рулю в Фортране. То что дано в реадми с библиотекой мне не понятно(

Всего записей: 12 | Зарегистр. 13-01-2006 | Отправлено: 23:00 09-11-2006
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
non100p
там пример в поставке есть...
 
для 99.99% современных расчётов (включая научные) хватает типа double precision
15-16 значащих цифр...
 
а вообще если

Цитата:
Я просто не рулю в Фортране

может тебе это и не надо?

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 23:14 09-11-2006
non100p

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не, ну что за манера, а! Если спрашиваю, то надо!
 
Мне просто нужно с большой точностью функции Ханкеля первого и второго рода посчитать. Считаю их с помощью их представления в виде ряда. Сравниваю результат в Maple с результатом в Фотране получается расхождение. В качестве переменных использую тип REAL (8).
 
Добавлено:
Вот пример:
в Maple
ZZZ:=500.3333458/1873.2547e-20;
результат - 0.2670930684e20
 
тоже самое в виндовом калькуляторе
 
в Фортране
ZZZ=500.3333458/1873.2547e-20
print *, 'ZZZ =', ZZZ
результат - 2.670930567560901E+019
 
потеря точности уже в 7 знаке(

Всего записей: 12 | Зарегистр. 13-01-2006 | Отправлено: 23:38 09-11-2006
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
non100p
обрати внимание на свою и на мою (красную строчку), надеюсь всё станет ясно...

Код:
 
      real*8 myZ
      real*8 zzz
 
      ZZZ = 500.3333458/1873.2547e-20
      myZ = 500.3333458d+0/1873.2547d-20

      write(*,*) 'ZZZ = ', ZZZ
      write(*,*) 'myZ = ', myZ
      end
 

//maple
            0.2670930684e20
 
//intel fortran 9.0
 ZZZ =  2.670930567560901E+019
 myZ =  2.670930684439228E+019

 

 

Цитата:
Не, ну что за манера, а! Если спрашиваю, то надо!  

извини за манеры, вобще молчу...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 16:54 10-11-2006 | Исправлено: akaGM, 20:32 17-01-2007
non100p

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

Всего записей: 12 | Зарегистр. 13-01-2006 | Отправлено: 23:53 13-11-2006
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
надо подключить всего два объектника
mpfun90.obj и
mpmod90.obj

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 14:32 14-11-2006
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Compaq Visual Fortran 6.5 и mpfun90


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru