gpt4 book ai didi

c++ - 是否有一个函数可以检索范围内可用的不同值的数量?

转载 作者:太空狗 更新时间:2023-10-29 20:34:39 26 4
gpt4 key购买 nike

我正在制作的应用程序中使用 double 浮点变量。

我标准化了一些值范围。从(例如;我有很多范围)-48.048.00.01.0,使用这个简单的功能:

double ToNormalizedParam(double nonNormalizedValue, double min, double max, double shape) {
return pow((nonNormalizedValue - min) / (max - min), 1.0 / shape);
}

我想知道从一个范围映射到另一个范围的可用值和不同值的区别。

C++ 有现成的函数吗?我查看了 numeric_limits,但找不到任何有用的信息。

最佳答案

Is there a ready-to-go function in C++?

也许吧。如果不是,很容易形成一个函数来为每个 double 分配一个序列号。值(value)。

假设为字节序和大小匹配 FP/整数和典型的 FP 布局,如 double64 , 以下有效 -INFINF .

// Return a sequence number for each `double` value.
// Numerically sequential `double` values will have successive (+1) sequence numbers.
uint64_t double_sequence(double x) {
uint64_t u64;
memcpy(&u64, &x, sizeof u64);
if (u64 & 0x8000000000000000) {
u64 ^= 0x8000000000000000;
return 0x8000000000000000 - u64;
}
return u64 + 0x8000000000000000;
}

Is there a function to retrieve the number of available distinct values within a range?

简单地减去序列号。 +1 或 -1 取决于是否 open or closed range .

double_sequence(1.0)  - double_sequence(0.0)   + 1 --> 0x3ff0000000000001
double_sequence(48.0) - double_sequence(-48.0) + 1 --> 0x8090000000000001

注意事项:
请记住,FP 整体呈对数分布,并且在 2 的幂内呈线性。
对于大约一半的 FP,|x| < 1.0 .
0.5 到 1.0 之间的 FP 数与 16.0 到 32.0 之间的一样多。
double 的数量是原来的两倍多在[-48.0 ... 48.0][0.0 ... 1.0]范围,主要是由于负值。

关于c++ - 是否有一个函数可以检索范围内可用的不同值的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com