def __init__(self, G, dim, rank):
self._cache = {"<STR_LIT>": None}<EOL>self._C0 = LRFreeFormCov(dim, rank)<EOL>self._C0.name = "<STR_LIT>"<EOL>self._C1 = FreeFormCov(dim)<EOL>self._C1.name = "<STR_LIT>"<EOL>G = atleast_2d(asarray(G, float))<EOL>self._G = G<EOL>self._Sxe = None<EOL>self._Sx = None<EOL>self._Lx = None<EOL>self._LxG = None<EOL>self._diag_LxGGLx = None<EOL>self._Lxe = None<EOL>self._LxGe = None<EOL>self._diag_LxGGLxe = None<EOL>Function.__init__(<EOL>self, "<STR_LIT>", composite=[("<STR_LIT>", self._C0), ("<STR_LIT>", self._C1)]<EOL>)<EOL>self._C0.listen(self._parameters_update)<EOL>self._C1.listen(self._parameters_update)<EOL>
Constructor.

Parameters
----------
dim : int
    Dimension d for the square matrices C₀ and C₁.
rank : int
    Maximum rank of the C₁ matrix.