在学习 大数n!算法时, 想到log2(x)怎么算?

math.h中没有log2接口, 只有log和log10.

上网查了下, 原来用对数换底公式可以搞定这事^_^

// @file power_exp_log.cpp
// @brief 计算以2为底的log#include <iostream>                 // for i/o functions
#include <math.h>                   // for exp(), log(), and log10()
#include <conio.h>using namespace std;#define CONST_E 2.718282 ///< 常数e的值约为2.718282/// math.h中没有log2的函数
double log2(double dblpow2);void fnTest_power_exp_log_2(); ///< 用对数换底公式做
void fnTest_power_exp_log_E();
void fnTest_power_exp_log_10();int main(int argc, char* argv[])
{fnTest_power_exp_log_2();// fnTest_power_exp_log_E();// fnTest_power_exp_log_10();printf("END, press any key to quit\n");_getch();return 0;
}double log2(double dblpow2)
{/**math.h中没有log2的接口用对数换底公式来间接计算对数换底公式Loga(B) = logc(B) / logc(A)a, c均大于0且不等于1math.h中有log和log10logc 可以用log或1og10*/double dbllog2 = 0;dbllog2 = log(dblpow2) / log(2);return dbllog2;
}void fnTest_power_exp_log_2()
{double dblIndex = 0;double dblpow = 0;double dbllog = 0;for (dblIndex = 0; dblIndex <= 10; dblIndex++){dblpow = pow(2, dblIndex);printf("pow(2, %f) = %f\n", dblIndex, dblpow);dbllog = log2(dblpow);printf("log2(%f) = %f\n", dblpow, dbllog);printf("\r\n");}/** run resultpow(2, 0.000000) = 1.000000log2(1.000000) = 0.000000pow(2, 1.000000) = 2.000000log2(2.000000) = 1.000000pow(2, 2.000000) = 4.000000log2(4.000000) = 2.000000pow(2, 3.000000) = 8.000000log2(8.000000) = 3.000000pow(2, 4.000000) = 16.000000log2(16.000000) = 4.000000pow(2, 5.000000) = 32.000000log2(32.000000) = 5.000000pow(2, 6.000000) = 64.000000log2(64.000000) = 6.000000pow(2, 7.000000) = 128.000000log2(128.000000) = 7.000000pow(2, 8.000000) = 256.000000log2(256.000000) = 8.000000pow(2, 9.000000) = 512.000000log2(512.000000) = 9.000000pow(2, 10.000000) = 1024.000000log2(1024.000000) = 10.000000*/
}void fnTest_power_exp_log_10()
{double dblIndex = 0;double dblpow = 0;double dbllog = 0;for (dblIndex = 0; dblIndex <= 10; dblIndex++){dblpow = pow(10, dblIndex);printf("pow(10, %f) = %f\n", dblIndex, dblpow);dbllog = log10(dblpow);printf("log10(%f) = %f\n", dblpow, dbllog);printf("\r\n");}/** run resultpow(10, 0.000000) = 1.000000log10(1.000000) = 0.000000pow(10, 1.000000) = 10.000000log10(10.000000) = 1.000000pow(10, 2.000000) = 100.000000log10(100.000000) = 2.000000pow(10, 3.000000) = 1000.000000log10(1000.000000) = 3.000000pow(10, 4.000000) = 10000.000000log10(10000.000000) = 4.000000pow(10, 5.000000) = 100000.000000log10(100000.000000) = 5.000000pow(10, 6.000000) = 1000000.000000log10(1000000.000000) = 6.000000pow(10, 7.000000) = 10000000.000000log10(10000000.000000) = 7.000000pow(10, 8.000000) = 100000000.000000log10(100000000.000000) = 8.000000pow(10, 9.000000) = 1000000000.000000log10(1000000000.000000) = 9.000000pow(10, 10.000000) = 10000000000.000000log10(10000000000.000000) = 10.000000*/
}void fnTest_power_exp_log_E()
{double dblIndex = 0;double dblexp = 0;double dblpow = 0;double dbllog = 0;for (dblIndex = 0; dblIndex <= 10; dblIndex++){dblpow = pow(CONST_E, dblIndex);printf("pow(CONST_E, %f) = %f\n", dblIndex, dblpow);dblexp = exp(dblIndex);printf("exp(%f) = %f\n", dblIndex, dblexp);dbllog = log(dblexp);printf("log(%f) = %f\n", dblexp, dbllog);printf("\r\n");}/** run resultpow(CONST_E, 0.000000) = 1.000000exp(0.000000) = 1.000000log(1.000000) = 0.000000pow(CONST_E, 1.000000) = 2.718282exp(1.000000) = 2.718282log(2.718282) = 1.000000pow(CONST_E, 2.000000) = 7.389057exp(2.000000) = 7.389056log(7.389056) = 2.000000pow(CONST_E, 3.000000) = 20.085541exp(3.000000) = 20.085537log(20.085537) = 3.000000pow(CONST_E, 4.000000) = 54.598164exp(4.000000) = 54.598150log(54.598150) = 4.000000pow(CONST_E, 5.000000) = 148.413206exp(5.000000) = 148.413159log(148.413159) = 5.000000pow(CONST_E, 6.000000) = 403.428946exp(6.000000) = 403.428793log(403.428793) = 6.000000pow(CONST_E, 7.000000) = 1096.633643exp(7.000000) = 1096.633158log(1096.633158) = 7.000000pow(CONST_E, 8.000000) = 2980.959492exp(8.000000) = 2980.957987log(2980.957987) = 8.000000pow(CONST_E, 9.000000) = 8103.088530exp(9.000000) = 8103.083928log(8103.083928) = 9.000000pow(CONST_E, 10.000000) = 22026.479695exp(10.000000) = 22026.465795log(22026.465795) = 10.000000*/
}

