代码之家  ›  专栏  ›  技术社区  ›  Fire Lancer

有32位浮点数学库吗?

  •  5
  • Fire Lancer  · 技术社区  · 16 年前

    我计划在C语言中做下一个项目,而不是C++(使用SLIMDX)。

    所有的DirectX都使用浮点,而System.Math使用双精度。这意味着在浮点数和双倍数之间不断转换。

    所以理想情况下,我想用float编写所有的代码,因为无论如何,从double转换成float的精度都没有提高……

    然而,我找不到一组使用浮点运算的.net数学函数。我当然可以用c_来编写自己的库,但我宁愿使用经过优化的现有库。

    2 回复  |  直到 13 年前
        1
  •  2
  •   OregonGhost    16 年前

    xna提供了几个数学常数(包括3d专家,如pi/2等)和一些具有浮点精度的高级数学函数(尽管不是三角函数)。虽然这很可能不是你的选择,因为XNA并没有Slimdx那么苗条,但它肯定意味着系统。数学要么实际上缺少了一些东西,要么性能影响不大。根据我的经验,你实际上并没有为自己计算那么多,因为大部分是由几何类(矩阵、四元数、向量)或GPU本身处理的。

    从这个角度来看,我会看看slimdx,他们提供了什么。似乎矩阵、向量、四元数(甚至16位浮点)等典型的东西已经存在了。如果你丢失了一些浮点精度的常量,只需自己创建它们(不要每次都进行转换,只是在启动时)。

        2
  •  1
  •   Paul    15 年前

    是的,如果这是所需的所有精度,那么通过在float中端到端地工作,您将获得非常显著的性能提升。

    查看 NMath 来自CenterSpace软件的库。在整个库中始终支持float、double和complex类型。

    保罗