小编Nic*_*mer的帖子

将libquadmath链接到linux上的c ++

我有一个示例代码:

#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文件由 …

floating-point gcc

5
推荐指数
1
解决办法
5840
查看次数

检查是否定义了uint64_t

uint64_t不保证在32位平台上定义类型,并且代码类似

int main() {
  uint64_t i = 0;
}
Run Code Online (Sandbox Code Playgroud)

可能会导致类型的编译错误incomplete type.

是否有预处理程序指令来检查是否uint64_t存在?检查类型是否已定义的任何其他方式?

c++ types preprocessor-directive

5
推荐指数
1
解决办法
587
查看次数

C++中的"Python字典"功能?

在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)

但实际上我希望值的类型不同(特别是允许字典作为值).是否有允许这样做的成语或库?有什么计划用于下一个标准吗?

c++ dictionary c++11

5
推荐指数
1
解决办法
195
查看次数

Ansible:强制执行管道故障

今天早些时候,我们遇到了一个由以下 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 pipefailset -e. 是否有可能在 ansible 中做到这一点,最好是对我的所有shell命令全局进行?

error-handling bash shell pipe ansible

5
推荐指数
1
解决办法
2591
查看次数

从稀疏数据创建PNG图像

我想在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

5
推荐指数
1
解决办法
584
查看次数

匹配"abc","d,e","",",f"`与组

我想正则表达式匹配字符串

"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)

会做的伎俩.但是,它只匹配abcd,e.

在regex101上创建了一个玩具示例来显示行为.

任何提示?

regex

5
推荐指数
1
解决办法
80
查看次数

将复杂的 NumPy 数组转换为 (n, 2)-实部和虚部数组

我有一个复数值的 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 函数可以为我执行此操作?

python arrays numpy

5
推荐指数
3
解决办法
4013
查看次数

SWIG 编译的 C++/Python 代码的测试覆盖率

我有一个经典的 SWIG 设置,其中从 Python 调用一堆 C++ 函数。现在,在添加一些测试(在 Python 中)之后,我想获得 C++ 源代码的测试覆盖率。经典的Python方法是

nosetests --with-coverage --cover-package=mypackage
Run Code Online (Sandbox Code Playgroud)

但这仅适用于本机 Python 模块。事实上,这将返回mypackage.pySWIG 生成的文件的覆盖范围。

由于我需要覆盖 C++ 文件(/SWIG 生成的共享库),因此--coverage肯定需要添加编译和链接器标志。但不知道从那里去哪里。

有什么提示吗?

c++ python swig test-coverage

5
推荐指数
1
解决办法
548
查看次数

numpy.arrays的fsum,稳定求和

我有一些numpy.array带有较小值的多维s,我需要将它们相加且数值误差很小。对于floats,这里有math.fsum(及其实现在此处),对我一直很好。numpy.sum不够稳定。

如何获得numpy.arrays 的稳定求和?


背景

这是用于Quadpy软件包的。小值数组是在(许多)时间间隔的特定点上乘以其权重的函数求值。这些总和是所述函数在间隔上的积分的近似值。

python arrays numpy

5
推荐指数
1
解决办法
665
查看次数

强制 pip 从源代码 (tar.gz) 构建,而不是从轮子 (.whl) 构建

使用 来安装软件包时pip,如果可用,它会选择轮子以进行快速安装。但是,我想强制 pip 从源.tar.gz文件安装包。(这是为了确保它链接到正确的第三方系统库。

(如果它发挥任何作用,那就是h5py。)

有什么提示吗?

python pip

5
推荐指数
1
解决办法
8906
查看次数