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

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

[复制链接]
  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

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

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

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

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

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

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

    FLOAT_ADD.JPG


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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

    积分
    4156
     楼主| 发表于 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
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

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

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

    FLOAT_MUL.JPG


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

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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

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

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

    积分
    4156
     楼主| 发表于 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的额外奖励分。



    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

    积分
    4156
     楼主| 发表于 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
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

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

    check.JPG


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

    check11.JPG


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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

    积分
    4156
     楼主| 发表于 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的额外奖励分。


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:57
  • 签到天数: 148 天

    [LV.7]常住居民III

    39

    主题

    889

    回帖

    4156

    积分

    荣誉版主

    积分
    4156
     楼主| 发表于 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, 2024-5-20 14:49 , Processed in 0.076358 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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