代码之家  ›  专栏  ›  技术社区  ›  Taylor

特征::矩阵XXD typedefs的替换

  •  1
  • Taylor  · 技术社区  · 7 年前

    最简单的替换方法是什么 Eigen::MatrixXd Eigen::VectorXd 具有向量和矩阵的 long double 元素?

    长双人

    typedef Eigen::VectorXd Vec;
    typedef Eigen::MatrixXd Mat;
    

    1 回复  |  直到 7 年前
        1
  •  5
  •   Henri Menke    7 年前

    只需根据Eigen自己的定义自己的TypeDef global matrix typedefs

    如果您使用 Eigen::MatrixXd 并用类型元素填充 long double double 矩阵的元素,这会导致精度损失,或者在最坏的情况下导致溢出错误。然而,在许多体系结构上,双精度浮点算法是在80位扩展精度下完成的,因此结果可能是相同的。你当然不应该依赖这个!有关更多信息,请参见,例如。, long double vs double

    #include <Eigen/Core>
    
    typedef Eigen::Matrix< long double, Eigen::Dynamic, 1              > Vec;
    typedef Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic > Mat;
    
    int main()
    {
      long double ld = 2;
    
      Mat m(1,1);
      m(0,0) = ld;
    }