首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

f2py无法编译递归fortran函数/子例程

f2py是一个用于将Fortran代码集成到Python中的工具。然而,由于Fortran语言的特性,f2py在编译递归Fortran函数或子例程时可能会遇到一些问题。

递归函数是指在函数体内调用自身的函数。由于Fortran语言的限制,递归函数的编译需要进行一些特殊处理。f2py在默认情况下不支持编译递归Fortran函数,因此无法直接处理这种情况。

解决这个问题的一种方法是通过修改Fortran代码,将递归函数转换为迭代函数。迭代函数是指使用循环结构来实现递归函数的功能。通过这种方式,可以避免编译递归函数时的问题。

另一种方法是使用其他工具或库来处理递归函数。例如,可以考虑使用Fortran编译器(如GNU Fortran)来编译递归函数,并将其编译为动态链接库(DLL)。然后,可以使用Python的ctypes模块来加载和调用这个动态链接库中的函数。

总结起来,f2py无法直接编译递归Fortran函数/子例程。解决这个问题的方法包括将递归函数转换为迭代函数或使用其他工具和库来处理递归函数。具体的解决方案需要根据具体情况进行选择和实施。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云计算服务:https://cloud.tencent.com/product/cvm
  • 腾讯云函数计算:https://cloud.tencent.com/product/scf
  • 腾讯云容器服务:https://cloud.tencent.com/product/tke
  • 腾讯云数据库:https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发:https://cloud.tencent.com/product/mobiledk
  • 腾讯云音视频服务:https://cloud.tencent.com/product/tiia
  • 腾讯云网络安全:https://cloud.tencent.com/product/ddos
  • 腾讯云云原生应用平台:https://cloud.tencent.com/product/tke
  • 腾讯云服务器运维:https://cloud.tencent.com/product/cwp
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NumPy 1.26 中文文档(五十五)

