4848 check_stacked_2d ,
4949 check_stacked_square ,
5050 dpnp_cholesky ,
51+ dpnp_cond ,
5152 dpnp_det ,
5253 dpnp_eigh ,
5354 dpnp_inv ,
@@ -145,32 +146,61 @@ def cholesky(a, upper=False):
145146 return dpnp_cholesky (a , upper = upper )
146147
147148
148- def cond (input , p = None ):
149+ def cond (x , p = None ):
149150 """
150151 Compute the condition number of a matrix.
151152
152153 For full documentation refer to :obj:`numpy.linalg.cond`.
153154
154- Limitations
155- -----------
156- Input array is supported as :obj:`dpnp.ndarray`.
157- Parameter p=[None, 1, -1, 2, -2, dpnp.inf, -dpnp.inf, 'fro'] is supported.
155+ Parameters
156+ ----------
157+ x : {dpnp.ndarray, usm_ndarray}
158+ The matrix whose condition number is sought.
159+ p : {None, 1, -1, 2, -2, inf, -inf, "fro"}, optional
160+ Order of the norm used in the condition number computation.
161+ inf means the `dpnp.inf` object, and the Frobenius norm is
162+ the root-of-sum-of-squares norm. The default is ``None``.
163+
164+ Returns
165+ -------
166+ out : dpnp.ndarray
167+ The condition number of the matrix. May be infinite.
158168
159169 See Also
160170 --------
161- :obj:`dpnp.norm` : Matrix or vector norm.
162- """
171+ :obj:`dpnp.linalg.norm` : Matrix or vector norm.
163172
164- if not use_origin_backend (input ):
165- if p in [None , 1 , - 1 , 2 , - 2 , dpnp .inf , - dpnp .inf , "fro" ]:
166- result_obj = dpnp_cond (input , p )
167- result = dpnp .convert_single_elem_array_to_scalar (result_obj )
173+ Examples
174+ --------
175+ >>> import dpnp as np
176+ >>> a = np.array([[1, 0, -1], [0, 1, 0], [1, 0, 1]])
177+ >>> a
178+ array([[ 1, 0, -1],
179+ [ 0, 1, 0],
180+ [ 1, 0, 1]])
181+ >>> np.linalg.cond(a)
182+ array(1.41421356)
183+ >>> np.linalg.cond(a, 'fro')
184+ array(3.16227766)
185+ >>> np.linalg.cond(a, np.inf)
186+ array(2.)
187+ >>> np.linalg.cond(a, -np.inf)
188+ array(1.)
189+ >>> np.linalg.cond(a, 1)
190+ array(2.)
191+ >>> np.linalg.cond(a, -1)
192+ array(1.)
193+ >>> np.linalg.cond(a, 2)
194+ array(1.41421356)
195+ >>> np.linalg.cond(a, -2)
196+ array(0.70710678) # may vary
197+ >>> min(np.linalg.svd(a, compute_uv=False))*min(np.linalg.svd(np.linalg.inv(a), compute_uv=False))
198+ array(0.70710678) # may vary
168199
169- return result
170- else :
171- pass
200+ """
172201
173- return call_origin (numpy .linalg .cond , input , p )
202+ dpnp .check_supported_arrays_type (x )
203+ return dpnp_cond (x , p )
174204
175205
176206def det (a ):
@@ -409,6 +439,11 @@ def inv(a):
409439 out : (..., M, M) dpnp.ndarray
410440 (Multiplicative) inverse of the matrix a.
411441
442+ See Also
443+ --------
444+ :obj:`dpnp.linalg.cond` : Compute the condition number of a matrix.
445+ :obj:`dpnp.linalg.svd` : Compute the singular value decomposition.
446+
412447 Examples
413448 --------
414449 >>> import dpnp as np
@@ -710,11 +745,11 @@ def norm(x, ord=None, axis=None, keepdims=False):
710745 [ 2, 3, 4]])
711746
712747 >>> np.linalg.norm(a)
713- array(7.745966692414834 )
748+ array(7.74596669 )
714749 >>> np.linalg.norm(b)
715- array(7.745966692414834 )
750+ array(7.74596669 )
716751 >>> np.linalg.norm(b, 'fro')
717- array(7.745966692414834 )
752+ array(7.74596669 )
718753 >>> np.linalg.norm(a, np.inf)
719754 array(4.)
720755 >>> np.linalg.norm(b, np.inf)
@@ -733,16 +768,16 @@ def norm(x, ord=None, axis=None, keepdims=False):
733768 >>> np.linalg.norm(b, -1)
734769 array(6.)
735770 >>> np.linalg.norm(a, 2)
736- array(7.745966692414834 )
771+ array(7.74596669 )
737772 >>> np.linalg.norm(b, 2)
738- array(7.3484692283495345 )
773+ array(7.34846923 )
739774
740775 >>> np.linalg.norm(a, -2)
741776 array(0.)
742777 >>> np.linalg.norm(b, -2)
743- array(1.8570331885190563e-016 ) # may vary
778+ array(4.35106603e-18 ) # may vary
744779 >>> np.linalg.norm(a, 3)
745- array(5.8480354764257312 ) # may vary
780+ array(5.84803548 ) # may vary
746781 >>> np.linalg.norm(a, -3)
747782 array(0.)
748783
@@ -763,7 +798,7 @@ def norm(x, ord=None, axis=None, keepdims=False):
763798 >>> np.linalg.norm(m, axis=(1,2))
764799 array([ 3.74165739, 11.22497216])
765800 >>> np.linalg.norm(m[0, :, :]), np.linalg.norm(m[1, :, :])
766- (array(3.7416573867739413 ), array(11.224972160321824 ))
801+ (array(3.74165739 ), array(11.22497216 ))
767802
768803 """
769804
0 commit comments