标签: absolute-value

与我的abs()相比,C++ math.h abs()有什么不同

我目前正在用C++编写一些类似矢量数学类的glsl,我刚刚实现了abs()这样的函数:

template<class T>
static inline T abs(T _a)
{
    return _a < 0 ? -_a : _a;
}
Run Code Online (Sandbox Code Playgroud)

我将它的速度与默认的C++进行了比较abs,math.h如下所示:

clock_t begin = clock();
for(int i=0; i<10000000; ++i)
{
    float a = abs(-1.25);
};

clock_t end = clock();
unsigned long time1 = (unsigned long)((float)(end-begin) / ((float)CLOCKS_PER_SEC/1000.0));

begin = clock();
for(int i=0; i<10000000; ++i)
{
    float a  = myMath::abs(-1.25);
};
end = clock();
unsigned long time2 = (unsigned long)((float)(end-begin) / ((float)CLOCKS_PER_SEC/1000.0));

std::cout<<time1<<std::endl;
std::cout<<time2<<std::endl;
Run Code Online (Sandbox Code Playgroud)

现在默认的abs需要大约25ms而我的需要60.我猜有一些低级优化正在进行中.有人知道math.h abs …

c++ math performance function absolute-value

15
推荐指数
4
解决办法
2万
查看次数

使用SSE计算绝对值的最快方法

我知道3种方法,但据我所知,通常只使用前2种方法:

  1. 使用andps或屏蔽符号位andnotps.

    • 优点:一个快速指令,如果掩码已经在寄存器中,这使得它非常适合在循环中多次执行此操作.
    • 缺点:掩码可能不在寄存器中或更糟糕,甚至不在缓存中,导致非常长的内存提取.
  2. 将值从零减去否定,然后得到原始的最大值并否定.

    • 优点:固定成本,因为无需取物,就像面具一样.
    • 缺点:如果条件理想,将始终比掩码方法慢,并且我们必须等待subps完成才能使用该maxps指令.
  3. 与选项2类似,将原始值从零减去否定,但随后使用原始值"按位"和"按位" andps.我运行了一个测试,将其与方法2进行比较,除了处理NaNs 之外,它似乎与方法2的行为相同,在这种情况下,结果将NaN与方法2的结果不同.

    • 优点:应该比方法2略快,因为andps通常比速度快maxps.
    • 缺点:当NaN涉及到s 时,这是否会导致任何意外行为?也许不是,因为a NaN仍然是a NaN,即使它是一个不同的值NaN,对吧?

欢迎提出想法和意见.

x86 sse simd vectorization absolute-value

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

mongodb - 查找具有最接近整数值的文档

假设我有一个带有比率属性为浮点数的文档的集合.

{'ratio':1.437}
Run Code Online (Sandbox Code Playgroud)

如何编写查询以查找具有与给定整数最接近的值的单个文档,而不使用驱动程序将它们全部加载到内存中并找到具有最小值的abs(x-ratio)

absolute-value mongodb

13
推荐指数
2
解决办法
6135
查看次数

jfreechart自定义饼图以显示绝对值和百分比

这个可编辑的最小代码片段示例如何使用JFreeChart作为绘图API,以便显示 absoulte值和百分比?我无法从互联网上的任何代码段或JFreechart手册本身中提取此信息.代码段生成一个仅显示百分比的饼图.在我的情况下绝对值也很重要,所以我需要在百分比下显示它们.

这是代码:( 注意它没有导入)

