一个简单的log2(x)的快速计算方法
最近因为某一些原因,需要要求高速计算一下常用对数的值。但是自然对数的快速算法和常用对数的快速算法都没想到......只得去找那个以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)的快速计算方法相关推荐
- 使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)
最近也是临近期末了,各种的期末大作业,后台管理也是很多地方需要用到的,为了方便大家能快速上手,快速搭建一个简单的后台管理,我花了两天时间整理了一下 我会从0开始介绍,从数据库的设计到前端页面的引入最后 ...
- Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏
Unity 2D游戏开发快速入门第1章创建一个简单的2D游戏 即使是现在,很多初学游戏开发的同学,在谈到Unity的时候,依然会认为Unity只能用于制作3D游戏的.实际上,Unity在2013年发布 ...
- python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统
原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...
- python小项目案例-Python小项目:快速开发出一个简单的学生管理系统
本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...
- fastslam matlab,fastslam 快速定位和构图的源码,一个简单的例子,3D建模,可以用作学习智能机器人自主移动 matlab 272万源代码下载- www.pudn.com...
文件名称: fastslam下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 31 KB 上传时间: 2015-03-19 下载次数: 22 详细说明:快速定 ...
- python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统
本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...
- 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2
本文在Ubuntu18.04运行,fabric版本为2.3.0.本文篇幅较长,因此分为两篇.快速运行一个简单的Fabric网络1详见:link 目录 3. Orderer节点的启动 4. Peer节点 ...
- 流媒体视频服务:快速搭建一个简单的流媒体视频服务(一)
快速搭建一个简单的流媒体视频服务 前言 系统组成 RTMP协议简介 Red5 概述 Red5 服务器搭建 前言 最近自己在研究有关于流媒体播放的技术,网上资料甚少.出于开源精神以及在查阅资料得到各位大 ...
- 3.2 实战项目二(手工分析错误、错误标签及其修正、快速地构建一个简单的系统(快速原型模型)、训练集与验证集-来源不一致的情况(异源问题)、迁移学习、多任务学习、端到端学习)
手工分析错误 手工分析错误的大多数是什么 猫猫识别,准确率90%,想提升,就继续猛加材料,猛调优? --应该先做错误分析,再调优! 把识别出错的100张拿出来, 如果发现50%是"把 ...
- 一个简单的MATLAB脚本——快速行进算法(FMM))
一个简单的MATLAB脚本--快速行进算法(FMM) 介绍快速行进算法(FMM)的简单MATLAB脚本,不到20行代码实现快速行进算法的运算结果,而且计算速度非常快.给了两个实例模型来说明计算结果. ...
最新文章
- 看清头秃元凶,腾讯AI首度揭示真相
- 在Leangoo中,如何快速切换项目内看板?
- zimbra邮件服务器配置,Zimbra邮件服务器无需登录任意邮箱伪造漏洞修复
- 20个优秀的JavaScript 键盘事件处理库
- scala函数的定义语法说明
- vue 组件库发布_如何创建和发布Vue组件库
- Java基础学习需要掌握哪些内容?
- 恐龙快跑小程序对接流量主源码+前端 v5.0.4 全开源微擎框架
- Spcok简约图片分享网站Typecho主题
- 最后一战 源代码_我们的故事 | 一枚“铁渣”的一战成名
- 删除StringBuilder的最后一个字符?
- VB2010(3)整型运算
- 弱电系统集成服务器,智能化弱电系统集成(BMS系统集成工程)设计方案
- linux上2048游戏程序,在Linux系统下完全可以玩2048游戏
- vue 路由跳转 外部链接
- Spectral Algorithm
- CentOS下安装cups实现局域网共享HP1020打印机
- 联想国产自主计算机,实现零的突破,第一款纯国产电脑诞生,网友:此刻联想怎么想?...
- 《脱颖而出——成功网店经营之道》一2.6 连横:返利模式的应用及分销
- gcc之 -ffunction-sections
热门文章
- 计算机桌面文件删除不掉是怎么了,文件删不掉怎么办?如何删除一个删不掉的文件?...
- 笔记-使用AntDesignVue的Modal组件
- 【计算机图形学】几何
- windows10无法访问共享计算机,win10共享无法访问,windows无法访问共享文件
- 第九周 项目一--猴子选大王(数组版)
- 我的数据库是半瓶子水的水平
- 网络抓取ts文件转mp4_TS格式的视频文件怎么转换成mp4文件。
- 《C++ API设计》摘录
- 用户画像的定义及构建方法
- cad lisp 背景遮罩_单行文字转多行文字带背景遮罩