torch.ExpandShape
export type ExpandShape<S extends Shape, T extends Shape> = number extends S['length']
? DynamicShape
: number extends T['length']
? DynamicShape
: T['length'] extends number
? S['length'] extends number
? T['length'] extends S['length']
? ExpandShapeImpl<S, T>
: DynamicShape // Different lengths handled at runtime
: DynamicShape
: DynamicShape;Sextends ShapeTextends ShapeCompute output shape of expand operation. Validates that each dimension is either:
- Equal to target
- 1 (can broadcast)
- Target is -1 (keep original)
Examples
type A = ExpandShape<readonly [3, 1], readonly [3, 4]>; // readonly [3, 4] ✓
type B = ExpandShape<readonly [3, 4], readonly [3, 5]>; // expand_error_incompatible<4, 5> ✗
type C = ExpandShape<readonly [1, 4], readonly [3, 4]>; // readonly [3, 4] ✓