I struggled with that myself: should the comment for each function completely and locally describe its behavior? Or should there be an introductory paragraph once that describe "common" properties of IBA and then only note exceptions in the individual descriptions?

I wavered on it and am open to input.

For that matter, I also wondered if the nthreads parameter should be included at all.  The default is 0, which causes all the functions to examine the global "nthreads" attribute, which itself defaults to use the number of threads equal to the number of cores. The only time you would want to override this is if you were calling IBA functions from a multi-threaded app, and wanted to pass nthread=1 in code paths where you knew you were one of many threads and didn't want to spawn even more threads, if you catch my drift.  If your app had some code paths where you wanted to ensure that the thread itself did all the work, and other code paths where you wanted it to automatically spawn threads if that would help, then the single global attribute wouldn't be helpful. That's my thinking, anyway, please let me know if it would be preferred to get rid of this parameter entirely, i.e., if you think the extra complexity is not worth the flexibility.