您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]於BF531執行程式時,數學function po... 
本帖共有553个阅读者
发表帖子 发表投票 回复主题
[求助]於BF531執行程式時,數學function pow() 數值計算結果莫名錯誤
chris_syu(论坛新手)
chris_syu
头衔:社区公民
帮派:无帮无派
帖数:35
金钱:411
积分:49
注册时间:2012/12/17
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]於BF531執行程式時,數學function pow() 數值計算結果莫名錯誤
各位大大好:

當我 bulid project 完成 Run 第一次時, 此副程式中的 result、a、b 計算結果皆正確,如下圖:
上传的图片
  20131221431098.jpg [ 192.63 KB 786×648 ] (缩略时请点击查看原图)

 


但當繼續執行到這個副程式的時候, result、a、b 的計算結果卻得出莫名的數值,如下圖:
上传的图片
  201312214312998.jpg [ 194.68 KB 764×651 ] (缩略时请点击查看原图)

 


實在想不透,請問各位大大有何見解?  感謝!!





正在學習使用ADSP-53x
等级:论坛新手 参考IP地址:*.*.*.*
2013/1/22 14:32:45
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

应该是你的代码中一些变量没有清零,第二次使用时将上次残余值加入了运算,你可以这样解决。

找两个电脑,运行同样的代码,一个运行第二次,一个运行第一次,每次遇到变量,两个变量比较是否有差异,这样可以帮你快速找到原因。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/1/22 22:30:59
chris_syu(论坛新手)
chris_syu
头衔:社区公民
帮派:无帮无派
帖数:35
金钱:411
积分:49
注册时间:2012/12/17
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
謝謝 Andy 大的回覆。

目前試驗不用pow函式計算平方值(不清楚pow函式發生何事),改為直接相乘計算平方值,執行第2次時,a、b仍可得到正確的數值,但 result_1 透過 sqrt 函式得到的數值卻有落差,如下圖:

上传的图片
  201312310142765.jpg [ 179.59 KB 787×672 ] (缩略时请点击查看原图)

 


a = (711-133) * (711-133) = 334084
b = (41-48) * (41-48) = 49
c = 334084 + 49 = 334133
而 334133 開根號後應該等於 578.0423....
但 result_1 = sqrt(c); 卻得到 529.204, 這數值與 578.042... 落差很多

不知各位大大有何看法??  感謝解答!

正在學習使用ADSP-53x
等级:论坛新手 参考IP地址:*.*.*.*
2013/1/23 10:25:30
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你查一下sqrt(c);这个函数是否有问题,或者你看你下你声明的变量,会不会声明的是有符号的变量,导致计算时吴将最高位当做符号位,用无符号声明看看。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/1/23 10:40:57
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159313 Call, 1 Queries, Processed in 0.031250 second(s),