小编use*_*710的帖子

英特尔主流的更快但不太准确的fsin?

由于在x86下fsin计算sin(x)函数的函数可以追溯到Pentium时代,显然它甚至没有使用SSE寄存器,我想知道是否有更新更好的指令来计算三角函数.

我习惯用C++编写代码并做一些asm优化,所以任何适合从C++开始,到C语言到asm的管道都适合我.

谢谢.


我现在处于Linux 64位以下,gcc并且clang(甚至强硬的铿锵并没有提供任何与FPU相关的优化AFAIK).

编辑

  • 我已经实现了一个sin功能,它通常是2倍于std::sin甚至sse上.
  • 我的功能永远不会慢fsin,即使很难fsin通常更准确,但考虑到fsin从未超越我的sin实现,我将保留我sin的现在,也是我sin完全可移植的fsin只有x86.
  • 我需要这个用于实时计算,所以我将精确换算速度,我认为我会很好,精度为4-5位小数.
  • 没有基于表的方法,我没有使用它,它搞砸了缓存,使一切变慢,没有基于内存访问或查找表的算法请.

c c++ assembly trigonometry intel

11
推荐指数
2
解决办法
2498
查看次数

线程与共享内存和MPI之间的主要区别?

虽然我一直在使用pthreads,OpenMP,intel TBB和一般的线程,但我仍然不明白传递消息的接口实现(如OpenMP)和经典线程库之间的主要区别是什么,我仍然不清楚.

假设为线程池编写所有样板代码在我的情况下不是问题,并且我使用C++,这两种技术的区别归结为......?

我也有兴趣通过网络操作线程,同时将任务分配给所有连接的机器.

现在我也没有考虑OpenMP/OpenMPI支持的平台数量限制,因为我想了解这两个概念是如何工作的.

c++ multithreading tbb task openmp

9
推荐指数
2
解决办法
6138
查看次数

static_cast不按预期工作优先级

#include <iostream>
#include <cstdint>

template<int T> void foo()
{
  std::cout << "a" << std::endl;
}

template<uint8_t T> void foo()
{
  std::cout << "b" << std::endl;
}

int main()
{
  foo<static_cast<uint8_t>(42)> ();
  foo<static_cast<int>(42)>();
  return(0);
}
Run Code Online (Sandbox Code Playgroud)

知道为什么这不能按预期工作吗?

我的gcc 4.8.1抱怨一个模糊的调用,但static_cast不应该"修复"优先级规则,在这种情况下你有两种类型具有相同的优先级吗?

c++ templates overloading ambiguous-call c++11

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

llvm-ld仍然存在于clang 3.4?

上次我检查clang它是在版本3.1/3.2,现在我在Ubuntu 13.04 64位下我从官方apt存储库安装了clang和llvm(以及工具),但是没有任何痕迹llvm-ld-3.4,llvm-ld-3.0并且llvm-ld-3.1是我的机器上只有2个版本的工具,我的问题是:我应该替换llvm-ld并生成库或机器可执行文件?

c c++ linker llvm ld

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

如何将C++位集中的范围子集转换为数字?

我有一个std::bitset和bitset类型也提供了一个to_ulong方法来将bitset转换为数字,我的问题是关于将bitset转换为数字而只考虑该bitset中的一个范围,我需要实现我自己的powerof2函数或者有一些东西采用更标准的方法?

c++ bitset std-bitset

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

如何正确地规范化C++中的浮点值?

也许我不明白的IEEE754标准多,但考虑到一组浮动是点值的floatdouble,例如:

56.543f 3238.124124f 121.3f ...
Run Code Online (Sandbox Code Playgroud)

您可以将其转换为范围为0to的值1,以便通过在考虑集合中的最大值和最小值时采用适当的公因子来对它们进行标准化.

现在,我的观点是,在这个转变,我需要为所设定的目的地的范围从一个更高的精确度0,以1如果比较的精度水平,我需要在第一位的,尤其是在第一盘的值覆盖面广数值范围(真正大而小的值).

如何float或者double(如果你想或IEEE 754标准)类型可以处理这种情况而知道我基本上不会需要一个整数部分的第二组值提供更准确?

或者它根本不处理这个问题我需要一个完全不同类型的定点数学?

c++ floating-point double ieee-754

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

pahole C++ 11支持?

我不知道为什么但是我的副本pahole碰巧不适用于在C++ 11中编译的任何二进制文件,它适用于C++ 03,但不适用于C++ 11:在pahole中有C++ 11支持吗?

输出是这样的

die__process_class: tag not supported (template_type_parameter)!
die__process_unit: DW_TAG_unspecified_type (0x3b) @ <0x1a26> not handled!
pahole: No debugging information found
Run Code Online (Sandbox Code Playgroud)

c++ c++11 pahole

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

在gcc或clang中调试SFINAE

我想知道在给定特定调用的情况下我的模板是如何在编译时扩展的,特别是我有兴趣了解更多关于SFINAE技术的所有可能用途和行为.

你知道一个或多个旗帜gcc和/或clang可以帮助我吗?

c++ gcc templates clang c++11

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

使用 gcc 或 clang 自动生成标头

给定源文件,source.cpp我如何生成适当的标头source.hpp

我在 linux 64 位下,我想避免手动编写标头,以减少我花在编写代码上的时间并限制可能的错误。

c++ gcc g++ clang clang++

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

Objective-C 2.0中的类对象是什么?

在2009年发布的名为Apple 的Objective-C 2.0编程语言的Objective C 2.0的官方文档中,有一个关于类对象的段落在第28页.

我不明白Class Objects是什么,以及如何定义它们除了语言的其余部分以及它们具有什么属性.在同一文档中,它解释了Objective-C 2.0中的所有内容都是一个对象,该对象基本上是指向struct包含isa字段的指针,指针本身是类型id.由此我推断:

  • Obj-C 2.0中的继承主要包括struct通过idisa字段 链接那些
    • 超类对象以isa指向nil对象的方式构造字段.
  • id 是Objective C 2.0中几乎所有内容的有效数据类型
  • 在定义类时,定义类本身的所有内容(方法和变量)都是从isa指针之后/下方开始打包的

假设我得到了Objective C 2.0的工作原理,什么是类对象,它与实例的创建方式有何不同?类对象提供的实例没有什么类型的属性?你可以与C或C++并行吗?

objective-c

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