方形/立方根查找表
Square/cubic root lookup table
我想知道哪种方法是为范围 [0.0, 1.0)
中浮点值的平方根和立方根创建两个查找表的最佳方法。
我已经分析了代码,并看到这是一个非常强大的性能瓶颈(因为我需要为每个值的零点几千个值计算它们)。然后我想起了查找表,并认为它们可以帮助我提高性能。
由于我的值在一个小范围内,我正在考虑用步骤拆分范围,比如说,0.0025
(希望足够),但我不确定哪种应该是最有效的检索方法。
我可以轻松填充查找表,但我需要一种方法来有效地获取给定浮点数的正确值(在任何步骤上都没有离散化)。对这个问题有什么建议或众所周知的方法吗?
我正在使用一个移动平台,只是为了指定。
提前致谢
你有 (1.0-0.0)/0.0025 = 400 步
只需创建一个 400x1 矩阵,并通过将您希望正方形/立方体的浮点数乘以 400 来访问它。
例如,如果您想查找 0.0075 的平方。将 0.0075 乘以 400 得到 3,这是您在矩阵中的索引
double table_sqrt(double v)
{
return table[(unsigned int)(v / 0.0025)];
}
您可以将值乘以所需的任何精度,然后使用哈希表,因为结果将是整数值。
例如,与其对 0.002
之类的东西使用浮点键值,不如给自己一个小数点后三位或四位的精度,使0.002
的键值等于 200
或 2000
。 然后,您可以快速查找存储在2000
槽的哈希表键中的平方根和立方根的结果浮点值。
如果您还想从插槽之间的非谨慎范围中获取值,则可以使用数组或树而不是哈希表,以便通过在存储在两个相邻键值插槽的根之间进行插值来生成"中间"值。
如果您只需要拆分为 10 个不同的条带,请找到对应于条带之间阈值的输入,并使用展开的二进制搜索来测试这 9 个值。 或者在完成阈值测试之前是否需要额外的计算,以便查找的值不是最终结果。
- 正在查找文档以获得PS4平台的C++中的设备信息
- 在C++中查找文件
- 模板元程序查找相似的连续类型名称
- 在UNIX系统中使用DIR查找文件的字节大小
- 查找最接近的大于当前数字的数字的索引
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 查找后更改类变量
- 使用正则表达式regex_search在字符串中查找字符串
- 使用gcc从静态链接的文件中查找可选符号
- 在C++中查找范围的长度
- 算法问题:查找从堆栈中弹出的所有序列
- 在Windows中查找扬声器输出的当前音量级别
- 如何在C++中使用X509证书模在令牌中查找私钥
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在 for 循环中查找问题时遇到困难
- 如何在文件中查找字节序列
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 使用堆查找第K个最大元素的时间复杂性
- 方形/立方根查找表