为了账号安全,请及时绑定邮箱和手机立即绑定

log10使用什么算法实现?

log10使用什么算法实现?

holdtom 2019-04-07 09:38:07
在项目中要使用到log10计算,可所用系统的标准库里并没有移植该功能,需要自己实现。请问,采用什么算法实现该功能?在网上找了一个例子,但不确定能否在嵌入式的一些平台使用。doublemy_log10(doublex){registerdoubleret;__asm__("fldlg2\n\t""fxch\n\t""fyl2x":"=t"(ret):"0"(x));returnret;}也查看了glibc的源码,可调用了其它的一些API,对库的依赖比较大,逐步移植的话比较麻烦。代码如下:double__log10(doublex){if(__builtin_expect(islessequal(x,0.0),0)&&_LIB_VERSION!=_IEEE_){if(x==0.0){feraiseexcept(FE_DIVBYZERO);return__kernel_standard(x,x,18);/*log10(0)*/}else{feraiseexcept(FE_INVALID);return__kernel_standard(x,x,19);/*log10(x
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

泰勒级数展开,学过微积分应该都知道。如果条件比较宽的话,基本上是万能的。
由于泰勒展开在离原点比较远的地方可能不准,可以试试只要实现1~10就可以了,别的数先用1~10算再加个整数。
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 721 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信