高级综合的任意精度浮点库

时间:2015-07-14 07:56:58

标签: c++ templates floating-point floating-point-precision arbitrary-precision

我正在尝试在C ++中创建一个基于模板的任意精度浮点库,它支持变量Exponents和变量Mantissa,可以指定为模板参数。我已经开发了一个基于模板的Fixed Point库。我想要的实现类型是:

 template<int EXPONENT_BITS, int MANTISSA_BITS>
     struct fp_float
         {
           <some_data_type_to_store_exponent_and_mantissa_values>;
         };

我无法找到合适的数据类型来存储指数,因此我不会使用比代码所需更多的位。我考虑过将intn_t用于n = {8, 16, 32, 64},但如果我声明fp_float<3,11>,它将使用8位用于EXPONENT16位{ {1}}。

因此,它使整个库无用,因为它使用的资源超过了它应该达到的指定精度。

我想知道是否有任何其他任意精度数据类型符合我的目的。

我确实遇到了一些任意精度库,但这些库有一些代码结构无法使用高级综合合成到硬件描述中(这就是我制作这个库的原因)。

2 个答案:

答案 0 :(得分:1)

这是一个有效的解决方案吗? base_int_t是一种特征类型,它为您提供在后续位域定义中使用的基本类型。以下代码缺少N&gt;的特化。 2

<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css">
  </head>

  <body ng-app="test">
    <h1>Hello Plunker!</h1>
    <input type="text" ng-model="ftr">
    <ul ng-controller="TestController">
      <li ng-repeat="item in list | filter : {name : ftr}">
        <button class="item" ng-click='getEvent()'>{{ item.name }}</button>
      </li>
    </ul>
    <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js"></script>
    <script src="app.js"></script>
  </body>

</html>

答案 1 :(得分:1)

您可以使用Mentor Graphics的ac_datatypes中的ac_int。

https://www.mentor.com/hls-lp/downloads/ac-datatypes

它在模拟和HLS中也是免费的和可用的。