作者:favoyang 文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=864
看此文前,你可以首先参考一下《J2ME中定点库MathFP使用入门》一文。MathFP是一个定点的浮点模拟工具,这套类库没有封装细节,而是把一系列的转换操作留给了用户,这些频繁的操作非常容易出错,但是效率上占一定的优势。考虑到极少有J2ME设备设有浮点运算单元,特别是在CLDC1.0设备上不适合使用沉重的浮点运算。所以如果你的应用需要进行沉重的浮点运算,比如基于浮点的游戏,可以采用MathFP。这样至少比你采用手动的乘除法来的优雅。而对于并非沉重的浮点计算,我推荐大家使用由_Nikolay Klimchuk_ 开发的henson.midp.Float库(ver 1.01) ,一个封装良好的Float类。
henson.midp.Float类简介
首先到http://henson.newmail.ru/j2me/Float.java下载源代码。
henson.midp.Float类非常适合科学计算,他的范围很大,具有64位的尾数(mantissa),64位的指数。该Float类和J2SE标准的Float类十分的相似,提供了完备的方法,参考下表:
非静态成员 |
非静态成员 |
常量 |
Float() Float(long value) Float(long value, long e) Float(Float value) String toString() Float Add(Float value) Float Sub(Float value) Float Mul(long value) Float Mul(Float value) Float Div(long value) Float Div(Float value) boolean Great(Float x) boolean Less(Float x) boolean Equal(Float x) Float Neg() long toLong() boolean isError() |
Float sin(Float x) Float cos(Float x) Float sqrt(Float x) Float tan(Float x) Float asin(Float x) Float acos(Float x) Float atan(Float x) Float atan2(Float x, Float y) Float parse(String str, int radix) Float exp(Float x) Float log(Float x) Float log10(Float x) Float pow(Float x, Float y) Float ceil(Float x) Float floor(Float x) Float abs(Float x) Float Int(Float x) Float Frac(Float x) Float toRadians(Float x) Float toDegrees(Float x) |
Float ERROR Float ZERO Float ONE Float PI - pi Float E - Euler's constant Float LOG10 - Natural logarithm of 10 Float LOGdiv2 - Natural logarithm of 0.5 Float PIdiv2 - pi/2 Float PIdiv4 - pi/4 Float PIdiv6 - pi/6 Float PIdiv12 - pi/12 Float PImul2 - pi*2 Float PImul4 - pi*4 |
Float的使用和大多数提供源代码的第三方库一样,只要直接将其加入到你的工程中来就可以了。
Float类的license很特别,根据作者的要求,需要你做到以下几点:
- 一个含有此Float类的你的产品的copy和以及对应的license
- 在about菜单中增加“henson.midp.Float (C) by Nikolay Klimchuk ”版权提示
- 如果有官方网站,则网站应该提供到http://henson.newmail.ru的链接
测试数据
也许你最关心这个模拟类的速度。以下是官方的测试数据供你参考。
测试程序下载地址:
http://henson.newmail.ru/j2me/FloatTest.jad
http://henson.newmail.ru/j2me/FloatTest.jar
机型 |
sin, ms 100次 |
cos, ms 100 次 |
tan, ms 100 次 |
add, ms 10000 次 |
mul, ms 10000 次 |
div, ms 10000 次 |
sqrt, ms 1000 次 |
移动电话 |
/-\ Nokia |
N-Gage |
1016 |
594 |
1641 |
1297 |
3438 |
6328 |
4219 |
6310i |
4370 |
2461 |
7089 |
5363 |
14673 |
24131 |
20402 |
3510i |
4202 |
2435 |
6837 |
5324 |
14550 |
22370 |
16678 |
6100 |
4407 |
2534 |
7065 |
5410 |
14905 |
23794 |
16069 |
6610 |
4381 |
2511 |
7158 |
5492 |
15056 |
23874 |
17318 |
3650 |
1094 |
609 |
1766 |
1297 |
3484 |
7031 |
4641 |
7650 |
765 |
453 |
1265 |
1031 |
2515 |
5328 |
* |
6600 |
328 |
157 |
500 |
188 |
547 |
3235 |
1328 |
6220 |
6086 |
3623 |
10149 |
8325 |
22395 |
32238 |
23670 |
7600 |
494 |
290 |
795 |
614 |
1578 |
2482 |
1622 |
3100 |
6727 |
3967 |
10949 |
9054 |
24905 |
36291 |
26268 |
6230 (3.14) |
965 |
538 |
1654 |
1088 |
3212 |
5165 |
* |
6230 (4.28) |
705 |
414 |
1197 |
857 |
2387 |
3669 |
2378 |
6230i (3.23) |
627 |
351 |
994 |
619 |
1747 |
3813 |
1830 |
7250 |
4254 |
2431 |
7052 |
5466 |
14943 |
22483 |
14524 |
7610 |
281 |
141 |
438 |
187 |
453 |
2719 |
1109 |
6260 |
281 |
141 |
406 |
157 |
453 |
2766 |
1187 |
6630 |
110 |
63 |
156 |
94 |
203 |
1094 |
500 |
/-\ Siemens |
S55 |
28899 |
16559 |
50899 |
36306 |
101370 |
200670 |
169181 |
M55 |
30441 |
17025 |
53584 |
38420 |
105500 |
207800 |
* |
SX1 |
1110 |
672 |
1875 |
1563 |
3985 |
7141 |
4203 |
CX65 |
844 |
258 |
342 |
327 |
443 |
1219 |
923 |
S65
|
212 |
139 |
337 |
245 |
466 |
1191 |
798 |
M75 (new) |
267 |
153 |
309 |
240 |
420 |
1186 |
790 |
/-\ SonyEricsson |
K300i (new) |
739 |
354 |
1094 |
646 |
1716 |
3041 |
2389 |
K750i |
654 |
319 |
980 |
521 |
1496 |
2848 |
1970 |
Z1010 |
785 |
404 |
1231 |
886 |
2026 |
3289 |
2603 |
K700i |
712 |
370 |
1085 |
639 |
1687 |
3049 |
1864 |
T610 |
20580 |
11575 |
33585 |
28100 |
71365 |
87740 |
76280 |
T610 (R3C) |
8780 |
5055 |
14515 |
11385 |
30440 |
42120 |
34595 |
T610 (R6C) |
9875 |
5575 |
16210 |
12235 |
33295 |
49410 |
37920 |
P900 |
250 |
109 |
344 |
156 |
406 |
2203 |
1062 |
P800 |
500 |
282 |
813 |
625 |
1563 |
3250 |
1750 |
Thank you to Dmitry Gorilowsky for measurements |
PDA |
/-\ Sony |
Clie N610 |
48830 |
24960 |
84770 |
35810 |
102100 |
445530 |
206440 |
辅助工具:FloatConv (1.1)
_Nikolay Klimchuk_ 还开发了一些相关工具让该Float的使用变得更加的简单。FloatConv是一个数学转换器,它将数学算数表达式转换为midp1.0平台上使用henson.midp.Float的等价表达式。这样使得使用henson.midp.Float的成本大大降低了。这一工具是基于J2SE 。
该工具的下载地址是:http://www.unteh.com/download/FloatConv/FloatConvW.zip
对CLDC1.1的扩展
henson.midp.Float11 是对CLDC1.1的扩展。提供了CLDC1.1相对比J2SE缺失的浮点操作:
Non-static members |
Static members |
Constants |
|
double asin(double x) double acos(double x) double atan(double x) double atan2(double y, double x) double exp(double x) double log(double x) double log10(double x) double pow(double x, double y) |
double SQRT3 - Square root from 3 double LOG10 - Natural logarithm of 10 double LOGdiv2 - Natural logarithm of 0.5
|
下载地址:http://henson.newmail.ru/j2me/Float11.java
henson.midp.Float11的license和henson.midp.Float是一样的。
另外一套功能相似的基于CLDC1.0的LIB是Beartronics Java J2ME Libraries的fpmathlib,地址 :http://sourceforge.net/projects/bearlib/,感兴趣的朋友可以自行研究。
分享到:
相关推荐
python库。 资源全名:Henson-Logging-0.3.0.tar.gz
资源分类:Python库 所属语言:Python 资源全名:Henson-1.0.0.post1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:Henson_AMQP-0.7.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
最新 Dart&Henson; 3 版本的整体设计框架思路的文档 该版本为英文官方原版
Stephen Henson <steve@openssl.org> Ben Laurie <ben@openssl.org> Bodo Moeller <bodo@openssl.org> Ulf Moeller <ulf@openssl.org> Holger Reif <holger@openssl.org> Paul C. Sutton <paul@openssl.org>
关于拓扑空间上的Baire集、Borel集在标准部分映射下的逆像何时是Loeb可测集,文[1,2]都进行了研究。特别地,在[1]中C.W.Henson证明了这样一个重要结论,写成以下定理: 定理1 设X是完全正则的T_2空间,A
A Multigrid Tutorial 2nd Edition William L. Briggs, Van Emden Henson, Steve F. McCormick
唤醒-CMU论文 Wake是针对一名参加者的耳机,一名舞者和一名主持人的引导式混合现实体验。 Wake将参与者沉浸在虚拟环境中,并使用语音指令和动作来促进参与者在该空间中的导航,... 安娜·汉森(Anna Henson)的 执照:
多重网格方法教程进度(已完成课程): 第 0 课:误差收敛第 1 课:基本多重网格方案参考: WL Briggs、VE Henson 和 SF McCormick,多网格教程,第 2 期。 编,暹罗,费城,2000
对Henson和Seborg的串级CSTR进行状态反馈预测控制例程(SFPC)
飞行员(测试版)Pipit是一个研发项目,旨在找到在互联网上展示电影书籍的最佳方法。 Pipit的前端是AngularJS和Bootstrap,后端是Node,Express和Postgres。所提供的图像针对浏览器的大小进行了优化, 。...
王代码matlab 比例玻璃 该github.org存储库包含基于基于荧光蛋白的FRET标准物对荧光强度的测量,对FRET效率进行比例分析所需的所有代码。...Henson)fca_readfcs.m:支持用于导入FCS文件的Matlab代码(Las
Henson, MA 和 Seborg, DE,反馈线性化控制,Chap. 4 非线性过程控制,由 Hensen, MA 和 Seborg, DE, Prentice Hall 编辑 (1997) 在以下位置下载其他模型和文档: http://www.hedengren.net/research/models.htm
来源“如何制作计算机生成的动画,摄于1964年左右” 约翰·惠特尼-青金石(1966) “难以置信的机器”(1968) 吉姆·亨森(Jim Henson)-《 Cyclia投影制图》原型(1968年) 多丽丝·蔡斯(Doris Chase)-圈子...
M.Henson) 基于二进制搜索的快速1d直方图算法。 状态:该准则已准备就绪,可在其他项目中使用。 测试已实施并通过。 该项目展示了比Matlab内置的histcounts函数更高的速度,并提供了自动选择最快方法的自适应函数...
Henson,L。Shen,PD Mitchell和YV Zakharov,“水下声网络仿真的通道建模”,在TechRxiv中提交(IEEE Access,2020年6月提交)。 这项工作得到了英国工程和物理科学研究委员会(EPSRC)通过USMART项目(格randintEP...
SockPuppet 控制器实验 背景在看到令人难以置信的并通过键盘和鼠标将其表演出来后,我立即梦想着用备件实现某种 Jim Henson 风格的“Waldo”并将数据流式传输到网页有点像我为@MakerSylvia 的所做的那样。...
瑞安·汉森(Ryan Henson) 罗伯特·桑托斯(Robert Santos) 实时链接 GitHub链接 部署的网站链接 问题 请随时在GitHub上找到我: ShaniBlack您也可以向我发送任何问题。 执照 该应用程序受MIT许可证许可。
openjdk1.7版本,官网已关闭下载链接,上传出来方便广大开发者使用