Referência indefinida para 'qcos_' e '_g95_qcos_r16' com precisão quádrupla em G95

StackOverflow https://stackoverflow.com//questions/20036637

  •  21-12-2019
  •  | 
  •  

Pergunta

Tentei fazer precisão quad em FORTRAN[real(kind=16)], mas continuo recebendo erro

C:\User\User\AppData\Local\Temp/ccUMY6b.0:forcefunction.f95:(.text+0x437):
undefined reference to 'qcos_'

Eu tentei mudar qcos para cos mas,

C:\User\User\AppData\Local\Temp/ccM5CBUM.0:forcefunction.f95:(.text+0x2fd1):
undefined reference to '_g95_qcos_r16'

O mesmo problema para sin, abs, acos, asin, sqrt

Foi útil?

Solução

kind=16 não é necessariamente precisão quádrupla.os valores de tipo não são definidos pelo padrão da linguagem e não são portáveis ​​entre compiladores.Dezesseis pode não ser o valor ideal para precisão quádrupla em seu compilador.

Nem todos os compiladores suportam precisão quádrupla em todas as arquiteturas.Você pode verificar imprimindo os seguintes valores:

selected_real_kind (14)
selected_real_kind (17)
selected_real_kind (32)

O primeiro solicita precisão dupla, o próximo uma precisão intermediária (10 bytes) que às vezes está disponível em processadores Intel e o último quádruplo.Se o compilador não suportar o número solicitado de dígitos decimais, o selected_real_kind função retornará -1.

Outras dicas

Posso confirmar seu problema em meu sistema com g95 4.0.3.

De acordo com este tópico http://coding.derkeiler.com/Archive/Fortran/comp.lang.fortran/2009-02/msg00668.html as funções intrínsecas ainda não foram implementadas para precisão quad.Portanto, você deve alterar o compilador ou usar apenas precisão dupla.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top