Summary
1. `safe_epsilon` ignores user's requested epsilon (`sve/types.rs:72-84`)
Always returns precision floor (1e-8 for f64, ~1.57e-16 for Df64). User's epsilon is only used for type selection. Should be `max(epsilon, precision_floor)`.
2. `determine_sve_general` never exploits centrosymmetry (`sve/compute.rs:265-279`)
Both if/else branches return `NonCentrosymmSVE`. Dead code. Additionally, passing centrosymmetric kernel to `NonCentrosymmSVE` may produce incorrect results since SVEHints return half-domain segments.
3. Minor: `truncate` edge cases (`sve/compute.rs:330, 361-373`)
- Panics on `max_num_svals = Some(0)`
- Silently drops entire even/odd lists, causing `postprocess` to panic
Severity
Low — performance issue (1), potentially incorrect for public API users (2), edge cases (3).
Summary
1. `safe_epsilon` ignores user's requested epsilon (`sve/types.rs:72-84`)
Always returns precision floor (1e-8 for f64, ~1.57e-16 for Df64). User's epsilon is only used for type selection. Should be `max(epsilon, precision_floor)`.
2. `determine_sve_general` never exploits centrosymmetry (`sve/compute.rs:265-279`)
Both if/else branches return `NonCentrosymmSVE`. Dead code. Additionally, passing centrosymmetric kernel to `NonCentrosymmSVE` may produce incorrect results since SVEHints return half-domain segments.
3. Minor: `truncate` edge cases (`sve/compute.rs:330, 361-373`)
Severity
Low — performance issue (1), potentially incorrect for public API users (2), edge cases (3).