If any argument is negative,
then the result is a missing value. A message appears in the log that
the negative argument is invalid, and _ERROR_ is set to 1. If all
the arguments are missing values, then the result is a missing value.
Otherwise, the result is the harmonic mean of the 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 nonmissing values,
and let
be the values of those arguments. The harmonic mean
is
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,
then the former argument is treated as zero. If you do not want SAS
to fuzz the extremely small values, then use the HARMEANZ function.