(gh-16154) F2PY 支持 Fortran character 字符串 F2PY 现在支持包装 Fortran 函数: 字符(例如 character x) 字符串数组(例如 character...(gh-16154) F2PY 支持 Fortran character 字符串 F2PY 现在支持包装 Fortran 函数: 字符(例如 character x) 字符数组(例如 character...(gh-16154) F2PYFortran character 字符串的支持 F2PY 现在支持包装 Fortran 函数: 字符(例如character x) 字符数组(例如character...(gh-21437) F2PY 支持 value 属性 Fortran 标准要求使用value属性声明的变量必须按值传递而不是按引用传递。F2PY 现在正确支持这种用法模式。...(gh-21437) F2PY 支持值属性 Fortran 标准要求使用value属性声明的变量必须按值传递而不是按引用传递。F2PY 现在正确支持这种用法模式。

2510

NumPy 1.26 中文文档(五十六)

它们被添加到模块的body列表中,其中包含一个新键implementedby,列出了实现运算符或赋值的例程函数的名称。...(gh-20821) np.fromiter 现在接受对象和数组 numpy.fromiter 函数现在支持对象和数组的数据类型。请参阅函数文档以获取示例。...它们被添加到包含新键implementedby的模块的body列表中,该键列出了实现运算符或赋值的例程函数的名称。...它们被添加到包含新键 implementedby 的模块的 body 列表中,列出了实现运算符或赋值的例程函数的名称。...(gh-20821) np.fromiter现在接受对象和数组 numpy.fromiter函数现在支持对象和数组数据类型。请参阅函数文档以获取示例。

3710

NumPy 1.26 中文官方指南(四)

NumPy 例程具有内置的 ufunc,但用户也可以编写自己的。 向量化 NumPy 把数组处理交给了 C 语言,在那里循环和计算比在 Python 中快得多。...一些 NumPy 例程总是返回视图,一些总是返回副本,有些可能返回其中之一,对于一些情况可以指定选择。管理视图和副本的责任落在程序员身上。...character 字符串的 F2PY 支持](release/1.24.0-notes.html#f2py-support-for-fortran-character-strings) 新函数...f90 编译器 为 Cython 3.0 及以上版本添加 NumPy 声明 使窗口函数完全对称 性能改进和更改 启用多平台 SIMD 编译器优化 更改 更改 divmod...ctypes 施加修改 np.ma.notmasked_contiguous 和 np.ma.flatnotmasked_contiguous 现在总是返回列表 np.squeeze 恢复了无法处理

8410

NumPy 1.26 中文文档(五十七)

(gh-18629) f2py 现在可以识别 Fortran 抽象接口块了。 f2py现在可以解析抽象接口块了。 (gh-18695) 通过环境变量配置 BLAS 和 LAPACK。...Clang 的默认版本是非严格版本,允许编译器生成不正确设置浮点警告/错误的代码。 (gh-19049) 通用函数中错误类型的更改 在某些情况下,通用函数可能会对无效输入引发不同的错误。...(gh-18629) f2py 现在能够识别 Fortran 的抽象接口块了 f2py 现在可以解析抽象接口块。 (gh-18695) 通过环境变量配置 BLAS 和 LAPACK。...(gh-18629) f2py 现在可以识别 Fortran 抽象接口块 f2py 现在可以解析抽象接口块。...#18352:DOC:更改许可证日期 2020 -> 2021 #18353:CI:CircleCI 似乎偶尔超时,增加限制 #18354:BUG:修复包装 F90 例程时的 f2py bug

2710

与机器学习算法相关的数据结构

例如,libAGF库使用递归控制语言将二进制分类推广到多类。特殊字符用于重复前面的选项,但由于该语言是递归的,因此该选项必须取自相同的层级或更高级别。这是通过堆栈实现的。...假设你正在构建一个DSL,希望存储函数和变量的列表,并且需要区分这两者。...不像以前的Fortran程序,为了改变网格大小,必须忍受将近半个小时的编译周期。 即使你不能想出一个应用程序,我仍然认为知道堆栈和队列之类的东西是很好的。你永远不知道什么时候能派上用场。...如果你无法应对后者,你将如何建造像前者一样的东西? 问题 如果你想自己练习并实现ML算法的数据结构,请尝试解决以下一些问题: 1....将矩阵向量乘法代码片段封装到一个名为MatrixTimeVectoral的例程中,为例程设计调用语法。 2.

2.4K30

一份可以令 Python 变快的工具清单

当然在itertools和 functools模块 中,还有很多函数可以带来很高效的代码。...这篇文章主要讲优化单处理器的代码,下面会介绍一些一些高效的函数实现,也有已经封装好的拓展模块,还包括速度更快的Python解释器。 当然多处理器版本确实能大幅提高运行效率。...除了这个数据结构之外,还实现了若干个函数和运算符,可以高效地进行数组运算。并且对于被调用的次数进行了精简。它可以被用来进行极其高效的数学运算。...5.SWIG、F2PY和Boost.Python 这些工具可以将其他的语言封装为Python的模块。第一个可以封装C/C++语言。F2PY可以封装Fortran。...ctypes模块可以用于在内存中构建编译C的对象。并且调用共享库中的C的函数。不过ctypes已经包含在Python的标准库里面了。 llvm-py主要提供LLVM的Python接口。

1.1K10

NumPy 1.26 中文文档(五十三)

拼写错误和拼写错误处于较低的层次; 我们乐意听到它们,但可能无法迅速修复。 这些也可以作为拉取请求或问题来处理。...拼写错误和拼写错误居于更低的位置;我们欢迎了解这种错误,但可能无法及时修复。这些问题也可以作为 pull 请求或问题处理。...NamedTuples np.char 中的字符串函数与 NEP 42 自定义 dtype 兼容 可以从字符串抽象 DType 类创建字符串 DType 实例 富士通 C/C++ 编译器现在受支持...ufunc.outer用于矩阵的已弃用 进一步弃用数字样式类型 ndindex的ndincr方法已被弃用 未定义__len__和__getitem__的 ArrayLike 对象 未来变更 无法使用数组数据类型的数组...为 Cython 3.0 及更高版本添加 NumPy 声明 使窗口函数完全对称 性能改进和变更 启用多平台 SIMD 编译优化 变更 divmod(1., 0.)及相关函数行为变更

4010

碾压 Python!为什么 Julia 速度这么快?

很多人认为 Julia 运行速度很快,因为它是即时编译(JIT)型的(也就是说,每条语句都使用编译函数来运行,这些函数要么在使用之前进行即时编译,要么在之前已经编译过并放在缓存中)。...如果一个函数是类型稳定的,那么编译器就会知道函数在任意时刻的类型,就可以巧妙地将其优化为与 C 语言或 Fortran 相同的汇编代码。...如果函数内部具有类型稳定性(也就是说,函数内的任意函数调用也是类型稳定的),那么编译器就会知道每一步的变量类型,它就可以在编译函数时进行充分的优化,这样得到的代码基本上与 C 语言或 Fortran 相同...R 语言程序员一边看着使用 R 语言实现的 Fibonacci 函数,一边说:“这是一段很糟糕的代码,不应该在 R 语言中使用递归,因为递归很慢”。...但实际上,Fibonacci 函数是用来测试递归的,而不是用来测试语言的执行速度的。

2.3K10

PGI OpenACC 2018版:原来你是这样的编译

对于CUDA Fortran用户来说,PGI编译器是必然要用到的。 其实PGI编译器不仅仅可以支持Fortran,还可以支持C/C++。...PGI Fortran 2003, C11和c++ 14编译器提供了最先进的SIMD矢量化,并受益于Linux x86、Linux OpenPOWER和macOS上的新优化的单和双精度数值内部函数。...2.6特性包括手动的深度复制指令、串行计算构造、在host_data构造中的if_present子句、no_create数据子句、attach/detach子句、acc_get_property API例程...在OpenACC区域中使用C++14 Lambdas with Capture c++ lambda表达式提供了一种方便的方法,可以在调用或传递参数的位置定义匿名函数对象。...LLVM / x86 - 64代码生成器 2018年发行版包括一个用于x86-64的LLVM代码生成器,完全集成了PGI Fortran、C和c++编译器,包括对OpenACC和CUDA Fortran

3.3K70

NumPy 1.26 中文文档(五十)

SWIG无法确定这些细节,并且也不试图这样做。 如果我们设计了rms,那么我们可能使其成为一个仅接受名为seq的double值长度为n的输入数组的例程,并返回均方根。...然而,SWIG的默认行为将是创建一个可编译但几乎无法像 C 例程预期的那样从脚本语言使用的包装器函数。...辅助函数 numpy.i文件包含几个宏和例程,它在内部使用这些内容来构建其类型映射。但是,这些功能在接口文件的其他地方也可能会有用。这些宏和例程被实现为片段,在上一节中简要描述。...然而,SWIG的默认行为将是创建一个包装函数,可以编译,但几乎无法按照 C 例程预期的方式从脚本语言中使用。...辅助函数 文件numpy.i包含许多宏和例程,它们在内部用于构建其类型映射。但是,这些函数可能在接口文件中其他地方也有用。这些宏和例程被实现为片段,在前一节中简要描述了这些片段。

3610

图灵奖12 —— 约翰·巴克斯,Fortran和BNF的发明人,却有着不幸的童年

最后,添加了一些结构:函数定义、格式化I/O语句、计算GO TO语句、CONTINUE状态和最多6个字符的变量。 FORTRAN I具备了现代命令式编程语言的大部分基本要素。...它有变量、表达式、赋值、用于操作整数和浮点数(数组)的控制结构,以及用户定义的函数。它缺少的是块结构:所有变量都是全局的,没有动态存储(比如堆栈),所以递归是不可能的。...在实现方面,编译器做了更好的错误报告,并支持例程的单独编译。该系统于1958年春天发布。 FORTRAN III是在FORTRAN II的一年内开发出来的,它增加了布尔表达式和字符串数据类型。...很难确定巴克斯在FORTRAN项目中扮演了什么角色,因为他几乎从不认为自己参与了该语言或编译器设计的任何部分(除了他在编译表达式和拆分编译器第2部分的想法)。...截至撰写本文时,最新的标准是ISO标准Fortran 2003,一个新的标准正在制定中,并将于2008年发布。多年来,FORTRAN合并了许多其他语言的特性,比如递归和面向对象编程支持。

1.4K20

NumPy 1.26 中文文档(四十六)

如果sep为 NULL(或“”),则将字符串解释为二进制数据的字节,否则将由sep分隔的字符串转换为数据类型为dtype的项。某些数据类型在文本模式下可能无法读取,如果发生这种情况,将引发错误。...例如,模拟的指针数组不能传递给期望特定的静态定义的 2-d 和 3-d 数组的例程。要传递给需要这些类型输入的函数,必须静态定义所需的数组并复制数据。...该迭代器可用于编写类似于 ufunc 的东西,其中最大轴的循环由单独的例程完成。如果axis为负,则将**axis设置为具有最小步幅的轴,并使用该轴。...例如,无法将模拟的指针数组传递给需要特定、静态定义的 2 维和 3 维数组的例程。要传递给需要这种输入的函数,必须静态定义所需的数组并复制数据。...所有引用的数据类型对象(描述符和数据类型对象的字段成员)也会被更改(递归地)。

2710
领券