Why You Should Use stableNorm() Instead of norm()

Why You Should Use stableNorm() Instead of norm(): A Lesson from Eigen Code Review

A one-word review comment on my Eigen MR revealed that hand-rolling normalization with .norm() silently breaks on extreme inputs. Eigen already had the fix — I just wasn’t using it.

March 27, 2026 · 5 min · Pavel Guzenfeld
Upgrading Householder Right-Side: BLAS-2 to BLAS-3

Upgrading Eigen's Householder Right-Side Application from BLAS-2 to BLAS-3

Eigen’s blocked Householder path only existed for left-side application. I added the right-side equivalent, upgrading M*Q from O(n) rank-1 updates to cache-friendly blocked matrix multiplies.

March 23, 2026 · 4 min · Pavel Guzenfeld
Debugging Doxygen: How .inc Files Break C++ Docs

Debugging Doxygen: How .inc Files Silently Break C++ Documentation

Eigen’s .inc plugin headers were read by Doxygen but never preprocessed as C++ — meaning macros like EIGEN_PARSED_BY_DOXYGEN were silently ignored. Here’s how I verified it in Docker and what the one-line fix looks like.

March 21, 2026 · 8 min · Pavel Guzenfeld
Modified Gram-Schmidt vs Householder QR

Modified Gram-Schmidt vs Householder QR: A Performance Showdown in Eigen

I submitted a Modified Gram-Schmidt QR decomposition to Eigen and a maintainer asked: why? Here’s the benchmark data that answered the question.

March 21, 2026 · 7 min · Pavel Guzenfeld
Fixing an Infinite Loop in Eigen's 128-bit Division

Fixing an Infinite Loop in Eigen's 128-bit Integer Division

How a missing overflow check in Eigen’s TensorUInt128 division operator caused an infinite loop for any dividend above 2^127 — and the one-line fix that stopped it.

March 20, 2026 · 4 min · Pavel Guzenfeld
How GCC's fill_n Regressed Eigen's AutoDiffScalar

How GCC's std::fill_n Silently Regressed Eigen's AutoDiffScalar Performance

A performance optimization in Eigen’s fill path assumed all scalar types are equal. GCC’s libstdc++ disagreed — and AutoDiffScalar paid the price.

March 20, 2026 · 4 min · Pavel Guzenfeld
Fixing GCC False-Positive Warnings in Eigen

Fixing GCC False-Positive Warnings in Eigen: A Deep Dive into -Warray-bounds at -O3

How a GCC 13 false-positive -Warray-bounds warning in Eigen’s TensorContraction led to a lesson about if constexpr, C++14 portability, and the right way to suppress compiler warnings in a large codebase.

March 18, 2026 · 4 min · Pavel Guzenfeld