小编zr.*_*zr.的帖子

将uint32的向量转换为float向量的最有效方法是什么?

x86没有从无符号 int32 转换为浮点的SSE指令.实现这一目标的最有效指令序列是什么?

编辑:为了澄清,我想做以下标量操作的向量序列:

unsigned int x = ...
float res = (float)x;
Run Code Online (Sandbox Code Playgroud)

EDIT2:这是一个用于进行标量转换的简单算法.

unsigned int x = ...
float bias = 0.f;
if (x > 0x7fffffff) {
    bias = (float)0x80000000;
    x -= 0x80000000;
}
res = signed_convert(x) + bias;
Run Code Online (Sandbox Code Playgroud)

floating-point x86 assembly sse

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

如果未调用引用的库函数,它是否会被链接?

假设我们有一个库的以下接口:

// my_interface.h
typedef float (*myfunc)(float);
myfunc get_the_func();
Run Code Online (Sandbox Code Playgroud)

并假设实现如下:

// my_impl.c
#include <math.h>
myfunc get_the_func() {
    return sinf;
}
Run Code Online (Sandbox Code Playgroud)

现在假设客户端代码执行以下操作:

#include "my_interface.h"
...
myfunc func = get_the_func();
printf("%f\n", func(0.0f));
Run Code Online (Sandbox Code Playgroud)

标准是否保证get_the_function()将返回标准数学库sinf()的地址?如果是这样,标准中的这个含义是什么?请注意,sinf()未在任何地方显式调用.

c standards linkage

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

'git add.' 不起作用

我正在尝试为我已经工作了一段时间的项目设置Git.我记得很久以前设置Git但从未出于各种原因使用过它.现在我想使用它我得到一个奇怪的问题,我认为这与旧安装有关.

为了重新开始,我安装了一个新的Ubuntu操作系统,这样就不会有Git安装,我复制了项目(Grails).然后我导航到该目录并运行以下命令:

git init

git remote add origin https://USERNAME@bitbucket.org/USERNAME/APPNAME.git
Run Code Online (Sandbox Code Playgroud)

然后我跑了:

git add .
Run Code Online (Sandbox Code Playgroud)

这是我得到以下错误的地方:

fatal: Not a git repository: /home/user/workspace/App_V3/.git/modules/plugins/grails-spring-security-ui
Run Code Online (Sandbox Code Playgroud)

这个错误很奇怪,因为它甚至不匹配我所在的目录,因为目录如下:

/ home/user中/工作区/ App_V7 /

我想我原本可能在旧操作系统的Ap​​p_V3文件夹中设置了Git,但不知道为什么它仍然指向该目录,因为我已经运行下面的代码重新初始化它:

rm -rf .git
git init
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我,因为它非常令人沮丧:S

提前致谢

git repository git-add

5
推荐指数
2
解决办法
4622
查看次数

最好的STL变换 - 就像三元运算符的模板函数一样

STL定义了两种转换函数

第一个是对于一元运算符:

template <class InputIterator, class OutputIterator, class UnaryOperation>
OutputIterator transform (InputIterator first1, InputIterator last1,
                                OutputIterator result, UnaryOperation op);
Run Code Online (Sandbox Code Playgroud)

第二个是二元运算符:

template <class InputIterator1, class InputIterator2,
          class OutputIterator, class BinaryOperation>
  OutputIterator transform (InputIterator1 first1, InputIterator1 last1,
                            InputIterator2 first2, OutputIterator result,
                            BinaryOperation binary_op);
Run Code Online (Sandbox Code Playgroud)

对于三元运算符,最有效的类似函数实现是什么?

编辑:这是我提出的简单实现,但是不是更精简和更优雅的解决方案吗?

template <class InputIterator1, class InputIterator2, class InputIterator3,
          class OutputIterator, class TrenaryOperation>
  OutputIterator transform3(InputIterator1 first1, InputIterator1 last1,
                            InputIterator2 first2, InputIterator3 first3, OutputIterator result,
                            TrenaryOperation trenary_op)
{
  while (first1 != last1) {
    *result = trenary_op(*first1, *first2, …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm stl

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

我应该在我的c ++ WIn32应用程序中覆盖运算符new/delete

我知道微软自己过去曾建议通过调用HeapCreate()和HeapAlloc()来覆盖operator new,但那是不久之前.有关详细信息,请参阅KB139638.

我还能在Win32上覆盖新的/删除吗?什么是推荐的实施?

TIA.

c++ winapi memory-management operator-overloading

4
推荐指数
1
解决办法
480
查看次数

如何使tr1 :: array分配对齐的内存?

您可以分配一个std :: vector,它通过定义您自己的分配器来分配对齐的堆内存.您可以使用declspec align在堆栈上分配c样式数组.但是你可以声明一个tr1 :: array来保证索引为零的元素会对齐吗?

c++ arrays stl tr1 memory-alignment

4
推荐指数
1
解决办法
1093
查看次数

点积的最坏情况精度是多少?

假设处理器只有符合 IEEE-754 的“fadd”和“fmul”操作(没有“dot”或“fma”指令)。通过点积运算的简单实现将达到的最坏情况精度是多少。例如,对于长度为 3 的向量:

dot(vec_a, vec_b) = vec_a.x*vec_b.x + vec_a.y*vec_b.y + vec_a.z*vec_b.z
Run Code Online (Sandbox Code Playgroud)

这是我的分析,但我不确定它是否正确:对于长度为 N 的向量,有 N 次乘法和 N-1 次加法,导致 2N-1 次浮点运算。在最坏的情况下,对于这些操作中的每一个,表示对于准确结果来说都太小了,因此中间结果将被四舍五入。每次舍入增加 0.5 ULP 误差。那么最大误差将是 (2N-1)*0.5 = N-1/2 ULP?

floating-point floating-accuracy ieee-754

3
推荐指数
2
解决办法
1692
查看次数

为什么将Python安装在Frameworks目录中?

我一直在想为什么将python安装在名为Frameworks的目录中?(虽然不是Framework)

$ which python                                                                                    
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
Run Code Online (Sandbox Code Playgroud)

有人请解释!谢谢!

python macos

2
推荐指数
1
解决办法
1109
查看次数

UB可以导致多个单线程应用运行产生不同的输出吗?

对于相同的输入,满足以下条件的代码是否可以为每次运行生成不同的输出?

  • 代码是单线程的,但它确实链接到线程安全的运行时库.
  • 没有显式调用rand()或time()或他们的朋友.
  • 有一些堆内存分配.
  • 可能存在一些(错误的)代码导致未定义的行为.

c++ deterministic undefined-behavior

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

是否有一个程序作为并行程序正确执行但不作为顺序程序?

这个问题出于好奇心.

OpenMP规范在"执行模型"部分中说明了以下内容:

"... it is possible and permitted to develop a program that executes correctly
as a parallel program but not as a sequential program ..."
Run Code Online (Sandbox Code Playgroud)

那么这样一个程序的例子是什么?

c specifications openmp

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