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 any
argument is zero, then the geometric mean is zero. If all the arguments
are missing values, then the result is a missing value. Otherwise,
the result is the geometric mean of the nonmissing values.
Let
be the number of arguments with nonmissing values,
and let
be the values of those arguments. The geometric
mean is the
root of the product of the values:
Equivalently, the geometric
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, GEOMEAN 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 GEOMEANZ function.