0

GNU Fortran から expm1 の高速な実装を呼び出す方法はありますか? 理想的には、(exp(x)-1)/x を直接計算してゼロ引数の余分なチェックを回避する関数があると便利です。expm1 の基本バージョンは特に役に立ちます。

4

1 に答える 1

2

libm から呼び出す方法は次のとおりです。

  use, intrinsic :: iso_c_binding, only: c_double

  implicit none

  interface
     real(c_double) function expm1(x) bind(c, name='expm1')
       import c_double
       real(c_double), intent(in), value :: x
     end function expm1
  end interface

  print*, expm1(3.4d0)

end program

関数の glibc ソース コードがあまり期待を裏切らないように見える場合は、それを Fortran に変換して要素にすることができます (要素とは Fortran キーワードを意味する場合)。

于 2015-05-22T12:24:25.257 に答える