计算以2为底的log相关推荐

  1. 崩坏3卡池模拟器及毕业期望概率计算(含保底)

    目录 崩坏3卡池模拟器及毕业期望概率计算(含保底) 简介 程序演示 得出的一些有趣结果 readme code 崩坏3卡池模拟器及毕业期望概率计算(含保底) 简介 最近学概率论要求写论文,没什么好写的 ...

  2. C语言exp()函数,计算以e为底的x次方的值

    exp()用来计算以e 为底的x 次方值,即ex 值,然后将结果返回.其原型为: double exp(double x);[返回值]返回 e 的x 次方计算结果. Description 写一函数求 ...

  3. C++编程(不使用对数函数)可用下列公式计算以2为底的对数

    C++编程(不使用对数函数)可用下列公式计算以2为底的对数 #include<iostream> #include<vector> using namespace std; d ...

  4. java计算自然数对数_JavaScript用Math.log()计算一个数的自然对数

    1. 基本概念 Math.log()方法用于求一个数的自然对数,自然对数就是以自然常数e为底的对数,在数学上常简单表示为ln(x).它的语法形式如下所示: Math.log(x); 参数x就是要计算它 ...

  5. 在c语言中log函数的作用,C++_在C语言中使用对数函数的方法,C语言log()函数:返回以e为底的 - phpStudy...

    在C语言中使用对数函数的方法 C语言log()函数:返回以e为底的对数值头文件: #include log() 函数返回以 e 为底的对数值,其原型为: double log (double x); ...

  6. java如何算log_用java代码计算Log(a)b

    1 java标准包提供了自然对数的计算方法,2 其他的对数计算可以转换为自然对数的计算. Sun的J2SE提供了一个计算自然对数方法--double java.lang.Math.log(double ...

  7. java计算10年复利_Java 量化回撤幅度 求复利次数 求任意底的对数

    比如 399106 2014年10月9日 上涨幅度35%,从4月28日算起 复利后的净值1.35 ATR60 = 1.249%(百分比) log 1.35 = 0.300104592450338080 ...

  8. log函数 oracle power_Excel之数学函数SQRT/MOD/EXP/LN/RAND

    本部分主要包括ABS函数.SQRT函数.SIGN函数.MOD函数.POWER.EXP函数.LN函数.LOG函数.LOG10函数.RAND函数.RANDBETWEEN函数.PI函数.SIN函数.COS函 ...

  9. 计算ex值 c语言编译,C语言常用的数学符号.doc

    C语言常用的数学符号.doc *---C语言常用的数学符号---------------------------*/ abs(计算整型数的绝对值) 相关函数 labs, fabs 表头文件 #incl ...

最新文章

  1. 如何处理SQL Server事务复制中的大事务操作
  2. LAMP部署搭建————重要文件备份
  3. vb调用vc dll
  4. 中国靶材行业投资价值与发展机遇研究报告2022版
  5. mysql select db 废弃_php 项目放服务器显示mysql_connect 已经废弃 ?
  6. 叮!您有一份来自平安人寿的真AI情书
  7. 机器学习笔记(九)——决策树的生成与剪枝
  8. python实现dos攻击_dos攻击原理及攻击实例
  9. mysql 查询默认编码_查看及修改MYSQL默认编码
  10. 敏捷结果30天练习即将开始
  11. Spark集群试运行
  12. HDU 2076 夹角有多大(题目已修改,注意读题)
  13. HTML5的WebGL实现的3D和2D拓扑树
  14. 用gambit学博弈论---零和博弈
  15. 推荐C语言编译器(手机APP)
  16. Redis学习篇2_Redis入门基础
  17. html5 paint,html5实现仿windows画图工具的画图工具jspaint
  18. 单元测试测试用例覆盖率为0
  19. php 输出七芒星,SongNet:硬格式控制下的文本生成
  20. 天猫精灵技能开发从创建到发布

热门文章

  1. Android Binder 之 ServiceManager (基于android 12.0/S)
  2. 币小秘:如何才能减少被套,降低风险!
  3. 电源管理芯片LDO(Low Dropout Regulator)分析1
  4. OSChina 娱乐弹弹弹——程序猿的酒文化
  5. 萨班斯-奥克斯利法案 (SOX) 特权账号管理
  6. 网页期末作业 基于HTML+CSS中国传统节日【清明节】带论文8000字
  7. 把精力专注在“一件事”上的林曦老师,太容易让人着迷了!
  8. python模块安装包_制作python模块安装包[转载自刘天斯]
  9. 有服务器还需要网站空间吗,有服务器还需要空间吗
  10. 翟佳:优秀的开源项目应该被更多人看见,我很荣幸可以参与其中