wine中complex::pow 补丁的实现

我发了一个wine的补丁,实现complex::pow的部分重载:http://source.winehq.org/patches/data/104267

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函数的时候有点疑惑,为什么参数int要转化成double,以为是系统规定的,当时为了编译能过就用了转换了,也没有看源代码的想法。今天才知道,原来是考虑到那么几个问题(overflow、负数次幂的结果)等才用double的,而且还提高了复用,感觉设计得很好~(除了给人一点点confuse)

然后我做了测试,这是在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来解决

wine中complex::pow 补丁的实现

时间: 2024-10-18 13:56:38

wine中complex::pow 补丁的实现的相关文章

Oracle EBS-SQL (SYS-13):查询DBA在系统中的打补丁信息.SQL

查询DBA在系统中的打补丁信息 1. select * from ad_patch_drivers          /*查看已经打了哪些Patch*/ 2. select * from ad_patch_runs             /*查看打patch的时间,目录等信息*/ 3. select * from ad_patch_driver_langs /*查看patch的语言*/ 4. 查询补丁名称.语言.打Patch的开始时间.打Patch的完成时间: SELECT driver.dr

Wine中中文显示为错误的解决方案

First u must download wqy-microhei.ttc font online (https://github.com/anthonyfok/fonts-wqy-microhei/blob/master/wqy-microhei.ttc) After save this Regedit file on pc (https://gist.github.com/swordfeng/c3fd6b6fcf6dc7d7fa8a) Font file copy to wine fold

python中的猴子补丁Monkey Patch

python中的猴子补丁Monkey Patch 什么是猴子补丁 the term monkey patch only refers to dynamic modifications of a class or module at runtime, motivated by the intent to patch existing third-party code as a workaround to a bug or feature which does not act as desired

关于C++中的pow小记(转)

昨天在敲一个数位DP的问题,但是用到了这个坑D的问题,找了半天错,还以为又是什么奇怪的算法,结果发现思路一致,然后自己各种YY修改,最后不得不和正确答案比对,但是最后发现标准答案和自己的想法几乎一模一样,最后一个函数一个函数替换比对,发现问题竟然出在了pow函数上. 其实很早之前再A题的时候就出现过这个pow精度丢失的问题,只是很久没出现过了,出现问题之后才恍然大悟,现在记录一下,以防以后出错,也供大家借鉴. 这次问题是出现在了pow返回值和整数做运算时候丢失的精度,用一种看起来比较Low但是比

关于GoldenGate 中的 BLR 补丁

经过询问Oracle GoldenGate的印度工程师,印度工程师给出如下答复: BLR is a backport level request where a backport request for some of the bugs reported as fixed in this version

【转】ubuntu中的Wine详解

原文网址:http://blog.csdn.net/iwtwiioi/article/details/10530561 什么是wine?(转自百度百科,具体看百科) wine,是一款优秀的Linux系统平台下的模拟器软件,用来将Windows系统下的软件在Linux系统下稳定运行,该软件更新频繁,日臻完善,可以运行许多大型Windows系统下的软件.另外英语单词wine是葡萄酒的意思. wine下载地址(我是在软件中心下的,版本是1.5):http://www.winehq.org/downlo

Ubuntu中wine安装的程序如何卸载

很多朋友尝试在Ubuntu中用wine安装exe格式的应用程序,但经常遇到装完之后启动程序就崩溃.或者根本无法启动.无法使用的情况,于是想立即把安装的程序卸载,可是在wine中却找不到卸载exe软件的方式,今天就给大家分享一下wine卸载exe软件的两个方法: 1.删除法 Ubuntu系统安装的软件会分布在很多不同的目录,即使使用wine模拟windows安装也会如此: wine会在/home下的用户名目录生成三个隐藏的文件夹 .wine..local..config ,默认是看不到的,通过按快

linux下使用cd命令进入wine容器中的windows路径

今天在使用Ubuntu系统时,想卸载wine中安装的TIM版QQ 需要进入安装目录下使用 wine TIMUninst.exe命令 结果死活cd不进去 原目录: ~/.wine/drive_c/Program Files (x86)/Tencent/TIM/TIMUninst.exe 中间Program Files (x86)用tab补齐和"\"拼接都过不去 解决办法:使用双引号将这段含有空格的目录引起来 完整目录:.wine/drive_c/"Program Files (

使用Wine 1.6.2 在OS X El Capitan下运行Galgame

经过一些尝试,我成功在OS X El Capitan下使用wine运行了一些windows游戏,下面来逐一介绍运行这些游戏的经验. 魔法使之夜 引擎:Kirikiki 2 语言:日本语 打开游戏iso后拷贝游戏所在目录到本地文件夹(我用的是$HOME/mahoyo),打好免cd补丁,假设可执行文件为“nodvd.exe”. 使用命令“LANG=ja_JP wine nodvd.exe”,发现plugins目录下“魔法使いの夜.tpm”文件无法打开,这是因为该文件的文件名为UTF-8编码的日语字符