Summary
strided-einsum2/src/contiguous.rs has 6 nearly identical prepare_* functions:
prepare_input_view, prepare_input_owned
prepare_output_view, prepare_output_owned
- (plus backend-generic variants)
All follow the same pattern: extract dims/strides → try_fuse_group() twice → check REQUIRES_UNIT_STRIDE → conditionally copy via HPTT.
Proposal
Consolidate into 2 core functions (prepare_input, prepare_output) with ownership kind as a parameter. Estimated ~200 lines reduction.
Risk
Low. The splitting is purely organizational; semantics remain identical.