最近因为某一些原因,需要要求高速计算一下常用对数的值。但是自然对数的快速算法和常用对数的快速算法都没想到......只得去找那个以2为底的对数值的快速运算方法了,由于精度要求不高(大约0.1即可),固可以尝试这种方案。

因为直接把float数据按照整数来读取,得到的值大约是满足这个式子:

其中σ是一个无限小的数据,经过推导值大约是0.0450466,但是这个只是理论。实际却并非如此,我尝试出来的这个值大约是0.0719附近。

#define POW223    8388608.0             // 2^23
double __log2(float x)
{long *a;double o;a = (long*)&x;                      // 强制的位转换o = (double)*a;// ???实际证明那个0.04几的值误差非常大....o = o / POW223 - 126.928071372;return o;
}

我测试了[1, 2000]上的所有正整数,其值误差都在0.1以内:

int main()
{int i;for (i = 1; i <= 2000; i++){double diff;diff = log2(i) - __log2(i);printf("%.10lf\n", diff);}return 0;
}

选出几个作为对照如下表。其中最右边的是上面函数的输出值,中间是参考的标准值。

数据 参考值 函数运算结果
1155.0f 10.1736774445 10.1998583155
4.0f 2.0000000000 2.0719286280
0.05f -4.3219280243 -4.3280713482

可以看到,数据在较小的值时,该算法会更精确。对(0, 1]范围内,以0.01为步长进行测试,该算法的误差平方和的均值大约为0.000934。因而该算法具有一定的实用性,可进行小范围的对数运算。

第一次写博客呢!不足的地方希望大家多多谅解,更希望稍花几秒,指出错误。

一个简单的log2(x)的快速计算方法相关推荐

  1. 使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)

    最近也是临近期末了,各种的期末大作业,后台管理也是很多地方需要用到的,为了方便大家能快速上手,快速搭建一个简单的后台管理,我花了两天时间整理了一下 我会从0开始介绍,从数据库的设计到前端页面的引入最后 ...

  2. Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...

  3. python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统

    原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...

  4. python小项目案例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  5. fastslam matlab,fastslam 快速定位和构图的源码,一个简单的例子,3D建模,可以用作学习智能机器人自主移动 matlab 272万源代码下载- www.pudn.com...

    文件名称: fastslam下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 31 KB 上传时间: 2015-03-19 下载次数: 22 详细说明:快速定 ...

  6. python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  7. 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2

    本文在Ubuntu18.04运行,fabric版本为2.3.0.本文篇幅较长,因此分为两篇.快速运行一个简单的Fabric网络1详见:link 目录 3. Orderer节点的启动 4. Peer节点 ...

  8. 流媒体视频服务:快速搭建一个简单的流媒体视频服务(一)

    快速搭建一个简单的流媒体视频服务 前言 系统组成 RTMP协议简介 Red5 概述 Red5 服务器搭建 前言 最近自己在研究有关于流媒体播放的技术,网上资料甚少.出于开源精神以及在查阅资料得到各位大 ...

  9. 3.2 实战项目二(手工分析错误、错误标签及其修正、快速地构建一个简单的系统(快速原型模型)、训练集与验证集-来源不一致的情况(异源问题)、迁移学习、多任务学习、端到端学习)

    手工分析错误 手工分析错误的大多数是什么 猫猫识别,准确率90%,想提升,就继续猛加材料,猛调优?     --应该先做错误分析,再调优! 把识别出错的100张拿出来, 如果发现50%是"把 ...

  10. 一个简单的MATLAB脚本——快速行进算法(FMM))

    一个简单的MATLAB脚本--快速行进算法(FMM) 介绍快速行进算法(FMM)的简单MATLAB脚本,不到20行代码实现快速行进算法的运算结果,而且计算速度非常快.给了两个实例模型来说明计算结果. ...

最新文章

  1. 看清头秃元凶,腾讯AI首度揭示真相
  2. 在Leangoo中,如何快速切换项目内看板?
  3. zimbra邮件服务器配置,Zimbra邮件服务器无需登录任意邮箱伪造漏洞修复
  4. 20个优秀的JavaScript 键盘事件处理库
  5. scala函数的定义语法说明
  6. vue 组件库发布_如何创建和发布Vue组件库
  7. Java基础学习需要掌握哪些内容?
  8. 恐龙快跑小程序对接流量主源码+前端 v5.0.4 全开源微擎框架
  9. Spcok简约图片分享网站Typecho主题
  10. 最后一战 源代码_我们的故事 | 一枚“铁渣”的一战成名
  11. 删除StringBuilder的最后一个字符?
  12. VB2010(3)整型运算
  13. 弱电系统集成服务器,智能化弱电系统集成(BMS系统集成工程)设计方案
  14. linux上2048游戏程序,在Linux系统下完全可以玩2048游戏
  15. vue 路由跳转 外部链接
  16. Spectral Algorithm
  17. CentOS下安装cups实现局域网共享HP1020打印机
  18. 联想国产自主计算机,实现零的突破,第一款纯国产电脑诞生,网友:此刻联想怎么想?...
  19. 《脱颖而出——成功网店经营之道》一2.6 连横:返利模式的应用及分销
  20. gcc之 -ffunction-sections

热门文章

  1. 计算机桌面文件删除不掉是怎么了,文件删不掉怎么办?如何删除一个删不掉的文件?...
  2. 笔记-使用AntDesignVue的Modal组件
  3. 【计算机图形学】几何
  4. windows10无法访问共享计算机,win10共享无法访问,windows无法访问共享文件
  5. 第九周 项目一--猴子选大王(数组版)
  6. 我的数据库是半瓶子水的水平
  7. 网络抓取ts文件转mp4_TS格式的视频文件怎么转换成mp4文件。
  8. 《C++ API设计》摘录
  9. 用户画像的定义及构建方法
  10. cad lisp 背景遮罩_单行文字转多行文字带背景遮罩