Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GNU gfortran的expm1_Fortran_Gfortran_Exp - Fatal编程技术网

GNU gfortran的expm1

GNU gfortran的expm1,fortran,gfortran,exp,Fortran,Gfortran,Exp,有没有办法从GNU Fortran调用expm1的快速实现? 理想情况下,最好有一个直接计算(exp(x)-1)/x的函数,以避免对零参数进行额外检查。 expm1的基本版本将特别有用。这是如何从libm调用它的: use, intrinsic :: iso_c_binding, only: c_double implicit none interface real(c_double) function expm1(x) bind(c, name='expm1')

有没有办法从GNU Fortran调用expm1的快速实现? 理想情况下,最好有一个直接计算(exp(x)-1)/x的函数,以避免对零参数进行额外检查。
expm1的基本版本将特别有用。

这是如何从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关键字)。

:))这不是编写它的问题。它是书面和作品。问题是,当你必须计算出数十亿个这样的数字时,要快速计算。数学库(例如libm)对exp和expm1有单独的实现是有原因的……谢谢!有道理。我会玩它,看看我能从中获得多少性能。我想知道gsl的实现是否比libm快…UPD:不,从gsl的源代码来看,它不是。。。