在GMP库中是否有任何对数函数实现?是否有任何GMP对数函数?
7
A
回答
3
否GMP中没有这样的功能。 只限于MPFR。
5
我知道你没有问如何实现它,但是......
可以实现使用对数的性质粗野:http://gnumbers.blogspot.com.au/2011/10/logarithm-of-large-number-it-is-not.html
而且GMP库的内部:https://gmplib.org/manual/Integer-Internals.html
这是我对Rational的实现。
double LogE(mpq_t m_op)
{
// log(a/b) = log(a) - log(b)
// And if a is represented in base B as:
// a = a_N B^N + a_{N-1} B^{N-1} + ... + a_0
// => log(a) \approx log(a_N B^N)
// = log(a_N) + N log(B)
// where B is the base; ie: ULONG_MAX
static double logB = log(ULONG_MAX);
// Undefined logs (should probably return NAN in second case?)
if (mpz_get_ui(mpq_numref(m_op)) == 0 || mpz_sgn(mpq_numref(m_op)) < 0)
return -INFINITY;
// Log of numerator
double lognum = log(mpq_numref(m_op)->_mp_d[abs(mpq_numref(m_op)->_mp_size) - 1]);
lognum += (abs(mpq_numref(m_op)->_mp_size)-1) * logB;
// Subtract log of denominator, if it exists
if (abs(mpq_denref(m_op)->_mp_size) > 0)
{
lognum -= log(mpq_denref(m_op)->_mp_d[abs(mpq_denref(m_op)->_mp_size)-1]);
lognum -= (abs(mpq_denref(m_op)->_mp_size)-1) * logB;
}
return lognum;
}
1
这就是: https://github.com/linas/anant
提供GNU MP真实和复杂的对数,指数,正弦,余弦,γ,反正切,开方,多重对数函数黎曼和赫维茨泽塔,超几何,拓扑学正弦和更多。
相关问题
- 1. Gmp mpf_pow_ui函数
- 2. GMP库函数
- 3. 是否有任何理由Object.freeze函数?
- 4. 是否有任何函数对象在STL中创建对象?
- 5. C++ -GMP pow()函数
- 6. 在MFC中调用OnInitDialog函数后是否有任何函数?
- 7. 是否有任何XOR位缩减操作数或函数?
- 8. 是否有任何度数的弧度函数?
- 9. + =用于GMP浮点函数?
- 10. 是否有任何具有相同哈希函数的算法?
- 11. 对于任意精度,GMP是否有一个通用的替代方案?
- 12. 函数中是否可以有函数?
- 13. 是否有任何理由不使用INLINABLE pragma作为函数?
- 14. “CONTAINS”是否有任何MySQL聚合函数?
- 15. 他们是否有任何方式来调用内部函数
- 16. 是否有任何函数将None转换为空字符串?
- 17. jQuery中是否有任何字符串格式化函数?
- 18. python中是否有任何strncpy()等价函数?
- 19. 是否有任何“Pos”函数来查找字节?
- 20. C++中是否有任何部分拷贝构造函数?
- 21. 是否有任何替代jQuery .after()函数
- 22. greenplum中是否有任何函数可用于生成UUID
- 23. C中是否有任何库函数来检查Internet连接?
- 24. python中是否有任何列匹配或行匹配函数?
- 25. 是否有任何标准的C函数bitswapping?
- 26. ruby on rails框架中是否有任何核心函数find_by_controller?
- 27. 使用许多静态函数是否有任何副作用?
- 28. 是否有任何本机DLL导出函数查看器?
- 29. 检测是否有任何JavaScript函数正在运行
- 30. 是否有任何像JavaScript中的getimagesize()php函数?