我有一个示例代码:
#include <quadmath.h>
int main()
{
__float128 foo=123;
cosq(foo);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令编译它:
g++ f128.cpp -lquadmath
g++ f128.cpp /usr/lib64/gcc/x86_64-suse-linux/4.6/libquadmath.a
g++ f128.cpp /usr/lib64/gcc/x86_64-suse-linux/4.6/libquadmath.a /usr/lib64/libquadmath.so.0
g++ f128.cpp /usr/lib64/gcc/x86_64-suse-linux/4.6/libquadmath.a /usr/lib64/libquadmath.so.0 /usr/lib64/gcc/x86_64-suse-linux/4.6/libquadmath.a
Run Code Online (Sandbox Code Playgroud)
所有这些命令都会产生同一个错误:
f128.cpp:(.text+0x1b): undefined reference to `cosq(__float128)'
Run Code Online (Sandbox Code Playgroud)
我也尝试声明cosq如下,但不包括在内quadmath.h.这种样式的声明在C++接口中用于其他程序中的fortran子例程,并且它们运行良好.
extern "C" __float128 cosq_(__float128 *op);
extern "C" __float128 cosq_(__float128 op);
extern "C" __float128 cosq(__float128 *op);
...and so on...
Run Code Online (Sandbox Code Playgroud)
结果是一样的.
然后我尝试cosq在Fortran中使用:
PROGRAM test
REAL*16 foo
REAL*16 res
foo=1;
res=cos(foo)
PRINT *,res
END
Run Code Online (Sandbox Code Playgroud)
这个程序编译和执行良好(用大量数字打印答案),所以cosq在其中工作.这个程序编译时没有选项:gfortran f128.f90.
操作系统是OpenSUSE 12.1,gcc版本是4.6.2.*.h,*.a和*.so文件由 …
uint64_t不保证在32位平台上定义类型,并且代码类似
int main() {
uint64_t i = 0;
}
Run Code Online (Sandbox Code Playgroud)
可能会导致类型的编译错误incomplete type.
是否有预处理程序指令来检查是否uint64_t存在?检查类型是否已定义的任何其他方式?
在Python中,可以定义一个字典
a = {
'a': 'hhh',
'b': 123,
'jfa': {'j': 1.5, 'r': 'string'}
}
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,我看到你可以
std::map<std::string, int> a = {
{"a", 1},
{"hh", 4}
};
Run Code Online (Sandbox Code Playgroud)
但实际上我希望值的类型不同(特别是允许字典作为值).是否有允许这样做的成语或库?有什么计划用于下一个标准吗?
今天早些时候,我们遇到了一个由以下 shell 管道引起的严重问题:
- name: get remote branches
shell: git ls-remote -h git@bitbucket.org:orga/repo.git | sed 's_.*refs/heads/__g'
register: branches_remote
Run Code Online (Sandbox Code Playgroud)
该git命令失败,而是整个管道的返回码为0。这是默认的bash / sh的行为。
要解决此问题,在 sh/bash 中,您可以set -o pipefail或set -e. 是否有可能在 ansible 中做到这一点,最好是对我的所有shell命令全局进行?
我想在Python中存储PNG图像,其中RGB值由列表给出
entries = [
[1, 2, [255, 255, 0]],
[1, 5, [255, 100, 0]],
[2, 5, [0, 255, 110]],
# ...
]
Run Code Online (Sandbox Code Playgroud)
(行,列,RGB三元组),以及[255, 255, 255]有关图像总尺寸的默认值和信息.
使用PIL,我当然可以转换entries为密集的m-by n-by- 3matrix,但这不适合内存; 矩阵维数可以在万里.
是否有其他方法可以使用上述信息创建PNG图像?
python png image-processing sparse-matrix python-imaging-library
我想正则表达式匹配字符串
"abc", "d,e" , "", ",f"
Run Code Online (Sandbox Code Playgroud)
这样,组abc,d,e``和 ,f(没有引号)是分开匹配的.
随着小组
"([^"]*)"
Run Code Online (Sandbox Code Playgroud)
匹配这些"abc"位,我假设正则表达式
(?:\s*"([^"]*)"\s*,)\s*"([^"]*)"\s*
Run Code Online (Sandbox Code Playgroud)
会做的伎俩.但是,它只匹配abc和d,e.
任何提示?
我有一个复数值的 NumPy 数组,我想将其转换为一个连续的 NumPy 数组,其中实部和虚部分开。
这个
import numpy
u = numpy.array([
1.0 + 2.0j,
2.0 + 4.0j,
3.0 + 6.0j,
4.0 + 8.0j
])
u2 = numpy.ascontiguousarray(numpy.vstack((u.real, u.imag)).T)
Run Code Online (Sandbox Code Playgroud)
可以解决问题,但是转置、vstacking和转换为连续数组可能需要一两步。
是否有本机 NumPy 函数可以为我执行此操作?
我有一个经典的 SWIG 设置,其中从 Python 调用一堆 C++ 函数。现在,在添加一些测试(在 Python 中)之后,我想获得 C++ 源代码的测试覆盖率。经典的Python方法是
nosetests --with-coverage --cover-package=mypackage
Run Code Online (Sandbox Code Playgroud)
但这仅适用于本机 Python 模块。事实上,这将返回mypackage.pySWIG 生成的文件的覆盖范围。
由于我需要覆盖 C++ 文件(/SWIG 生成的共享库),因此--coverage肯定需要添加编译和链接器标志。但不知道从那里去哪里。
有什么提示吗?
我有一些numpy.array带有较小值的多维s,我需要将它们相加且数值误差很小。对于floats,这里有math.fsum(及其实现在此处),对我一直很好。numpy.sum不够稳定。
如何获得numpy.arrays 的稳定求和?
背景
这是用于Quadpy软件包的。小值数组是在(许多)时间间隔的特定点上乘以其权重的函数求值。这些总和是所述函数在间隔上的积分的近似值。
使用 来安装软件包时pip,如果可用,它会选择轮子以进行快速安装。但是,我想强制 pip 从源.tar.gz文件安装包。(这是为了确保它链接到正确的第三方系统库。
(如果它发挥任何作用,那就是h5py。)
有什么提示吗?