{"slug": "eigen", "name": "Eigen", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 5, "commenters": 7, "warners": 0, "score": 4.996, "rising": -0.31, "first": "2025-12-17", "latest": "2026-10-01", "why": "I use the Eigen matrix library as a replacement for Numpy when I need more performance", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 5, "neutral": 2, "compare": 0, "warn": 0}, "spark": [0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "I use the Eigen matrix library as a replacement for Numpy when I need more performance", "kind": "", "icon": true, "domain": "gitlab.io", "github_repo": null, "official_url": "https://eigen.tuxfamily.org", "pricing": "", "aliases": ["Eigen"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 798666528, "item_id": 49916658, "url": "https://news.ycombinator.com/item?id=49916658", "by": "0x0f0f0f", "date": "2026-10-01", "stance": "recommend", "quote": "Found this gem. A self-hosted, open source alternative to Google Workspace", "excerpt": "Found this gem. A self-hosted, open source alternative to Google Workspace: mail, drive, docs, sheets, slides, calendar and chat. Built on vite, tanstack, tailwind and modern TS stack. Finally something that is not nextcloud", "context": "", "use_case": "self-hosted office suite", "switched_from": "", "story": "Eigen: Self-hosted alternative to Google Workspace"}, {"id": 779105040, "item_id": 48694065, "url": "https://news.ycombinator.com/item?id=48694065", "by": "rapatel0", "date": "2026-06-26", "stance": "recommend", "quote": "Look into the Eigen library.", "excerpt": "Look into the Eigen library. They use template meta programming to chain linear algebra operations in a way that the compiler should be able to optimize memory layout and kernels for vector instructions. Might give you some ideas. https://libeigen.gitlab.io/ Though you can expect very verbose compiler output. (I had 35 pages of compiler output output for a single type error once). Probably Nbd with llms.", "context": "", "use_case": "C++ linear algebra expression templates", "switched_from": "", "story": "A Tiny Compiler for Data-Parallel Kernels"}, {"id": 772363504, "item_id": 48272719, "url": "https://news.ycombinator.com/item?id=48272719", "by": "addaon", "date": "2026-05-25", "stance": "recommend", "quote": "See e.g. the very-popular Eigen library", "excerpt": "See e.g. the very-popular Eigen library, in which the type CommaInitializer basically exists for the sole purpose of overloading `operator,`, allowing a cleaner matrix initialization syntax. https://gitlab.com/libeigen/eigen/blob/master/Eigen/src/Core/CommaInitializer.h", "context": "", "use_case": "Matrix math", "switched_from": "", "story": null}, {"id": 756744336, "item_id": 47296521, "url": "https://news.ycombinator.com/item?id=47296521", "by": "ahartmetz", "date": "2026-03-08", "stance": "recommend", "quote": "What you did sounds like Eigen, which probably takes expression templates much further than you did", "excerpt": "It is pretty well known that C++ templates really are dynamically typed, it's compile time duck typing. What you did sounds like Eigen, which probably takes expression templates much further than you did due to the long time it's been around. It is weirdly absent from its documentation, but Eigen does have explicit SIMD support for several architectures and SIMD instruction sets. https://libeigen.gitlab.io/", "context": "", "use_case": "", "switched_from": "", "story": "Lisp-style C++ template meta programming"}, {"id": 740943200, "item_id": 46308950, "url": "https://news.ycombinator.com/item?id=46308950", "by": "drnick1", "date": "2025-12-17", "stance": "recommend", "quote": "I use the Eigen matrix library as a replacement for Numpy when I need more performance", "excerpt": "Any reason why you couldn't do this in C/C++? I use the Eigen matrix library as a replacement for Numpy when I need more performance and the code looks surprisingly very similar.", "context": "", "use_case": "matrix library replacing NumPy for speed", "switched_from": "", "story": "Learning Fortran (2024)"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["self-hosted office suite", "c++ linear algebra expression templates", "matrix math", "linear algebra library", "matrix library replacing numpy for speed"], "compared": [], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=49916657", "title": "Eigen: Self-hosted alternative to Google Workspace", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48673115", "title": "A Tiny Compiler for Data-Parallel Kernels", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48228618", "title": "item 48228618", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47565365", "title": "C++26 is done ISO C++ standards meeting, Trip Report", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47292029", "title": "Lisp-style C++ template meta programming", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46389338", "title": "Easily Dealing with Any-Dimensional Planes", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 1, "neutral": 1}, "2026-01": {}, "2026-02": {}, "2026-03": {"recommend": 1, "neutral": 1}, "2026-04": {}, "2026-05": {"recommend": 1}, "2026-06": {"recommend": 1}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {"recommend": 1}}, "quotes": [{"id": 798666528, "item_id": 49916658, "url": "https://news.ycombinator.com/item?id=49916658", "by": "0x0f0f0f", "date": "2026-10-01", "stance": "recommend", "quote": "Found this gem. A self-hosted, open source alternative to Google Workspace", "excerpt": "Found this gem. A self-hosted, open source alternative to Google Workspace: mail, drive, docs, sheets, slides, calendar and chat. Built on vite, tanstack, tailwind and modern TS stack. Finally something that is not nextcloud", "context": "", "use_case": "self-hosted office suite", "switched_from": "", "story": "Eigen: Self-hosted alternative to Google Workspace"}, {"id": 779105040, "item_id": 48694065, "url": "https://news.ycombinator.com/item?id=48694065", "by": "rapatel0", "date": "2026-06-26", "stance": "recommend", "quote": "Look into the Eigen library.", "excerpt": "Look into the Eigen library. They use template meta programming to chain linear algebra operations in a way that the compiler should be able to optimize memory layout and kernels for vector instructions. Might give you some ideas. https://libeigen.gitlab.io/ Though you can expect very verbose compiler output. (I had 35 pages of compiler output output for a single type error once). Probably Nbd with llms.", "context": "", "use_case": "C++ linear algebra expression templates", "switched_from": "", "story": "A Tiny Compiler for Data-Parallel Kernels"}, {"id": 772363504, "item_id": 48272719, "url": "https://news.ycombinator.com/item?id=48272719", "by": "addaon", "date": "2026-05-25", "stance": "recommend", "quote": "See e.g. the very-popular Eigen library", "excerpt": "See e.g. the very-popular Eigen library, in which the type CommaInitializer basically exists for the sole purpose of overloading `operator,`, allowing a cleaner matrix initialization syntax. https://gitlab.com/libeigen/eigen/blob/master/Eigen/src/Core/CommaInitializer.h", "context": "", "use_case": "Matrix math", "switched_from": "", "story": null}, {"id": 761376304, "item_id": 47586019, "url": "https://news.ycombinator.com/item?id=47586019", "by": "aw1621107", "date": "2026-03-31", "stance": "neutral", "quote": "You see something similar with Eigen [2]", "excerpt": "> The example is false because that's not how you would write an expression template for given computation OK, so how would you write an expression template for the given computation, then? > Expression templates do not rely on O1, O2 or O3 levels being set - they work the same way in O0 too and that may be the hint you were looking for. This claim confuses me given how expression templates seem to work in practice? ", "context": "", "use_case": "", "switched_from": "", "story": "C++26 is done ISO C++ standards meeting, Trip Report"}, {"id": 756744336, "item_id": 47296521, "url": "https://news.ycombinator.com/item?id=47296521", "by": "ahartmetz", "date": "2026-03-08", "stance": "recommend", "quote": "What you did sounds like Eigen, which probably takes expression templates much further than you did", "excerpt": "It is pretty well known that C++ templates really are dynamically typed, it's compile time duck typing. What you did sounds like Eigen, which probably takes expression templates much further than you did due to the long time it's been around. It is weirdly absent from its documentation, but Eigen does have explicit SIMD support for several architectures and SIMD instruction sets. https://libeigen.gitlab.io/", "context": "", "use_case": "", "switched_from": "", "story": "Lisp-style C++ template meta programming"}, {"id": 742930768, "item_id": 46433173, "url": "https://news.ycombinator.com/item?id=46433173", "by": "eulgro", "date": "2025-12-30", "stance": "neutral", "quote": "That's also how Eigen defines it", "excerpt": "That's also how Eigen defines it: https://libeigen.gitlab.io/eigen/docs-nightly/classEigen_1_1Hyperplane.html Basically this is the ax^2 + bx + c + d = 0 in 3D space.", "context": "", "use_case": "Linear algebra library", "switched_from": "", "story": "Easily Dealing with Any-Dimensional Planes"}, {"id": 740943200, "item_id": 46308950, "url": "https://news.ycombinator.com/item?id=46308950", "by": "drnick1", "date": "2025-12-17", "stance": "recommend", "quote": "I use the Eigen matrix library as a replacement for Numpy when I need more performance", "excerpt": "Any reason why you couldn't do this in C/C++? I use the Eigen matrix library as a replacement for Numpy when I need more performance and the code looks surprisingly very similar.", "context": "", "use_case": "matrix library replacing NumPy for speed", "switched_from": "", "story": "Learning Fortran (2024)"}]}