Eigen 是一个 C++ 模板库,主要用于:线性代数、矩阵、向量、数值计算和相关算法。

一、特点:

1、通用性

  • 支持所有矩阵,从小型固定矩阵到任意大密集矩阵、稀疏

  • 支持所有标准数据类型,包括 std::complex, integers,并且很容易扩展到自定义类型

  • 支持不同的矩阵分解(如QR,SVD等)和几何特性

  • 其 unsupported modules 提供和很多特殊性质,如非线性优化、矩阵函数、多项式求解、快速傅里叶变换等等。

2、快速性

  • 表达式模板允许智能删除临时数据,并能适当使用惰性编译

  • 向量化处理:支持 SSE 2/3/4, AVX, FMA, AVX512, ARM NEON (32-bit and 64-bit), PowerPC AltiVec/VSX (32-bit and 64-bit) 指令集, 并且现在支持 S390x SIMD (ZVector) 单指令多数据

  • 充分优化固定大小的矩阵: 避免使用动态内存分配, 但需要时会展开循环

  • 对于大型矩阵,特别注意缓存友好

3、可靠性

  • 算法根据可靠性小心选择。可靠性取舍清楚地列出,能进行非常安全的分解

  • 通过自己的测试套件进行了全面测试,BLAS 标准测试套件和 LAPACK 测试条件的一些部分

4、完美性

  • 表达式模板对C++语法来说,语义清楚,表达式优雅

  • 执行算法感觉像复制的伪代码

5、多编译器支持

为了保证可靠性,在很多编译器上运行了测试套件,绕过了所有的编译器bugs。Eigen 是标准的C++98 库,保持了非常合理的编译时间。

二、需求

仅仅需要 C++ 标准库。运用CMake编译系统,不过仅用于建立文档和单元测试,自动安装。如果只是用Eigen,可以直接使用,不需要连接二进制库,不需要配置头文件。Eigen 是一个定义在头文件中的纯模板库。

三、编译器支持

GCC, 4.4 及以上
MSVC (Visual Studio), 2010 及以上
Intel C++ compiler. Enabling the -inline-forceinline option is highly recommended.
LLVM/CLang++, 3.4 及以上
XCode 4 and newer. Based on LLVM/CLang.
MinGW, recent versions. Based on GCC.
QNX’s QCC compiler.

注:在 ROS 系统中大量使用了 Eigen

Eigen 模板库的简介相关推荐

  1. C++的标准库和C++的标准模板库(STL)

    https://www.cnblogs.com/jpfss/p/10025771.html C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发 ...

  2. C++标准库和标准模板库(转)

    转自原文http://blog.csdn.net/sxhelijian/article/details/7552499 C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标 ...

  3. C++标准库和标准模板库

    C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义. 在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再 ...

  4. C++标准库和模板库

    C++标准库的内容总共在50个标准头文件中定义. 在C++开发中,要尽可能地利用标准库完成. 这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再花费时间.人力重新开发呢: (2)质量:标准库 ...

  5. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

  6. eigen冲突 sophus 安装_SLAM-Sophus模板库安装总结

    [问题]由于自己买的书<视觉SLAM十四讲:从理论到实践>,也就是<视觉SLAM十四讲>的第二版,书中Sophus库用的是模板版本,而之前我下载书籍代码是第一版书籍的代码仓库, ...

  7. C++ STL标准模板库简介

    文章目录 1. 什么是STL? 2. STL的优势 3. STL版本? 4. STL的六大组件 5. 学习建议 6. 为什么需要迭代器? 7. 自己实现迭代器iterator 8. STL中的5种迭代 ...

  8. 【C++】STL(标准模板库)简介

    STL简介 文章目录 STL简介 什么是STL STL版本 STL的六大组件 如何学习STL STL的缺陷 什么是STL STL(standard template libaray-标准模板库):是C ...

  9. c++模板库(简介)

    1 目 录 1 STL 简介 ..................................................................................... ...

最新文章

  1. linux内核写文件flush,innodb_flush_method 与linux File I/O
  2. 3线程的终止方式,线程属性,NPTL
  3. 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现按部门组织机构设置权限...
  4. 深度学习(三十九)——深度强化学习(2)概述, Deep Q-learning Network(1)
  5. 真静态和伪静态的区别
  6. 合并工具_你值得拥有这个PDF合并工具 免费获取转换方法
  7. (二叉树创建+查找)精灵邮差
  8. 4变形物体_Houdini基础(二)曲线变形物体
  9. ArcGIS JavaScript API本地部署离线开发环境
  10. 算法——X^3+Y^3+Z^3=XYZ(水仙花数)
  11. 使用winpcap定制TCP包发送
  12. 广度搜索 -- 9.2 Word Ladder -- 求具体的路径 -- 图解
  13. swift中Any,AnyObject,AnyClass的区别
  14. 京东联盟API接口-京东订单查询接口-实时掌握订单情况
  15. 阿里巴巴正式宣布5.4亿现金战略投资中国万网
  16. 永洪科技怎么样_【永洪科技怎么样?】-看准网
  17. 变量命名神器 CODELF
  18. Windows下网络共享文件夹挂载到wsl系统
  19. ObjectARX开发笔记(一)——分别使用AcEdInputPointFilter和AcEdInputPointMonitor实现光标提示功能
  20. UGUI源码解析(二十二)ContentSizeFitter

热门文章

  1. Java_IO流_抽象类
  2. 关于requestAnimationFrame与setInterval的一点差异
  3. svn汉化包安装无效的解决办法
  4. swift UI专项训练39 用Swift实现摇一摇功能
  5. 深入理解java虚拟机---读后笔记(垃圾回收)
  6. boost库在工作(20)线程之五
  7. 在CLASSPATH中加载目录下所有的jar
  8. Docker Swarm删除节点
  9. 00-基于Vue的博客项目展示
  10. 【Linux 内核】调度器 ③ ( sched_class 调度类结构体分析 | next 字段 | enqueue_task 函数 | dequeue_task 函数 )