anchor.diff:          double tol);
   ----
   Approximate a given probability distribution to a given tolerance.
  +
  +*Examples:*
  +[source,c]
  +----
  +double probs[3] = {0.5, 0.2, 0.3};
  +inform_dist *dist = inform_dist_approximate(probs, 3, 1e-3);
  +assert(dist);
  +// dist->histogram ~ {5, 2, 3}
  +inform_dist_free(dist);
  +----
  +[source,c]
  +----
  +double probs[2] = {1./3, 2./3};
  +inform_dist *dist = inform_dist_approximate(probs, 2, 1e-3);
  +assert(dist);
  +// dist->histogram ~ {1, 2}
  +inform_dist_free(dist);
  +----
  +[source,c]
  +----
  +double probs[4] = {1./3, 1./3, 1./6, 1./6};
  +inform_dist *dist = inform_dist_approximate(probs, 4, 1e-3);
  +assert(dist);
  +// dist->histogram ~ {333,333,166,166}
  +inform_dist_free(dist);
  +----
  +[source,c]
  +----
  +double probs[4] = {1./7, 2./7, 1./3, 10./42};
  +inform_dist *dist = inform_dist_approximate(probs, 4, 1e-3);
  +assert(dist);
  +// dist->histogram ~ {142,285,333,238}
  +inform_dist_free(dist);
  +----
   ****
   
   ****
  
positive.code: inform_dist* inform_dist_uniform(size_t n);
  ----
  Create a uniform distribution of a given size.
  ****
  
  ****
  
negative.code: 
  If the allocation fails or the source distribution is `NULL`, then the return value is
  `NULL`.
  
  *Examples:*
  [source,c]
  ----
  inform_dist *source = inform_dist_alloc(5);
  assert(source);
  for (int i = 0; i < (int) source->size; ++i)
      source->histogram[i] = i;
  // source->histogram ~ {0,1,2,3,4};
  
  inform_dist *target = inform_dist_dup(source);
  assert(target);
  // target->histogram ~ {0,1,2,3,4};
  
  inform_dist_free(target);
  inform_dist_free(source);
  ----
  ****
  
  ****
  