Each observation interval is a segment of time referred to as a good time interval. That is, it is difficult to efficiently compute the product of many numbers. Using a FOR loop is often very slow. The algorithm divides the array in half successively, making as many large-vector multiply operations as possible, hence making the overall result faster. Empty arrays are explicitly permitted and handled correctly.
Copying is minimized to improve performance for large arrays.
Again, empty arrays are explicitly permitted. The sets are passed as one dimensional IDL arrays of any numeric or string type. So for example, if you had two lists of filenames, and wanted to find the filenames that were common to both lists, you would use set intersection. The key difference is that the template value can be a scalar or an array of any type. The calling sequences are slightly different, but the function is essentially the same.