首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过在python 3中导入libm来更改舍入模式

通过在python 3中导入libm来更改舍入模式
EN

Stack Overflow用户
提问于 2021-02-23 16:03:06
回答 1查看 31关注 0票数 0

我的环境: Ubuntu 18.04,Anaconda,Python 3.6

我使用以下代码通过ctype在python中导入libm,以便更改浮点类型环境,例如舍入。

代码语言:javascript
复制
import numpy as np
import ctypes

FE_TONEAREST = 0x0000
FE_DOWNWARD = 0x0400
FE_UPWARD = 0x0800
FE_TOWARDZERO = 0x0c00


#libm = ctypes.CDLL("libm.so", ctypes.RTLD_GLOBAL)
libm = ctypes.cdll.LoadLibrary(r'/usr/lib/x86_64-linux-gnu/libm.so')

v = 1. / (1<<23)
print( repr(np.float32(1+v) - np.float32(v/2))) # prints 1.0

#change mode
libm.fesetround(FE_UPWARD)

print( repr(np.float32(1+v) - np.float32(v/2))) # prints 1.0000002

然而,我得到了以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "mode.py", line 10, in <module>
    libm = ctypes.cdll.LoadLibrary(r'/usr/lib/x86_64-linux-gnu/libm.so')
  File "/anaconda/envs/phat/lib/python3.6/ctypes/__init__.py", line 426, in LoadLibrary
    return self._dlltype(name)
  File "/anaconda/envs/phat/lib/python3.6/ctypes/__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /usr/lib/x86_64-linux-gnu/libm.so: invalid ELF header

libm是ubuntu 18.04附带的默认库。

你能告诉我导入库的最好方法是什么吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-02-23 16:48:23

我已经更改了库路径

从…

/usr/lib/x86_64-linux-gnu/libm.so

/lib/x86_64-linux-gnu/libm.so.6

啊,真灵。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66329222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档