Mistake: equal ranks mean equal budgets
“CP rank 3 and Tucker ranks
(3, 3, 3)use the same storage.”
shape = (4, 4, 24)
cp = 3 * sum(shape)
tucker = 3**3 + 3 * sum(shape)
assert (cp, tucker) == (96, 123)
Tucker also stores a core: 27 more values here. 96 against 123.
This CP convention absorbs component weights into one factor; count 3 extra values if weights are stored separately. Match stored parameters, then report error on the same data. If budgets cannot match exactly, disclose the gap.