anchor.diff:        #hyper{registers = RightRegisters} = Right) when
         Left#hyper.m =:= Right#hyper.m ->
   
  -
  -    NewRegisters = lists:zipwith(fun max/2,
  -                                 tuple_to_list(LeftRegisters),
  -                                 tuple_to_list(RightRegisters)),
  -
  -    Left#hyper{registers = list_to_tuple(NewRegisters)}.
  +    NewRegisters = array:map(fun (Index, LeftValue) ->
  +                                     max(LeftValue,
  +                                         array:get(Index, RightRegisters))
  +                             end, LeftRegisters),
  +
  +    Left#hyper{registers = NewRegisters}.
   
   card(#hyper{alpha = Alpha, m = M, registers = Registers}) ->
       RegistersPow2 =
  
positive.code: 
  
  generate_unique(N) ->
      %% Rand = [random:uniform(100000000000000) || _ <- lists:seq(1, N)],
      %% sets:to_list(
      %%   generate_unique(
      %%     %% sets:from_list(Rand),
      %%     sets:from_list(random_bytes(N)),
      %%     N)).
  
      generate_unique(lists:usort(random_bytes(N)), N).
  
  
  
negative.code: -module(hyper).
  -include_lib("eunit/include/eunit.hrl").
  
  -export([new/1, insert/2, card/1, union/2]).
  
  -record(hyper, {alpha, p, m, registers}).
  
  