clear MODULUS = 997; MAX_N = 10; table = cell(1, MODULUS); eqRels = cell(MAX_N, MAX_N); table = put([1], [1], table); for n = 2:MAX_N part = [n]; l = length(part); while l if l == 1 rel = ones(n); elseif part(1) == 1 rel = eye(n); else rel = compute_rel(part, table); end table = put(part, rel, table); if l > 2 && l < n eqRels{n, l} = cat(3, eqRels{n, l}, rel); end part = next_partition(part); l = length(part); end end save eq1to10 eqRels clear eqRels save table table %Workaround because I don't have enough memory to hold 677,545 equiv. rels. %on 11 elements. eq11 = zeros(11, 11, 0); for k = 3:10 save(['eq11_' num2str(k)], 'eq11'); end n = 11; part = [n]; l = length(part); while l < 11 if l > 2 rel = compute_rel(part, table); load(['eq11_' num2str(l)], 'eq11'); eq11 = cat(3, eq11, rel); save(['eq11_' num2str(l)], 'eq11'); end part = next_partition(part); l = length(part); end