- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须多次提高 10 的两倍。
有没有比使用数学库 pow(10,double)
更有效的方法?如果重要的话,我的 double 总是在 -5 到 -11 之间为负数。
我假设 pow(double,double) 使用比 pow(10,double) 所需的更通用的算法,因此可能不是最快的方法。鉴于下面的一些答案,这可能是一个不正确的假设。
至于为什么,是对数插值。我有一个 x 和 y 值的表。我的对象有一个已知的 x 值(几乎总是一个 double 值)。
double Dbeta(struct Data *diffusion, double per){
double frac;
while(per>diffusion->x[i]){
i++;
}
frac = (per-diffusion->x[i-1])/(diffusion->x[i]-diffusion->x[i-1]);
return pow(10,log10DB[i-1] + frac * (log10DB[i]-log10DB[i-1]));
}
这个函数被调用了很多次。我被告知要研究分析,所以这是我首先要做的。
刚刚有人告诉我,我可以使用自然对数而不是以 10 为底,这显然是正确的。 (我的愚蠢有时连我自己都感到惊讶。)
用自然对数替换所有内容后,一切都运行得更快了。通过 profiling(这是我今天学到的一个新词),我发现我 39% 的代码都花在了 exp 函数中,所以对于那些想知道这是否真的是我的代码瓶颈的部分的人来说,确实是这样。
最佳答案
对于 pow(10.0, n)
设置 c = log(10.0)
应该更快,你可以计算一次,然后使用 exp( c*n)
,它应该比 pow(10.0, n)
快得多(它基本上在内部做同样的事情,除了它会计算 log(10.0)
一遍又一遍,而不是一次)。除此之外,您可能无能为力。
关于c - 高效 10 次幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64477054/
我根据维基百科页面上指定的基本算法在 Haskell 中实现了二次筛。它适用于大多数整数,但它无法找到 n 次幂的数字 N 的因式分解。对于偶数次幂(平方),算法循环,对于奇数次幂,我找到了几个平方模
我必须多次提高 10 的两倍。 有没有比使用数学库 pow(10,double) 更有效的方法?如果重要的话,我的 double 总是在 -5 到 -11 之间为负数。 我假设 pow(double,
我想写一个函数来返回 2 的下一个幂。因此,如果输入是 18,它将返回 32,这是系列 2、4、8、16、32、64 中下一个大于 18 的数字 如果输入是 40,它将返回 64。 目前我正在使用以下
环境 Ubuntu 17.04,Chrome 60。 在没有警告/错误的情况下在本地运行此示例:https://github.com/mdn/webgl-examples/tree/gh-pages/
我有一个这样的数字序列: 1.687155E21 3.981457E19 0.5532155E21 3.018843E21 2.0532155E21 4.5532155E21 3.1637913E19
谁能告诉我一种方法来找到获得已知值所需的 2 的幂。例如,假设我需要找到 32 的 2 的幂。换句话说,如果我知道某个值,如何找到给出该值的 2 的幂。 if the given value is 6
我有两个值,一个是 X 的基数,一个是 N 的幂,如何才能得到 X 的 N 次幂 ans。 任何代码将不胜感激。 最佳答案 你正在寻找这个: https://api.dartlang.org/stab
我很难找到解决这个问题的方法。我正在尝试用Java开发一个程序,该程序将一个数字作为输入并打印每个数字的幂总和,使得第n位数字的幂是第(n-1)位数字。然而,对于第一位数字,功率应该是最后一位数字的功
我已经做到了这一点,但我不知道如何进一步进行 #include int main() { int x,n,m,i; printf("Enter the value of x: "); scanf("%
如果我有一个介于 100 和 1000 之间的数字,我想得到值 3,因为 10^3 = 1000。同样,如果我有一个介于 10 和 100 之间的数字,我想得到值 2,因为 10^2是 100。 如果
我必须编写一个程序来计算 2 的 2010 次方 的次方并求出数字的总和。例如: if `2 power 12 => gives 4096 . So 4+0+9+6 = 19 . 现在我需要为 2 p
我在最近的比赛中遇到了一个问题。 我无法找到解决方案,并且还没有针对该问题的社论。 Question Link 我在这里引用问题陈述也是为了以防链接不起作用。 找出大于或等于 A 且小于或等于 B (
我找不到用于计算 2^n 的 SSE 指令对于 vector __m128i 32 位整数。 是否有执行以下伪代码的指令或函数? __m128i power_of_two(__m128i b) {
n 的 n 次方(即 n^n)是多项式吗? T(n) = 2T(n/2) + n^n 可以用master方法求解吗? 最佳答案 它不仅不是多项式,而且比阶乘还差。 O(n^n) 支配 O(n!)。同样
我是一名优秀的程序员,十分优秀!