This class represents the (weighted) geometric mean of vector $$x$$ with optional powers given by $$p$$.

GeoMean(x, p = NA_real_, max_denom = 1024)

# S4 method for GeoMean
to_numeric(object, values)

# S4 method for GeoMean
.domain(object)

# S4 method for GeoMean

# S4 method for GeoMean
name(x)

# S4 method for GeoMean
dim_from_args(object)

# S4 method for GeoMean
sign_from_args(object)

# S4 method for GeoMean
is_atom_convex(object)

# S4 method for GeoMean
is_atom_concave(object)

# S4 method for GeoMean
is_atom_log_log_convex(object)

# S4 method for GeoMean
is_atom_log_log_concave(object)

# S4 method for GeoMean
is_incr(object, idx)

# S4 method for GeoMean
is_decr(object, idx)

# S4 method for GeoMean
get_data(object)

# S4 method for GeoMean
copy(object, args = NULL, id_objects = list())

## Arguments

x

An Expression or numeric vector.

p

(Optional) A vector of weights for the weighted geometric mean. The default is a vector of ones, giving the unweighted geometric mean $$x_1^{1/n} \cdots x_n^{1/n}$$.

max_denom

(Optional) The maximum denominator to use in approximating p/sum(p) with w. If w is not an exact representation, increasing max_denom may offer a more accurate representation, at the cost of requiring more convex inequalities to represent the geometric mean. Defaults to 1024.

object

A GeoMean object.

values

A list of numeric values for the arguments

idx

An index into the atom.

args

An optional list that contains the arguments to reconstruct the atom. Default is to use current arguments of the atom.

id_objects

Currently unused.

## Details

$$\left(x_1^{p_1} \cdots x_n^{p_n} \right)^{\frac{1}{\mathbf{1}^Tp}}$$

The geometric mean includes an implicit constraint that $$x_i \geq 0$$ whenever $$p_i > 0$$. If $$p_i = 0, x_i$$ will be unconstrained. The only exception to this rule occurs when $$p$$ has exactly one nonzero element, say $$p_i$$, in which case GeoMean(x,p) is equivalent to $$x_i$$ (without the nonnegativity constraint). A specific case of this is when $$x \in \mathbf{R}^1$$.

## Methods (by generic)

• to_numeric(GeoMean): The (weighted) geometric mean of the elements of x.

• .domain(GeoMean): Returns constraints describing the domain of the node

• .grad(GeoMean): Gives the (sub/super)gradient of the atom w.r.t. each variable

• name(GeoMean): The name and arguments of the atom.

• dim_from_args(GeoMean): The atom is a scalar.

• sign_from_args(GeoMean): The atom is non-negative.

• is_atom_convex(GeoMean): The atom is not convex.

• is_atom_concave(GeoMean): The atom is concave.

• is_atom_log_log_convex(GeoMean): Is the atom log-log convex?

• is_atom_log_log_concave(GeoMean): Is the atom log-log concave?

• is_incr(GeoMean): The atom is weakly increasing in every argument.

• is_decr(GeoMean): The atom is not weakly decreasing in any argument.

• get_data(GeoMean): Returns list(w, dyadic completion, tree of dyads).

• copy(GeoMean): Returns a shallow copy of the GeoMean atom

## Slots

x

An Expression or numeric vector.

p

(Optional) A vector of weights for the weighted geometric mean. The default is a vector of ones, giving the unweighted geometric mean $$x_1^{1/n} \cdots x_n^{1/n}$$.

max_denom

(Optional) The maximum denominator to use in approximating p/sum(p) with w. If w is not an exact representation, increasing max_denom may offer a more accurate representation, at the cost of requiring more convex inequalities to represent the geometric mean. Defaults to 1024.

w

(Internal) A list of bigq objects that represent a rational approximation of p/sum(p).

approx_error

(Internal) The error in approximating p/sum(p) with w, given by $$\|p/\mathbf{1}^Tp - w\|_{\infty}$$.