Repository: ivy-llc/ivy

Issue:
BatchMatMulV3



Discussion:

Resolving patch:
diff --git a/ivy/functional/frontends/tensorflow/raw_ops.py b/ivy/functional/frontends/tensorflow/raw_ops.py
--- a/ivy/functional/frontends/tensorflow/raw_ops.py
+++ b/ivy/functional/frontends/tensorflow/raw_ops.py
@@ -716,4 +716,30 @@ def Real(input, Tout=ivy.float32, name="Real"):
     return ivy.Real(input, Tout=Tout)
 
 
+@to_ivy_arrays_and_back
+def BandedTriangularSolve(
+    matrix, 
+    rhs, 
+    lower=True, 
+    adjoint=False, 
+    name="BandedTriangularSolve",
+):
+    return ivy.BandedTriangularSolve(matrix, rhs, lower=lower, adjoint=adjoint)
+
+
+@to_ivy_arrays_and_back
+def BatchMatMul(x, y, adj_x=False, adj_y=False, name='BatchMatMul'):
+    return ivy.BatchMatMul(x, y, adj_x=adj_x, adj_y=adj_y)
+
+
+@to_ivy_arrays_and_back
+def BatchMatMulV2(x, y, adj_x=False, adj_y=False, name='BatchMatMulV2'):
+    return ivy.BatchMatMulV2(x, y, adj_x=adj_x, adj_y=adj_y)
+
+
+@to_ivy_arrays_and_back
+def BatchMatMulV3(x, y, Tout=ivy.Dtype, adj_x=False, adj_y=False, name='BatchMatMulV3'):
+    return ivy.BatchMatMulV3(x, y, Tout=Tout, adj_x=adj_x, adj_y=adj_y)
+    
+    
 Slice = to_ivy_arrays_and_back(map_raw_ops_alias(tf_frontend.slice))


Test patch:
diff --git a/ivy_tests/test_ivy/test_frontends/test_tensorflow/test_raw_ops.py b/ivy_tests/test_ivy/test_frontends/test_tensorflow/test_raw_ops.py
--- a/ivy_tests/test_ivy/test_frontends/test_tensorflow/test_raw_ops.py
+++ b/ivy_tests/test_ivy/test_frontends/test_tensorflow/test_raw_ops.py
@@ -3471,3 +3471,131 @@ def test_tensorflow_Real(
         input=x[0],
         Tout=Tout,
     )
+
+
+# BandedTriangularSolve
+@handle_frontend_test(
+    fn_tree="tensorflow.raw_ops.BandedTriangularSolve",
+    dtype_and_x=helpers.dtype_and_values(
+        available_dtypes=helpers.get_dtypes("float"),
+    ),
+    test_with_out=st.just(False),
+)
+def test_tensorflow_BandedTriangularSolve(
+    dtype_and_x,
+    frontend,
+    test_flags,
+    fn_tree,
+    on_device,
+    matrix, 
+    rhs, 
+    lower, 
+    adjoint,
+):
+    input_dtype, x = dtype_and_x
+    helpers.test_frontend_function(
+        input_dtypes=input_dtype,
+        test_flags=test_flags,
+        frontend=frontend,
+        fn_tree=fn_tree,
+        on_device=on_device,
+        matrix=x[0], 
+        rhs=x[1], 
+        lower=lower, 
+        adjoint=adjoint,
+    )    
+
+
+# BatchMatMul
+@handle_frontend_test(
+    fn_tree="tensorflow.raw_ops.BatchMatMul",
+    dtype_and_x=helpers.dtype_and_values(
+        available_dtypes=helpers.get_dtypes("float"),
+    ),
+    test_with_out=st.just(False),
+)
+def test_tensorflow_BatchMatMul(
+    dtype_and_x,
+    frontend,
+    test_flags,
+    fn_tree,
+    on_device,
+    adj_x, 
+    adj_y,
+):
+    input_dtype, x = dtype_and_x
+    helpers.test_frontend_function(
+        input_dtypes=input_dtype,
+        test_flags=test_flags,
+        frontend=frontend,
+        fn_tree=fn_tree,
+        on_device=on_device,
+        x=x[0],
+        y=x[1],
+        adj_x=adj_x, 
+        adj_y=adj_y,
+    )  
+
+
+# BatchMatMulV2
+@handle_frontend_test(
+    fn_tree="tensorflow.raw_ops.BatchMatMulV2",
+    dtype_and_x=helpers.dtype_and_values(
+        available_dtypes=helpers.get_dtypes("float"),
+    ),
+    test_with_out=st.just(False),
+)
+def test_tensorflow_BatchMatMulV2(
+    dtype_and_x,
+    frontend,
+    test_flags,
+    fn_tree,
+    on_device,
+    adj_x, 
+    adj_y,
+):
+    input_dtype, x = dtype_and_x
+    helpers.test_frontend_function(
+        input_dtypes=input_dtype,
+        test_flags=test_flags,
+        frontend=frontend,
+        fn_tree=fn_tree,
+        on_device=on_device,
+        x=x[0],
+        y=x[1],
+        adj_x=adj_x, 
+        adj_y=adj_y,
+    )  
+
+
+# BatchMatMulV3
+@handle_frontend_test(
+    fn_tree="tensorflow.raw_ops.BatchMatMulV3",
+    dtype_and_x=helpers.dtype_and_values(
+        available_dtypes=helpers.get_dtypes("float"),
+    ),
+    test_with_out=st.just(False),
+)
+def test_tensorflow_BatchMatMulV3(
+    dtype_and_x,
+    frontend,
+    test_flags,
+    fn_tree,
+    on_device,
+    Tout,
+    adj_x, 
+    adj_y,
+):
+    input_dtype, x = dtype_and_x
+    helpers.test_frontend_function(
+        input_dtypes=input_dtype,
+        test_flags=test_flags,
+        frontend=frontend,
+        fn_tree=fn_tree,
+        on_device=on_device,
+        x=x[0],
+        y=x[1],
+        Tout=Tout,
+        adj_x=adj_x, 
+        adj_y=adj_y,
+    )