#!/usr/bin/env python3 """ Test SMEM-P coordinate mapping for collisions. Mapping: (m,n) -> ((m, n%16), 0, ((n//16)%4, n//64), 0) Offset: m*64 + (n%16) + ((n//16)%4)*16 + (n//64)*8192 """ def compute_offset(m, n): n0 = n % 16 n1 = (n // 16) % 4 n2 = n // 64 offset = m * 64 + n0 + n1 * 16 + n2 * 8192 return offset, (m, n0, n1, n2) # Test bijection offsets = set() collisions = [] for m in range(128): for n in range(128): offset, _ = compute_offset(m, n) if offset in offsets: collisions.append(((m,n), offset)) offsets.add(offset) print(f"Total positions: {128*128} = {128*128}") print(f"Unique offsets: {len(offsets)}") print(f"Collisions: {len(collisions)}") if collisions: print("First few collisions:", collisions[:5]) # Check offset range min_offset = min(offsets) max_offset = max(offsets) print(f"Offset range: {min_offset} .. {max_offset}") print(f"Expected range: 0 .. 16383") # Test specific coordinates test_coords = [(0,0), (0,1), (0,15), (0,16), (0,63), (0,64), (0,127), (1,0), (1,1), (1,127), (127,0), (127,63), (127,64), (127,127)] print("\nSample offsets:") for m,n in test_coords: offset, decomp = compute_offset(m,n) print(f"({m},{n}) -> {decomp} = offset {offset}") # Verify formula matches layout stride # Layout: ((128,16),1,(4,2),1):((64,1),0,(16,8192),0) # Stride for (m,n0,n1,n2): m*64 + n0*1 + n1*16 + n2*8192 print("\nLayout stride check: OK" if max_offset == 16383 and len(offsets) == 16384 else "Layout mismatch")