anchor.diff:  
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
  --spec prop_join([?BLOOM:key(),...], [?BLOOM:key(),...]) -> true.                                        
  +-spec prop_join([?BLOOM:key(),...], [?BLOOM:key(),...]) -> true.
   prop_join(List1, List2) ->
       BSize = erlang:length(List1) + erlang:length(List2),
       B1 = ?BLOOM:add_list(newBloom(BSize, 0.1), List1),
  
positive.code: %% @doc measures false positives by adding 1..MaxElements into a new BF
  %%      and checking number of found items which are not in the BF
  measure_fp(DestFpr, MaxElements) ->
  	BF = newBloom(MaxElements, DestFpr),
      BF1 = for_to_ex(1, MaxElements, fun(I) -> I end, fun(I, B) -> ?BLOOM:add(B, I) end, BF),
  	NumNotIn = trunc(10 / DestFpr),
      %count found items which should not be in the bloom filter 
      NumFound = for_to_ex(MaxElements + 1, 
                           MaxElements + 1 + NumNotIn, 
                           fun(I) -> case ?BLOOM:is_element(BF1, I) of
                                         true -> 1;
                                         false -> 0
  
negative.code:     _ = ?BLOOM:add(BF, 5423452345),
      fprof:trace(stop),
      fprof:profile(file, "bloom_fprof.trace"),
      fprof:analyse([{dest, "bloom_fprof.analysis"}, {cols, 120}]),
      ok.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  newBloom(ElementNum, Fpr) ->
      HFCount = ?BLOOM:calc_HF_numEx(ElementNum, Fpr),
      Hfs = ?HFS:new(HFCount),
      ?BLOOM:new(ElementNum, Fpr, Hfs).
  
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  