@@ -239,8 +239,8 @@ def test_random_uniform_boundaries(dtype):
239239 backend = numpy_backend .NumPyBackend ()
240240 a = backend .random_uniform ((4 , 4 ), seed = 10 , dtype = dtype )
241241 b = backend .random_uniform ((4 , 4 ), (lb , ub ), seed = 10 , dtype = dtype )
242- assert ((a >= 0 ).all () and (a <= 1 ).all () and
243- ( b >= lb ). all () and (b <= ub ).all ())
242+ assert ((a >= 0 ).all () and (a <= 1 ). all () and ( b >= lb ).all () and
243+ (b <= ub ).all ())
244244
245245
246246def test_random_uniform_behavior ():
@@ -329,8 +329,8 @@ def __call__(self, x):
329329 return np .dot (H , x )
330330
331331 mv = LinearOperator (shape = ((D ,), (D ,)), dtype = dtype )
332- eta1 , U1 = backend .eigsh_lanczos (mv , reorthogonalize = True , ndiag = 1 ,
333- tol = 10 ** (- 12 ), delta = 10 ** (- 12 ))
332+ eta1 , U1 = backend .eigsh_lanczos (
333+ mv , reorthogonalize = True , ndiag = 1 , tol = 10 ** (- 12 ), delta = 10 ** (- 12 ))
334334 eta2 , U2 = np .linalg .eigh (H )
335335 v2 = U2 [:, 0 ]
336336 v2 = v2 / sum (v2 )
@@ -353,7 +353,7 @@ def test_eigsh_lanczos_raises():
353353def test_eigsh_lanczos_raises_error_for_incompatible_shapes ():
354354 backend = numpy_backend .NumPyBackend ()
355355 A = backend .randn ((4 , 4 ), dtype = np .float64 )
356- init = backend .randn ((3 , ), dtype = np .float64 )
356+ init = backend .randn ((3 ,), dtype = np .float64 )
357357 with pytest .raises (ValueError ):
358358 backend .eigsh_lanczos (A , initial_state = init )
359359
@@ -371,7 +371,7 @@ def test_eigsh_lanczos_raises_error_for_untyped_A():
371371def test_eigsh_lanczos_raises_error_for_bad_initial_state ():
372372 backend = numpy_backend .NumPyBackend ()
373373 D = 16
374- init = [1 ]* D
374+ init = [1 ] * D
375375 M = backend .randn ((D , D ), dtype = np .float64 )
376376
377377 def mv (x ):
@@ -383,9 +383,10 @@ def mv(x):
383383
384384@pytest .mark .parametrize ("a, b, expected" , [
385385 pytest .param (1 , 1 , 2 ),
386- pytest .param (1. , np .ones ((1 , 2 , 3 )), 2 * np .ones ((1 , 2 , 3 ))),
387- pytest .param (2. * np .ones (()), 1. , 3. * np .ones ((1 , 2 , 3 ))),
388- pytest .param (2. * np .ones (()), 1. * np .ones ((1 , 2 , 3 )), 3. * np .ones ((1 , 2 , 3 ))),
386+ pytest .param (1. , np .ones ((1 , 2 , 3 )), 2 * np .ones ((1 , 2 , 3 ))),
387+ pytest .param (2. * np .ones (()), 1. , 3. * np .ones ((1 , 2 , 3 ))),
388+ pytest .param (2. * np .ones (()), 1. * np .ones ((1 , 2 , 3 )), 3. * np .ones (
389+ (1 , 2 , 3 ))),
389390])
390391def test_addition (a , b , expected ):
391392 backend = numpy_backend .NumPyBackend ()
@@ -399,7 +400,7 @@ def test_addition(a, b, expected):
399400
400401@pytest .mark .parametrize ("a, b, expected" , [
401402 pytest .param (1 , 1 , 0 ),
402- pytest .param (2. , 1. * np .ones ((1 , 2 , 3 )), 1. * np .ones ((1 , 2 , 3 ))),
403+ pytest .param (2. , 1. * np .ones ((1 , 2 , 3 )), 1. * np .ones ((1 , 2 , 3 ))),
403404 pytest .param (np .ones ((1 , 2 , 3 )), 1. , np .zeros ((1 , 2 , 3 ))),
404405 pytest .param (np .ones ((1 , 2 , 3 )), np .ones ((1 , 2 , 3 )), np .zeros ((1 , 2 , 3 ))),
405406])
@@ -415,7 +416,7 @@ def test_subtraction(a, b, expected):
415416
416417@pytest .mark .parametrize ("a, b, expected" , [
417418 pytest .param (1 , 1 , 1 ),
418- pytest .param (2. , 1. * np .ones ((1 , 2 , 3 )), 2. * np .ones ((1 , 2 , 3 ))),
419+ pytest .param (2. , 1. * np .ones ((1 , 2 , 3 )), 2. * np .ones ((1 , 2 , 3 ))),
419420 pytest .param (np .ones ((1 , 2 , 3 )), 1. , np .ones ((1 , 2 , 3 ))),
420421 pytest .param (np .ones ((1 , 2 , 3 )), np .ones ((1 , 2 , 3 )), np .ones ((1 , 2 , 3 ))),
421422])
@@ -431,9 +432,10 @@ def test_multiply(a, b, expected):
431432
432433@pytest .mark .parametrize ("a, b, expected" , [
433434 pytest .param (2. , 2. , 1. ),
434- pytest .param (2. , 0.5 * np .ones ((1 , 2 , 3 )), 4. * np .ones ((1 , 2 , 3 ))),
435- pytest .param (np .ones (()), 2. , 0.5 * np .ones ((1 , 2 , 3 ))),
436- pytest .param (np .ones (()), 2. * np .ones ((1 , 2 , 3 )), 0.5 * np .ones ((1 , 2 , 3 ))),
435+ pytest .param (2. , 0.5 * np .ones ((1 , 2 , 3 )), 4. * np .ones ((1 , 2 , 3 ))),
436+ pytest .param (np .ones (()), 2. , 0.5 * np .ones ((1 , 2 , 3 ))),
437+ pytest .param (
438+ np .ones (()), 2. * np .ones ((1 , 2 , 3 )), 0.5 * np .ones ((1 , 2 , 3 ))),
437439])
438440def test_divide (a , b , expected ):
439441 backend = numpy_backend .NumPyBackend ()
@@ -531,7 +533,7 @@ def test_eigs_raises_error_for_unsupported_which(which):
531533def test_eigs_raises_error_for_incompatible_shapes ():
532534 backend = numpy_backend .NumPyBackend ()
533535 A = backend .randn ((4 , 4 ), dtype = np .float64 )
534- init = backend .randn ((3 , ), dtype = np .float64 )
536+ init = backend .randn ((3 ,), dtype = np .float64 )
535537 with pytest .raises (ValueError ):
536538 backend .eigs (A , initial_state = init )
537539
@@ -559,7 +561,7 @@ def test_eigs_raises_error_for_untyped_A():
559561def test_eigs_raises_error_for_bad_initial_state ():
560562 backend = numpy_backend .NumPyBackend ()
561563 D = 16
562- init = [1 ]* D
564+ init = [1 ] * D
563565 M = backend .randn ((D , D ), dtype = np .float64 )
564566
565567 def mv (x ):
@@ -609,3 +611,21 @@ def test_matrix_inv_raises(dtype):
609611 matrix = backend .randn ((4 , 4 , 4 ), dtype = dtype , seed = 10 )
610612 with pytest .raises (ValueError ):
611613 backend .inv (matrix )
614+
615+
616+ @pytest .mark .parametrize ("dtype" , [np .float64 , np .complex128 ])
617+ def test_broadcast_right_multiplication (dtype ):
618+ backend = numpy_backend .NumPyBackend ()
619+ tensor1 = backend .randn ((2 , 4 , 3 ), dtype = dtype , seed = 10 )
620+ tensor2 = backend .randn ((3 ,), dtype = dtype , seed = 10 )
621+ out = backend .broadcast_right_multiplication (tensor1 , tensor2 )
622+ np .testing .assert_allclose (out , tensor1 * tensor2 )
623+
624+
625+ def test_broadcast_right_multiplication_raises ():
626+ dtype = np .float64
627+ backend = numpy_backend .NumPyBackend ()
628+ tensor1 = backend .randn ((2 , 4 , 3 ), dtype = dtype , seed = 10 )
629+ tensor2 = backend .randn ((3 , 3 ), dtype = dtype , seed = 10 )
630+ with pytest .raises (ValueError ):
631+ backend .broadcast_right_multiplication (tensor1 , tensor2 )
0 commit comments