Неопределенная ссылка на 'qcos_' и '_g95_qcos_r16' с четырехкратной точностью в G95
Вопрос
Я пытался сделать четырехкратную точность на FORTRAN [real(kind=16)], но я продолжаю получать ошибку
C:\User\User\AppData\Local\Temp/ccUMY6b.0:forcefunction.f95:(.text+0x437):
undefined reference to 'qcos_'
Я пытался измениться qcos
к cos
но,
C:\User\User\AppData\Local\Temp/ccM5CBUM.0:forcefunction.f95:(.text+0x2fd1):
undefined reference to '_g95_qcos_r16'
Та же проблема для sin
, abs
, acos
, asin
, sqrt
Решение
kind=16
это не обязательно четырехкратная точность.значения вида не определены языковым стандартом и не переносятся между компиляторами.Шестнадцать может быть неподходящим значением для четырехкратной точности в вашем компиляторе.
Не все компиляторы поддерживают четырехъядерную точность на всех архитектурах.Вы можете проверить, напечатав следующие значения:
selected_real_kind (14)
selected_real_kind (17)
selected_real_kind (32)
Первый запрашивает двойную точность, следующий - промежуточную точность (10 байт), которая иногда доступна на процессорах Intel, и последний - четырехзначную.Если компилятор не поддерживает запрошенное количество десятичных разрядов, то selected_real_kind
функция вернет -1
.
Другие советы
Я могу подтвердить вашу проблему в моей системе с помощью g95 4.0.3.
Согласно этой теме http://coding.derkeiler.com/Archive/Fortran/comp.lang.fortran/2009-02/msg00668.html встроенные функции еще не реализованы для четырехкратной точности.Следовательно, вам придется изменить компилятор или использовать только двойную точность.