If any argument is negative,
then the result is a null or missing value. A message appears in the
log that the negative argument is invalid. If all the arguments are
null or missing values, then the result is a null or missing value.
Otherwise, the result is the harmonic mean of the non-null or nonmissing
values.
If any argument is zero,
then the harmonic mean is zero. Otherwise, the harmonic mean is the
reciprocal of the arithmetic mean of the reciprocals of the values.
Let
be the number of arguments with non-null or nonmissing
values, and let
be the values of those arguments. The harmonic mean
is shown in this equation.
Floating-point arithmetic
often produces tiny numerical errors. Some computations that result
in zero when exact arithmetic is used might result in a tiny nonzero
value when floating-point arithmetic is used. Therefore, HARMEAN fuzzes
the values of arguments that are approximately zero. When the value
of one argument is extremely small relative to the largest argument,
the former argument is treated as zero. If you do not want SAS to
fuzz the extremely small values, then use the HARMEANZ function.