4444
4545from dpnp .dpnp_algo import *
4646from dpnp .dpnp_utils import *
47+ from dpnp .dpnp_array import dpnp_array
4748import dpnp
4849
4950
@@ -237,7 +238,8 @@ def correlate(x1, x2, mode='valid'):
237238
238239
239240def cov (x1 , y = None , rowvar = True , bias = False , ddof = None , fweights = None , aweights = None ):
240- """
241+ """cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None):
242+
241243 Estimate a covariance matrix, given data and weights.
242244
243245 For full documentation refer to :obj:`numpy.cov`.
@@ -248,7 +250,6 @@ def cov(x1, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=
248250 Dimension of input array ``m`` is limited by ``m.ndim > 2``.
249251 Size and shape of input arrays are supported to be equal.
250252 Prameters ``y`` is supported only with default value ``None``.
251- Prameters ``rowvar`` is supported only with default value ``True``.
252253 Prameters ``bias`` is supported only with default value ``False``.
253254 Prameters ``ddof`` is supported only with default value ``None``.
254255 Prameters ``fweights`` is supported only with default value ``None``.
@@ -280,8 +281,6 @@ def cov(x1, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=
280281 pass
281282 elif y is not None :
282283 pass
283- elif not rowvar :
284- pass
285284 elif bias :
286285 pass
287286 elif ddof is not None :
@@ -291,8 +290,14 @@ def cov(x1, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=
291290 elif aweights is not None :
292291 pass
293292 else :
294- if x1_desc .dtype != dpnp .float64 :
295- x1_desc = dpnp .get_dpnp_descriptor (dpnp .astype (x1 , dpnp .float64 ), copy_when_nondefault_queue = False )
293+ if not rowvar and x1 .shape [0 ] != 1 :
294+ x1 = x1 .get_array () if isinstance (x1 , dpnp_array ) else x1
295+ x1 = dpnp_array ._create_from_usm_ndarray (x1 .mT )
296+ x1 = dpnp .astype (x1 , dpnp .float64 ) if x1_desc .dtype != dpnp .float64 else x1
297+ x1_desc = dpnp .get_dpnp_descriptor (x1 , copy_when_nondefault_queue = False )
298+ elif x1_desc .dtype != dpnp .float64 :
299+ x1 = dpnp .astype (x1 , dpnp .float64 )
300+ x1_desc = dpnp .get_dpnp_descriptor (x1 , copy_when_nondefault_queue = False )
296301
297302 return dpnp_cov (x1_desc ).get_pyobj ()
298303
0 commit comments