wine中complex::pow 补丁的实现
来源:互联网 发布:复杂网络算法与应用pdf 编辑:程序博客网 时间:2024/06/05 18:32
我发了一个wine的补丁,实现complex::
HongQian帮我在irc上问了Piotr对这个补丁的看法,他说:
“it generally looks ok but it's possible to implement it with better
precision, so I'm not sure what to think about it”
“我想了想发现,其实我们在实现complex::pow
在指数为实整数的情况下的重载的时候,
我去查了一些资料,发现,以前初学C\C++用pow函数的时候有点疑惑,
然后我做了测试,这是在win下的结果:
pow(complex_float= (3.14159f, 0), 3): (31.006203,0.000000)
complex_translation: (31.006201,0.000000)
*******************************************************
pow(complex_float= (32.1234f, 0), 6): (1098826752.000000,0.000000)
complex_translation: (1098826624.000000,0.000000)
*******************************************************
pow(complex_float= (7.12f, 0), 6): (130280.640625,0.000000)
complex_translation: (130280.648438,0.000000)
*******************Now is complex_double************************************
pow(complex_double= (3.14159/2, 0), 3): (3.875775, 0.000000)
double_complex_translation: (3.875775, 0.000000)
*******************************************************
pow(complex_double= (32.12345678, 0), 13): (38787300223012692000.000000, 0.000000)
double_complex_translation: (38787300223012684000.000000, 0.000000)
*******************************************************
pow(complex_double= (7.12, 0), 33): (13546895790785450000000000000.000000, 0.000000)
double_complex_translation: (13546895790785442000000000000.000000, 0.000000)
*******************************************************
二分求幂现在决定用用手写的底数为复数而指数为整数次幂的pow来解决,经zhenbo提醒,发现用二分求幂就可以高效率地实现循环相乘求值,于是使用实现之:
+complex_double* __cdecl complex_double_pow_ci(complex_double *ret, const complex_double *l, int r)+{+ complex_double c = *l;+ complex_double temp = { 1.0, 0 };+ complex_double_assign(ret, &temp);++ if(r < 0) {+ r = -r;+ complex_double_div(&c, &temp, l);+ }++ for(; r>0; r>>=1) {+ if(r & 1)+ complex_double_mult_assign(ret, &c);+ complex_double_assign(&temp, &c);+ complex_double_mult_assign(&c, &temp);+ }++ return ret;+}
0 0
- wine中complex::pow 补丁的实现
- Pow的实现
- Wine 中文输入法 补丁
- [Wine]以及[中文显示补丁]的安装-1.1.3
- Complex基本操作的实现
- Complex类的实现过程
- pow(x,n)的实现
- VS中pow的使用
- python中pow的用法
- 自己实现的简单的Complex类
- 一个Complex类的简单实现
- 简单的复数Complex类实现
- Linux热补丁的实现
- pow(x,y)函数的实现算法
- C++实现系统补丁查询-systeminfo系统命令查询补丁信息,c++从文件中查找特定的字符串
- Java中Math.pow()的用法
- Java中Math.pow( )的使用
- wine中中文乱码的解决办法
- 使用组件搜索
- Codeforces Beta Round #1 A - Theatre Square
- Eclipse在线调试ARM11——Tiny6410+OpenJTAG
- playshutter
- 一个计算机系学生的学习迷惑
- wine中complex::pow 补丁的实现
- js正则 - 设置单词首字母为大写
- c#视频流畅录制
- 我的第一次也将是最后一次的ACM省赛之旅
- Ruby中将代码块作为参数传入方法的几种方法及其区别
- centos网络显示已连接但无法打开网页
- Qt入门-QPushButton
- 突破性的ASP+技术
- 几例在ASP存储过程的使用方法