Eigen 模板库的简介
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 模板库的简介相关推荐
- C++的标准库和C++的标准模板库(STL)
https://www.cnblogs.com/jpfss/p/10025771.html C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发 ...
- C++标准库和标准模板库(转)
转自原文http://blog.csdn.net/sxhelijian/article/details/7552499 C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标 ...
- C++标准库和标准模板库
C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义. 在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再 ...
- C++标准库和模板库
C++标准库的内容总共在50个标准头文件中定义. 在C++开发中,要尽可能地利用标准库完成. 这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再花费时间.人力重新开发呢: (2)质量:标准库 ...
- 【c++】标准模板库STL入门简介与常见用法
一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...
- eigen冲突 sophus 安装_SLAM-Sophus模板库安装总结
[问题]由于自己买的书<视觉SLAM十四讲:从理论到实践>,也就是<视觉SLAM十四讲>的第二版,书中Sophus库用的是模板版本,而之前我下载书籍代码是第一版书籍的代码仓库, ...
- C++ STL标准模板库简介
文章目录 1. 什么是STL? 2. STL的优势 3. STL版本? 4. STL的六大组件 5. 学习建议 6. 为什么需要迭代器? 7. 自己实现迭代器iterator 8. STL中的5种迭代 ...
- 【C++】STL(标准模板库)简介
STL简介 文章目录 STL简介 什么是STL STL版本 STL的六大组件 如何学习STL STL的缺陷 什么是STL STL(standard template libaray-标准模板库):是C ...
- c++模板库(简介)
1 目 录 1 STL 简介 ..................................................................................... ...
最新文章
- linux内核写文件flush,innodb_flush_method 与linux File I/O
- 3线程的终止方式,线程属性,NPTL
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现按部门组织机构设置权限...
- 深度学习(三十九)——深度强化学习(2)概述, Deep Q-learning Network(1)
- 真静态和伪静态的区别
- 合并工具_你值得拥有这个PDF合并工具 免费获取转换方法
- (二叉树创建+查找)精灵邮差
- 4变形物体_Houdini基础(二)曲线变形物体
- ArcGIS JavaScript API本地部署离线开发环境
- 算法——X^3+Y^3+Z^3=XYZ(水仙花数)
- 使用winpcap定制TCP包发送
- 广度搜索 -- 9.2 Word Ladder -- 求具体的路径 -- 图解
- swift中Any,AnyObject,AnyClass的区别
- 京东联盟API接口-京东订单查询接口-实时掌握订单情况
- 阿里巴巴正式宣布5.4亿现金战略投资中国万网
- 永洪科技怎么样_【永洪科技怎么样?】-看准网
- 变量命名神器 CODELF
- Windows下网络共享文件夹挂载到wsl系统
- ObjectARX开发笔记(一)——分别使用AcEdInputPointFilter和AcEdInputPointMonitor实现光标提示功能
- UGUI源码解析(二十二)ContentSizeFitter
热门文章
- Java_IO流_抽象类
- 关于requestAnimationFrame与setInterval的一点差异
- svn汉化包安装无效的解决办法
- swift UI专项训练39 用Swift实现摇一摇功能
- 深入理解java虚拟机---读后笔记(垃圾回收)
- boost库在工作(20)线程之五
- 在CLASSPATH中加载目录下所有的jar
- Docker Swarm删除节点
- 00-基于Vue的博客项目展示
- 【Linux 内核】调度器 ③ ( sched_class 调度类结构体分析 | next 字段 | enqueue_task 函数 | dequeue_task 函数 )