找回密码
 立即注册
查看: 4509|回复: 38

STC32F FPMU 数学函数库 的功能验证(第三方,力求全面完整)

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-6 21:03:37 | 显示全部楼层 |阅读模式
STC32F FPMU 数学函数库, 我相信官方已作了初步测试,作为第三方,我主要在极值方面(近无穷大及无穷大,近0点附近),

抽查测试,并将运算结果,和 KEIL官方编译器之执行结果作对比, 是否一致。

如果不一致,可能使用STC32F FPMU 数学函数库,替代KEIL官方库,会产生意想不到的结果。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-6 21:12:20 | 显示全部楼层
说明:
xx1;xx2;是输入数据:
xx3 是 KEIL官方库 计算结果。
xx4 是 STC32F FPMU库 计算结果。

1、浮点数加法(+):
   DMAIR = 0x1C;

FLOAT_ADD.JPG


测试结果近似一致,结论:100分。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-6 21:28:25 | 显示全部楼层
2、浮点数减法(-):
   DMAIR = 0x1D;


FLOAT_SUB.JPG


测试结果,近0点附近表现太精确,而 KEIL在近0时,尾数末 3位直接丢弃,不参与,

否则,执行下列程序,可能永远得不到为真(0值):

  if  !(float1-float2)
    { ....
    }

如在近0点,计算太精确了,程序执行结果,大概率是错误。

结论:80分。 软件打点补丁能用。

点评

无知无畏,妄下结论! 下面是百度上查的关于如何 [attachimg]20660[/attachimg] 看来楼主的动手编程能力不够  详情 回复 发表于 2023-9-9 13:16
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-6 21:34:26 | 显示全部楼层
本帖最后由 LAOXU 于 2023-9-6 21:37 编辑

3、浮点数乘法(*):
   DMAIR = 0x1E;

FLOAT_MUL.JPG


测试结果,近0点附近表现很精确,比KEIL计算精度高,结论:120分。

注:增加的 20分,是表现超 KEIL的额外奖励分。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-6 21:39:16 | 显示全部楼层
本帖最后由 LAOXU 于 2023-9-8 20:24 编辑

4、浮点数除法(/):
   DMAIR = 0x1F;

测试结果,除0溢出,计算结果正常,结论:100分。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-6 21:55:11 | 显示全部楼层
本帖最后由 LAOXU 于 2023-9-7 07:07 编辑

5、浮点数开方(sqrt):
   DMAIR = 0x20;

不好意思,两个变量写反了,现更正。


FLOAT_SQRT.JPG


测试结果,近0点(非正规浮点数),keil 计算直接罢工了???

像 keil做乘法,接近0直接取计算值为 0能接受。

但对此数 1.17549421e-0.038 开平方, STC32F FPMU SQRT多开几次, 结果近似为 1(完全正确)。

keil 直接罢工不工作, 不知客户会不会接受?

让我打分:近0点附近表现很精确,远甩 KEIL 直接罢工,结论:150分。

注:增加的 50分,是表现超 KEIL的额外奖励分。



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-6 22:21:02 | 显示全部楼层
6、浮点数比较(fpcmp3):
   DMAIR = 0x21;


测试结果,存在问题有 2点:

a. 太精确了,精确的过头,当两数 24位尾数相差 1, 都能精确分辩出正负,如何对计算结果判0(相等)?

b. 无法对无穷大判断,当一个 +INF 和 一个标准浮点数 相比较,肯定 +INF 大。

   当一个 -INF 和 一个标准浮点数 相比较,肯定 -INF 小。

   STC32F FPMU 的浮点数比较, 直接作溢出处理,不作判断, 不区分大小。

   这个软件补丁也没法打,keil 的 fpcmp3,用整数运算,速度不慢。

   如用STC32F FPMU 的浮点数减法代替(再加上近0点软件判断补偿),编写的程序,执行速度不一定比 keil 的 fpcmp3 快`。

  这个只有编写后, 测试各自的运行速度, 对比结果才知。


让我打分:60分不会给, 不及格。

点评

“b. 无法对无穷大判断,当一个 +INF 和 一个标准浮点数 相比较,肯定 +INF 大” 正规的编译器函数库在对浮点数进行比较前,都会先对浮点数的格式进行检测(也就是STC FPU的浮点数检测功能存在的必要性),然后只  详情 回复 发表于 2023-9-9 13:34
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-8 20:25:31 | 显示全部楼层
7、浮点数检测(CHECK):
   DMAIR = 0x22;

check.JPG


测试结果,正非浮点数,计算结果 R7=0x01,不正常。

check11.JPG


经反复核查,系说明书有误,结论:100分。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-8 20:33:59 | 显示全部楼层
本帖最后由 LAOXU 于 2023-9-8 20:47 编辑

8、浮点数正弦(SIN):
   DMAIR = 0x2D;

FLOAT_SIN_X4.JPG


测试结果,大数据计算精度比 KEIL 高,动态范围比 KEIL 大,最大到 16777215(0x4B7FFFFF),

数据超出此数, STC32F FPMU 的 SIN 不工作了,结论:120分。

注:增加的 20分,是表现超 KEIL的额外奖励分。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-9-8 20:35:25 | 显示全部楼层
本帖最后由 LAOXU 于 2023-9-8 20:47 编辑

9、浮点数余弦(COS):
   DMAIR = 0x2E;

FLOAT_COS_X4.JPG


测试结果,大数据计算精度比 KEIL 高,动态范围比 KEIL 大,最大到 16777215(0x4B7FFFFF),

数据超出此数, STC32F FPMU 的 COS 不工作了,结论:120分。

注:增加的 20分,是表现超 KEIL的额外奖励分。

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 01:42 , Processed in 0.126492 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表