public class MyMinimalPieChartExample {
    public static void main(String[] args) {
    DefaultPieDataset dataset = new DefaultPieDataset();
    dataset.setValue("some data 1",99);
    dataset.setValue("some data 2", 77);

    //third adaption
    JFreeChart someChart = ChartFactory.createPieChart(
            "some chart header", dataset,
            true, true, false);
    PiePlot illegalLegalRestPiePlot4 = (PiePlot) someChart.getPlot();
    illegalLegalRestPiePlot4.setSectionPaint("some data 1", new Color(0, 255, 0));
    illegalLegalRestPiePlot4.setSectionPaint("some data 2",
            new Color(255, 0, 0));
    PiePlot plot4 = (PiePlot) someChart.getPlot();
    plot4.setExplodePercent("some data 1", 0.4);
    plot4.setSimpleLabels(true);

    PieSectionLabelGenerator generator = new StandardPieSectionLabelGenerator(
            "{0} = {2}", new DecimalFormat("0"), new …
Run Code Online (Sandbox Code Playgroud)

java jfreechart percentage absolute-value pie-chart

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

包含math.h后的abs'隐式声明...'错误

我使用了这个abs()函数,我#include <math.h>在代码顶部添加了.但我一直收到这个错误:

hello.c:20:11: warning: implicit declaration of function 'abs' is invalid in C99
[-Wimplicit-function-declaration]
      int a = abs(arrOfHour[i] - hour) * 60 + minute;
              ^
Run Code Online (Sandbox Code Playgroud)

我正在使用LLVM编译器.

为什么即使我已经包含了这个错误math.h

c math.h absolute-value

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

在python中对列表进行排序

我有这个清单

[1,-5,10,6,3,-4,-9]
Run Code Online (Sandbox Code Playgroud)

但现在我希望列表按如下方式排序:

[10,-9,6,-5,-4,3,1]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,无论每个号码有什么标志,我都要从高到低订购,但保持标志,是否清楚?

python sorting list absolute-value

10
推荐指数
2
解决办法
8580
查看次数

寻找子阵列的最小绝对和

有一个A包含(正和负)整数的数组.找到一个(连续的)子数组,其元素的绝对和是最小的,例如:

A = [2, -4, 6, -3, 9]
|(?4) + 6 + (?3)| = 1 <- minimal absolute sum
Run Code Online (Sandbox Code Playgroud)

我已经通过实施蛮力算法,这是开始O(N^2)还是O(N^3),虽然它产生正确的结果.但任务规定:

complexity:
- expected worst-case time complexity is O(N*log(N))
- expected worst-case space complexity is O(N)
Run Code Online (Sandbox Code Playgroud)

经过一番搜索,我认为也许可以修改Kadane的算法以适应这个问题,但我没有做到.

我的问题是 - 卡丹的算法是正确的方法吗?如果没有,你能指出我正确的方向(或命名一个可以帮助我的算法)?我不想要现成的代码,我只需要帮助找到合适的算法.

algorithm sum dynamic-programming absolute-value kadanes-algorithm

10
推荐指数
3
解决办法
8664
查看次数

核心OCaml中浮点数的绝对值

我需要OCaml中浮点数的绝对值函数,核心语言似乎没有,所以我写了以下内容:

let absF (f:float) = if f > 0.0 then f else (f *. -1.0);;
Run Code Online (Sandbox Code Playgroud)

这似乎是积极的,但不是负面的,引用:

此表达式的类型为float - > float,但此处与int类型一起使用

我的逻辑错误是什么?

floating-point ocaml absolute-value

9
推荐指数
3
解决办法
3481
查看次数

vb.net中的绝对值

你如何获得vb.net中数字的绝对值?

有内置的功能吗?我知道我可以自己编写一个函数,但我想先知道是否已有一个函数.看起来很简单,我可能会用三行来制作它,所以如果没有一行我会感到惊讶....

谢谢!

.net vb.net absolute-value

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

如何在x86上实现fabs(double)?这是一项昂贵的操作吗?

高级编程语言通常提供确定浮点值的绝对值的函数.例如,在C标准库中,有fabs(double)函数.

如何为x86目标实际实现此库函数?当我调用这样的高级函数时,"引擎盖下"会发生什么?

这是一个昂贵的操作(乘法和取平方根的组合)?或者只是通过删除内存中的负号来找到结果?

floating-point x86 absolute-value

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