codecov[bot]: # [Codecov](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=h1) Report
> Merging [#392](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=desc) into [master](https://codecov.io/gh/OpenMined/PySyft/commit/34af4f778c2b2f1a16a5a8aa505c37b7d9b18009?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/OpenMined/PySyft/pull/392/graphs/tree.svg?src=pr&width=650&token=W0kQS1vaXB&height=150)](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master     #392      +/-   ##
==========================================
+ Coverage   99.52%   99.53%   +<.01%     
==========================================
  Files           4        4              
  Lines        1701     1725      +24     
==========================================
+ Hits         1693     1717      +24     
  Misses          8        8
```


| [Impacted Files](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [PySyft/tests/test\_math.py](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=tree#diff-UHlTeWZ0L3Rlc3RzL3Rlc3RfbWF0aC5weQ==) | `100% <0%> (ø)` | :arrow_up: |
| [PySyft/tests/test\_tensor.py](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=tree#diff-UHlTeWZ0L3Rlc3RzL3Rlc3RfdGVuc29yLnB5) | `99.35% <0%> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=footer). Last update [34af4f7...8e876e2](https://codecov.io/gh/OpenMined/PySyft/pull/392?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

bharathgs: Also, update the *__init__.py* as well.
diff --git a/syft/__init__.py b/syft/__init__.py
index 43b3fa7b10..cada8b5181 100644
--- a/syft/__init__.py
+++ b/syft/__init__.py
@@ -7,7 +7,8 @@ from syft import nonlin
 from syft.tensor import equal, TensorBase
 from syft.math import cumprod, cumsum, ceil, dot, matmul, addmm, addcmul
 from syft.math import addcdiv, addmv, bmm, addbmm, baddbmm, transpose
-from syft.math import unsqueeze, zeros, ones, rand, randn, mm, fmod, diag, lerp, renorm, numel
+from syft.math import unsqueeze, zeros, ones, rand, randn, mm, fmod, diag
+from syft.math import lerp, renorm, numel, cross
 
 s = str(he)
 s += str(nn)
@@ -26,3 +27,4 @@ s += str(fmod)
 s += str(lerp)
 s += str(numel)
 s += str(renorm)
+s += str(cross)
diff --git a/syft/math.py b/syft/math.py
index 4d395a6a0d..207942c75b 100644
--- a/syft/math.py
+++ b/syft/math.py
@@ -20,7 +20,7 @@ __all__ = [
     'cumprod', 'cumsum', 'ceil', 'dot', 'floor', 'matmul', 'addmm', 'addcmul',
     'addcdiv', 'addmv', 'bmm', 'addbmm', 'baddbmm', 'sigmoid', 'unsqueeze',
     'sin', 'sinh', 'cos', 'cosh', 'tan', 'tanh', 'zeros', 'ones', 'rand',
-    'randn', 'mm', 'fmod', 'diag', 'lerp', 'renorm', 'numel'
+    'randn', 'mm', 'fmod', 'diag', 'lerp', 'renorm', 'numel', 'cross'
 ]
 
 
@@ -1008,3 +1008,49 @@ def split(tensor, split_size, axis=0):
     list_ = np.array_split(tensor.data, split_according, axis)
 
     return list(map(lambda x: TensorBase(x), list_))
+
+
+def cross(input, other, dim=-1):
+    """
+    Computes cross products between two tensors in the given dimension
+    The two vectors must have the same size, and the size of the dim
+    dimension should be 3.
+
+    Parameters
+    ----------
+
+    input: TensorBase
+        the first input tensor
+
+    other: TensorBase
+        the second input tensor
+
+    dim: int, optional
+        the dimension to take the cross-product in. Default is -1
+
+    Returns
+    -------
+    TensorBase: The result Tensor
+    """
+    input = _ensure_tensorbase(input)
+    other = _ensure_tensorbase(other)
+
+    if input.encrypted or other.encrypted:
+        return NotImplemented
+
+    # Verify that the shapes of both vectors are same
+    if input.shape() != other.shape():
+        raise ValueError('inconsistent dimensions {} and {}'.format(
+            input.shape(), other.shape()))
+
+    # verify that the given dim is valid
+    if dim < -len(input.shape()) or dim >= len(input.shape()):
+        raise ValueError('invalid dim. Should be between {} and {}'.format(
+            -len(input.shape()), len(input.shape()) - 1))
+
+    # verify that the size of dimension dim is 3
+    if input.shape()[dim] != 3:
+        raise ValueError('size of dimension {}(dim) is {}. Should be 3'.format(
+            dim, input.shape()[-1]))
+
+    return TensorBase(np.cross(input, other, axis=dim))
diff --git a/syft/tensor.py b/syft/tensor.py
index 89f23c3b05..f5dadf7f7d 100644
--- a/syft/tensor.py
+++ b/syft/tensor.py
@@ -3605,3 +3605,24 @@ class TensorBase(object):
             return NotImplemented
 
         return syft.math.split(self, split_size, axis)
+
+    def cross(self, tensor, dim=-1):
+        """
+        Computes cross products between two tensors in the given dimension
+        The two vectors must have the same size, and the size of the dim
+        dimension should be 3.
+
+        Parameters
+        ----------
+
+        tensor: TensorBase
+            the second input tensor
+
+        dim: int, optional
+            the dimension to take the cross-product in. Default is -1
+
+        Returns
+        -------
+        TensorBase: The result Tensor
+        """
+        return syft.math.cross(self, tensor, dim)

Implement Default cross Functionality for Base Tensor Type.
<!-- Please make sure that you review this: https://github.com/OpenMined/Docs/blob/master/contributing/guidelines.md  -->
<!-- If you are looking to file a bug make sure to look at the .github/BUG_ISSUE_TEMPLATE.md -->


#### User story: 
As a Data Scientist using Syft's Base Tensor type, I want to leverage a default method for computing operations on a Tensor of arbitrary type. For this ticket to be complete `cross` should return a new tensor. For a reference on the operation these perform check out [PyTorch's](http://pytorch.org/docs/master/torch.html#torch.cross) documentation.

<!-- Provide a detailed explaination about the proposed feature, you can draw inspiration from something like this: 
https://github.com/OpenMined/PySyft/issues/227 or https://github.com/OpenMined/PySyft/issues/12 -->

#### Acceptance Criteria:

<!-- Provide an outline af all the things that needs to be addressed in order to close this Issue,
be as descriptive as possible -->
 - [ ] If the Base Tensor type's attribute "encrypted" is set to True, it should return a NotImplemented error.
 - [ ] corresponding unit tests demonstrating the correct operation on the Base Tensor type implemented over int and float Tensors.
 - [ ] inline documentation as described over [here](https://github.com/OpenMined/PySyft/blob/85bc68e81a2f4bfc0f0bf6c4252b88d6d7b54004/syft/math.py#L5). 

<!-- Thanks for your contributions! -->

diff --git a/tests/test_math.py b/tests/test_math.py
index 09aad0a9f7..c90a0c3cb9 100644
--- a/tests/test_math.py
+++ b/tests/test_math.py
@@ -441,3 +441,31 @@ class SplitTests(unittest.TestCase):
             self.assertTrue(syft.equal(split.shape(), target_shape))
             self.assertTrue(syft.equal(t.narrow(axis, start, target_shape[axis]), split))
             start += target_shape[axis]
+
+
+class CrossTests(unittest.TestCase):
+    def setUp(self):
+        self.a = np.eye(2, 3)
+        self.b = np.ones((2, 3))
+
+    def test_cross(self):
+        a = TensorBase(self.a)
+        b = TensorBase(self.b)
+
+        # Verify that the expected result is retuned
+        expected_result = np.array([0, -1, 1, 1, 0, -1]).reshape(2, 3)
+        self.assertTrue(np.array_equal(a.cross(b), expected_result))
+
+        # Verify that ValueError is thrown when dimension is out of bounds
+        self.assertRaises(ValueError, a.cross, b, 5)
+
+        # Verify that ValueError is thrown when size dimension dim != 3
+        self.assertRaises(ValueError, a.cross, b, 0)
+
+        # Verify that ValueError is thrown when dimensions don't match
+        a = TensorBase(self.a.reshape(3, 2))
+        self.assertRaises(ValueError, a.cross, b)
+
+        # Verify that NotImplemented is returned if Tensor is encrypted
+        a = TensorBase(self.a, True)
+        self.assertEqual(a.cross(b), NotImplemented)
diff --git a/tests/test_tensor.py b/tests/test_tensor.py
index 3c9052c3bf..9d7143a875 100644
--- a/tests/test_tensor.py
+++ b/tests/test_tensor.py
@@ -1635,6 +1635,20 @@ class SplitTests(unittest.TestCase):
             start += target_shape[axis]
 
 
+class CrossTests(unittest.TestCase):
+    def setUp(self):
+        self.a = np.eye(2, 3)
+        self.b = np.ones((2, 3))
+
+    def test_cross(self):
+        a = TensorBase(self.a)
+        b = TensorBase(self.b)
+        expected_result = np.array([0, -1, 1, 1, 0, -1]).reshape(2, 3)
+
+        # Verify that the expected result is retuned
+        self.assertTrue(np.array_equal(a.cross(b), expected_result))
+
+
 if __name__ == "__main__":
 
     unittest.main()

pip install -e .
parse_log_pytest
requirements.txt
line_profiler pytest
apt-get update apt-get install -y musl-dev g++ libgmp3-dev libmpfr-dev ca-certificates
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
exceptiongroup==1.2.2
iniconfig==2.1.0
line_profiler==4.2.0
numpy==1.26.4
packaging==24.2
phe==1.5.0
pluggy==1.5.0
pyRserve==1.0.4
pytest==8.3.5
scipy==1.13.1
-e git+https://github.com/OpenMined/PySyft.git@34af4f778c2b2f1a16a5a8aa505c37b7d9b18009#egg=syft
tomli==2.2.1

name: PySyft
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - exceptiongroup==1.2.2
      - iniconfig==2.1.0
      - line-profiler==4.2.0
      - numpy==1.26.4
      - packaging==24.2
      - phe==1.5.0
      - pluggy==1.5.0
      - pyrserve==1.0.4
      - pytest==8.3.5
      - scipy==1.13.1
      - tomli==2.2.1
prefix: /opt/conda/envs/PySyft

tests/test_math.py::CrossTests::test_cross tests/test_tensor.py::CrossTests::test_cross
tests/test_tensor.py::ScatterTests::test_scatter_numerical_0 tests/test_tensor.py::ScatterTests::test_scatter_numerical_1 tests/test_tensor.py::ScatterTests::test_scatter_numerical_2 tests/test_tensor.py::ScatterTests::test_scatter_numerical_3 tests/test_tensor.py::ScatterTests::test_scatter_numerical_4 tests/test_tensor.py::ScatterTests::test_scatter_numerical_5 tests/test_tensor.py::ScatterTests::test_scatter_numerical_6 tests/test_tensor.py::UnfoldTest::test_unfold_big tests/test_tensor.py::UnfoldTest::test_unfold_small
tests/test_math.py::ConvenienceTests::test_ones tests/test_math.py::ConvenienceTests::test_rand tests/test_math.py::ConvenienceTests::test_zeros tests/test_math.py::DotTests::test_dot_float tests/test_math.py::DotTests::test_dot_int tests/test_math.py::DiagTests::test_one_dim_tensor_below_diag tests/test_math.py::DiagTests::test_one_dim_tensor_main_diag tests/test_math.py::DiagTests::test_one_dim_tensor_upper_diag tests/test_math.py::DiagTests::test_two_dim_tensor_below_diag tests/test_math.py::DiagTests::test_two_dim_tensor_main_diag tests/test_math.py::DiagTests::test_two_dim_tensor_upper_diag tests/test_math.py::CeilTests::test_ceil tests/test_math.py::FloorTests::test_floor tests/test_math.py::SinTests::test_sin tests/test_math.py::SinhTests::test_sinh tests/test_math.py::CosTests::test_cos tests/test_math.py::CoshTests::test_cosh tests/test_math.py::TanTests::test_tan tests/test_math.py::TanhTests::test_tanh tests/test_math.py::CumsumTests::test_cumsum tests/test_math.py::CumprodTests::test_cumprod tests/test_math.py::SigmoidTests::test_sigmoid tests/test_math.py::MatmulTests::test_matmul_1d_float tests/test_math.py::MatmulTests::test_matmul_1d_int tests/test_math.py::MatmulTests::test_matmul_2d_float tests/test_math.py::MatmulTests::test_matmul_2d_identity tests/test_math.py::MatmulTests::test_matmul_2d_int tests/test_math.py::AddmmTests::test_addmm_1d tests/test_math.py::AddmmTests::test_addmm_2d tests/test_math.py::AddcmulTests::test_addcmul_1d tests/test_math.py::AddcmulTests::test_addcmul_2d tests/test_math.py::AddcdivTests::test_addcdiv_1d tests/test_math.py::AddcdivTests::test_addcdiv_2d tests/test_math.py::AddmvTests::test_addmv tests/test_math.py::BmmTests::test_bmm tests/test_math.py::BmmTests::test_bmm_for_correct_size_output tests/test_math.py::AddbmmTests::test_addbmm tests/test_math.py::BaddbmmTests::test_baddbmm tests/test_math.py::TransposeTests::test_transpose tests/test_math.py::UnsqueezeTests::test_unsqueeze tests/test_math.py::MmTests::test_mm_1d tests/test_math.py::MmTests::test_mm_2d tests/test_math.py::MmTests::test_mm_3d tests/test_math.py::FmodTests::test_fmod_number tests/test_math.py::FmodTests::test_fmod_tensor tests/test_math.py::LerpTests::test_lerp tests/test_math.py::NumelTests::test_numel_float tests/test_math.py::NumelTests::test_numel_int tests/test_math.py::RenormTests::test_3d_tensor_renorm tests/test_math.py::RenormTests::test_float_renorm tests/test_math.py::RenormTests::test_int_renorm tests/test_math.py::MultinomialTests::test_multinomial tests/test_math.py::SplitTests::test_split tests/test_tensor.py::DimTests::test_as_view tests/test_tensor.py::DimTests::test_dim_one tests/test_tensor.py::DimTests::test_resize tests/test_tensor.py::DimTests::test_resize_as tests/test_tensor.py::DimTests::test_view tests/test_tensor.py::DiagTests::test_one_dim_tensor_below_diag tests/test_tensor.py::DiagTests::test_one_dim_tensor_main_diag tests/test_tensor.py::DiagTests::test_one_dim_tensor_upper_diag tests/test_tensor.py::DiagTests::test_two_dim_tensor_below_diag tests/test_tensor.py::DiagTests::test_two_dim_tensor_main_diag tests/test_tensor.py::DiagTests::test_two_dim_tensor_upper_diag tests/test_tensor.py::AddTests::test_inplace tests/test_tensor.py::AddTests::test_scalar tests/test_tensor.py::AddTests::test_simple tests/test_tensor.py::CeilTests::test_ceil tests/test_tensor.py::CeilTests::test_ceil_ tests/test_tensor.py::ZeroTests::test_zero tests/test_tensor.py::FloorTests::test_floor tests/test_tensor.py::SubTests::test_inplace tests/test_tensor.py::SubTests::test_scalar tests/test_tensor.py::SubTests::test_simple tests/test_tensor.py::MaxTests::test_axis tests/test_tensor.py::MaxTests::test_no_dim tests/test_tensor.py::MultTests::test_inplace tests/test_tensor.py::MultTests::test_scalar tests/test_tensor.py::MultTests::test_simple tests/test_tensor.py::DivTests::test_inplace tests/test_tensor.py::DivTests::test_scalar tests/test_tensor.py::DivTests::test_simple tests/test_tensor.py::AbsTests::test_abs tests/test_tensor.py::AbsTests::test_abs_ tests/test_tensor.py::ShapeTests::test_shape tests/test_tensor.py::SqrtTests::test_sqrt tests/test_tensor.py::SqrtTests::test_sqrt_ tests/test_tensor.py::SumTests::test_dim_is_not_none_int tests/test_tensor.py::SumTests::test_dim_none_int tests/test_tensor.py::EqualTests::test_equal tests/test_tensor.py::EqualTests::test_equal_operation tests/test_tensor.py::EqualTests::test_inequality_operation tests/test_tensor.py::EqualTests::test_not_equal tests/test_tensor.py::EqualTests::test_shape_inequality_operation tests/test_tensor.py::EqualTests::test_shape_not_equal tests/test_tensor.py::SigmoidTests::test_sigmoid tests/test_tensor.py::AddmmTests::test_addmm_1d tests/test_tensor.py::AddmmTests::test_addmm_1d_ tests/test_tensor.py::AddmmTests::test_addmm_2d tests/test_tensor.py::AddmmTests::test_addmm_2d_ tests/test_tensor.py::AddcmulTests::test_addcmul_1d tests/test_tensor.py::AddcmulTests::test_addcmul_1d_ tests/test_tensor.py::AddcmulTests::test_addcmul_2d tests/test_tensor.py::AddcmulTests::test_addcmul_2d_ tests/test_tensor.py::AddcdivTests::test_addcdiv_1d tests/test_tensor.py::AddcdivTests::test_addcdiv_1d_ tests/test_tensor.py::AddcdivTests::test_addcdiv_2d tests/test_tensor.py::AddcdivTests::test_addcdiv_2d_ tests/test_tensor.py::AddmvTests::test_addmv tests/test_tensor.py::AddmvTests::test_addmv_ tests/test_tensor.py::BmmTests::test_bmm tests/test_tensor.py::BmmTests::test_bmm_size tests/test_tensor.py::AddbmmTests::test_addbmm tests/test_tensor.py::AddbmmTests::test_addbmm_ tests/test_tensor.py::BaddbmmTests::test_baddbmm tests/test_tensor.py::BaddbmmTests::test_baddbmm_ tests/test_tensor.py::TransposeTests::test_t tests/test_tensor.py::TransposeTests::test_transpose tests/test_tensor.py::TransposeTests::test_transpose_ tests/test_tensor.py::UnsqueezeTests::test_unsqueeze tests/test_tensor.py::UnsqueezeTests::test_unsqueeze_ tests/test_tensor.py::ExpTests::test_exp tests/test_tensor.py::ExpTests::test_exp_ tests/test_tensor.py::FracTests::test_frac tests/test_tensor.py::FracTests::test_frac_ tests/test_tensor.py::RsqrtTests::test_rsqrt tests/test_tensor.py::RsqrtTests::test_rsqrt_ tests/test_tensor.py::SignTests::test_sign tests/test_tensor.py::SignTests::test_sign_ tests/test_tensor.py::NumpyTests::test_numpy tests/test_tensor.py::ReciprocalTests::test_reciprocal tests/test_tensor.py::ReciprocalTests::test_reciprocal_ tests/test_tensor.py::LogTests::test_log tests/test_tensor.py::LogTests::test_log_ tests/test_tensor.py::LogTests::test_log_1p tests/test_tensor.py::LogTests::test_log_1p_ tests/test_tensor.py::ClampTests::test_clamp_float tests/test_tensor.py::ClampTests::test_clamp_float_in_place tests/test_tensor.py::ClampTests::test_clamp_int tests/test_tensor.py::ClampTests::test_clamp_int_in_place tests/test_tensor.py::CloneTests::test_clone tests/test_tensor.py::ChunkTests::test_chunk tests/test_tensor.py::ChunkTests::test_chunk_same_size tests/test_tensor.py::GtTests::test_gt__in_place_with_number tests/test_tensor.py::GtTests::test_gt__in_place_with_tensor tests/test_tensor.py::GtTests::test_gt_with_encrypted tests/test_tensor.py::GtTests::test_gt_with_number tests/test_tensor.py::GtTests::test_gt_with_tensor tests/test_tensor.py::GeTests::test_ge__in_place_with_number tests/test_tensor.py::GeTests::test_ge__in_place_with_tensor tests/test_tensor.py::GeTests::test_ge_with_encrypted tests/test_tensor.py::GeTests::test_ge_with_number tests/test_tensor.py::GeTests::test_ge_with_tensor tests/test_tensor.py::LtTests::test_lt__in_place_with_number tests/test_tensor.py::LtTests::test_lt__in_place_with_tensor tests/test_tensor.py::LtTests::test_lt_with_encrypted tests/test_tensor.py::LtTests::test_lt_with_number tests/test_tensor.py::LtTests::test_lt_with_tensor tests/test_tensor.py::LeTests::test_le__in_place_with_number tests/test_tensor.py::LeTests::test_le__in_place_with_tensor tests/test_tensor.py::LeTests::test_le_with_encrypted tests/test_tensor.py::LeTests::test_le_with_number tests/test_tensor.py::LeTests::test_le_with_tensor tests/test_tensor.py::BernoulliTests::test_bernoulli tests/test_tensor.py::BernoulliTests::test_bernoulli_ tests/test_tensor.py::MultinomialTests::test_multinomial tests/test_tensor.py::CauchyTests::test_cauchy_ tests/test_tensor.py::UniformTests::test_uniform tests/test_tensor.py::UniformTests::test_uniform_ tests/test_tensor.py::GeometricTests::test_geometric_ tests/test_tensor.py::NormalTests::test_normal tests/test_tensor.py::NormalTests::test_normal_ tests/test_tensor.py::FillTests::test_fill_ tests/test_tensor.py::TopkTests::test_topK tests/test_tensor.py::TolistTests::test_to_list tests/test_tensor.py::TraceTests::test_trace tests/test_tensor.py::RoundTests::test_round tests/test_tensor.py::RoundTests::test_round_ tests/test_tensor.py::RepeatTests::test_repeat tests/test_tensor.py::PowTests::test_pow tests/test_tensor.py::PowTests::test_pow_ tests/test_tensor.py::NegTests::test_neg tests/test_tensor.py::NegTests::test_neg_ tests/test_tensor.py::SinTests::test_sin tests/test_tensor.py::SinhTests::test_sinh tests/test_tensor.py::CosTests::test_cos tests/test_tensor.py::CoshTests::test_cosh tests/test_tensor.py::TanTests::test_tan tests/test_tensor.py::TanhTests::test_tanh_ tests/test_tensor.py::ProdTests::test_prod tests/test_tensor.py::RandomTests::test_random_ tests/test_tensor.py::NonzeroTests::test_non_zero tests/test_tensor.py::CumprodTest::test_cumprod tests/test_tensor.py::CumprodTest::test_cumprod_ tests/test_tensor.py::SqueezeTests::test_squeeze tests/test_tensor.py::ExpandAsTests::test_expand_as tests/test_tensor.py::MeanTests::test_mean tests/test_tensor.py::NotEqualTests::test_ne tests/test_tensor.py::NotEqualTests::test_ne_ tests/test_tensor.py::IndexTests::test_index tests/test_tensor.py::IndexTests::test_index_add_ tests/test_tensor.py::IndexTests::test_index_copy_ tests/test_tensor.py::IndexTests::test_index_fill_ tests/test_tensor.py::IndexTests::test_index_select tests/test_tensor.py::IndexTests::test_index_slice_notation tests/test_tensor.py::IndexTests::test_indexing tests/test_tensor.py::GatherTests::test_gather_numerical_1 tests/test_tensor.py::GatherTests::test_gather_numerical_2 tests/test_tensor.py::ScatterTests::test_scatter_dim_out_Of_range tests/test_tensor.py::ScatterTests::test_scatter_index_out_of_range tests/test_tensor.py::ScatterTests::test_scatter_index_src_dimension_mismatch tests/test_tensor.py::ScatterTests::test_scatter_index_type tests/test_tensor.py::RemainderTests::test_remainder_ tests/test_tensor.py::RemainderTests::test_remainder_broadcasting tests/test_tensor.py::MvTests::test_mv tests/test_tensor.py::MvTests::test_mv_tensor tests/test_tensor.py::NarrowTests::test_narrow_float tests/test_tensor.py::NarrowTests::test_narrow_int tests/test_tensor.py::MaskedScatterTests::test_masked_scatter_1 tests/test_tensor.py::MaskedScatterTests::test_masked_scatter_braodcasting_1 tests/test_tensor.py::MaskedScatterTests::test_masked_scatter_braodcasting_2 tests/test_tensor.py::MaskedFillTests::test_masked_fill_ tests/test_tensor.py::MaskedFillTests::test_masked_fill_broadcasting tests/test_tensor.py::MaskedSelectTests::test_masked_select tests/test_tensor.py::MaskedSelectTests::test_masked_select_broadcasting_1 tests/test_tensor.py::MaskedSelectTests::test_masked_select_broadcasting_2 tests/test_tensor.py::MaskedSelectTests::test_tensor_base_masked_select tests/test_tensor.py::EqTests::test_eq_in_place_with_number tests/test_tensor.py::EqTests::test_eq_in_place_with_tensor tests/test_tensor.py::EqTests::test_eq_with_number tests/test_tensor.py::EqTests::test_eq_with_tensor tests/test_tensor.py::MmTests::test_mm_1d tests/test_tensor.py::MmTests::test_mm_2d tests/test_tensor.py::MmTests::test_mm_3d tests/test_tensor.py::NewTensorTests::test_encrypted_error tests/test_tensor.py::NewTensorTests::test_return_new_float_tensor tests/test_tensor.py::NewTensorTests::test_return_new_int_tensor tests/test_tensor.py::HalfTests::test_half_1 tests/test_tensor.py::HalfTests::test_half_2 tests/test_tensor.py::FmodTests::test_fmod_number tests/test_tensor.py::FmodTests::test_fmod_tensor tests/test_tensor.py::FmodTestsBis::test_fmod_number tests/test_tensor.py::FmodTestsBis::test_fmod_tensor tests/test_tensor.py::NumelTests::test_numel_2d tests/test_tensor.py::NumelTests::test_numel_3d tests/test_tensor.py::NumelTests::test_numel_encrypted tests/test_tensor.py::NumelTests::test_numel_float tests/test_tensor.py::NumelTests::test_numel_int tests/test_tensor.py::NumelTests::test_numel_str tests/test_tensor.py::NelementTests::test_nelement_2d tests/test_tensor.py::NelementTests::test_nelement_3d tests/test_tensor.py::NelementTests::test_nelement_encrypted tests/test_tensor.py::NelementTests::test_nelement_float tests/test_tensor.py::NelementTests::test_nelement_int tests/test_tensor.py::NelementTests::test_nelement_str tests/test_tensor.py::SizeTests::test_size_2d tests/test_tensor.py::SizeTests::test_size_3d tests/test_tensor.py::SizeTests::test_size_float tests/test_tensor.py::SizeTests::test_size_int tests/test_tensor.py::SizeTests::test_size_str tests/test_tensor.py::LerpTests::test_lerp tests/test_tensor.py::LerpTests::test_lerp_ tests/test_tensor.py::ModeTests::testMode_axis_None tests/test_tensor.py::ModeTests::testMode_axis_col tests/test_tensor.py::ModeTests::testMode_axis_row tests/test_tensor.py::RenormTests::testRenorm tests/test_tensor.py::RenormTests::testRenorm_ tests/test_tensor.py::StrideTests::test_stride tests/test_tensor.py::SplitTests::test_split
syft/tensor.py syft/__init__.py syft/math.py
syft/tensor.py syft/__init__.py syft/math.py