Prompt
When implementing or testing algorithms, ensure mathematical relationships and constraints are maintained throughout the computation. Test data should have plausible values that reflect real-world mathematical relationships, and algorithmic edge cases should be carefully handled to prevent mathematical inconsistencies.
Key areas to focus on:
-
Test data consistency: Ensure test values have plausible mathematical relationships. For example, if testing histogram data, the sum field should reflect realistic values based on bucket distributions rather than arbitrary numbers.
-
Interpolation and extrapolation boundaries: When algorithms involve interpolation or extrapolation (like counter increases), carefully choose test intervals and handle edge cases where extrapolation might produce invalid results (e.g., negative values for counters).
-
Numerical precision awareness: Be mindful of floating-point precision issues, especially in aggregation algorithms. Direct calculations may be more precise than incremental approaches for certain operations.
Example from histogram testing:
# Bad: Arbitrary sum value that doesn't match bucket distribution
h_test
# Good: Sum value that reflects realistic bucket distribution
h_test
This approach helps ensure algorithms behave correctly under various mathematical conditions and produce results that maintain expected mathematical properties.