【问题标题】:Boost unit test case for fixed point addition用于定点加法的 Boost 单元测试用例
【发布时间】:2013-04-12 12:32:10
【问题描述】:

大家好,我是 C++ 新手,在这里我需要为我的头文件的定点添加做一个 boost 测试。由以下代码完成。

 BOOST_AUTO_TEST_CASE( add )
    {
        double a=(std::numeric_limits<fpml::fixed_point<short, 8> >::min)(); 
        double b=(std::numeric_limits<fpml::fixed_point<short, 8> >::max)(); 

        for (double x=a; x<b; ++x)
        {
            for (double y=a; y<b; ++y)
            {
                fpml::fixed_point<int, 16> xx = x;
                fpml::fixed_point<int, 16> yy = y;

                BOOST_CHECK( (fpml::fixed_point<int, 16>)(x+y) == xx+yy );
            }
        }
    }

我只需要知道代码中发生了什么, 限制为short_min 的类模板fpml::fixed_point&lt;short, 8&gt; 分配给double function a,限制为short_max 的同一类模板fpml::fixed_point&lt;short, 8&gt; 分配给double function b

for loop 中发生了什么,它是从 short 的最小值循环到 short 的最大值吗?

有人可以解释一下 for lopp 中发生了什么以及添加是如何完成和检查的

【问题讨论】:

  • @ForEveRTo double a 和 doube b 是否分配了一些值?还是只分配限制?请单独解释一下,我理解for循环部分

标签: c++ loops boost types


【解决方案1】:

std::numeric_limitstraits-type。在代码中的某处,fmpl::fixed_point&lt;T, int&gt; 有专门化。然后a == fmpl::fixed_point&lt;short, 8&gt; 类型的最小值和b == 此类型的最大值。对于循环检查,abfmpl::fixed_point (a + b) 的所有对在 a 到 b 范围内 == fmpl::fixed_point(a)fmpl::fixed_point(b) 的总和。

【讨论】:

  • 所以 a 将被分配 -32767(short_min) 而 b 将被分配 32767(short_max)?
  • @Rd7 如果在std::numeric_limits&lt;fmpl::fixed_point&gt;::min and max 中返回这样的值 - 那么是的。
  • @forEverThank you n 实际上我有一个问题,我知道 c++ 的所有理论信息,例如什么是函数、什么是循环等。但是当我在代码中看到它时,我无法遵循逻辑流程,我应该如何改进呢?
  • 另一个小疑问,例如如果我的fmpl::fixed_point&lt;short, 8&gt; 是整数类型,那么将为我的a 分配什么,它会分配intshortmin limit 吗?
  • @Rd7 什么? fmpl::fixed_point 不能是整数类型,因为它是模板类。
猜你喜欢
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2014-08-24
  • 2012-10-13
  • 1970-01-01
相关资源
最近更新 更多