Inconsistent result between tf.linalg.eigvals and numpy/scipy on a (3,3) tensor
Hi @drewshark,

I have replicated the behaviour for multiple inputs and my observations follows below.

1. The output values returned by TF compared to Numpy or Scipy is different wrt Order.Also this order is inconsistent some times TF output order inline with Numpy and Scipy and sometimes not. But as per Numpy and Scipy documentation you can find a note that the order of output Eigen values need not have any specific order. Please find notes of [Numpy](https://numpy.org/doc/stable/reference/generated/numpy.linalg.eigvals.html#:~:text=Returns,for%20real%20matrices.) and [Scipy](https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.eigvals.html#scipy.linalg.eigvals:~:text=Returns%3A,homogeneous_eigvals%3DTrue.) for same.

<img width="702" alt="Screenshot 2023-09-11 at 12 40 12 PM" src="https://github.com/tensorflow/tensorflow/assets/116063290/521c36c1-b24d-45f7-9cb3-afd1b73749ce">






<img width="779" alt="Screenshot 2023-09-11 at 12 38 38 PM" src="https://github.com/tensorflow/tensorflow/assets/116063290/e1991149-7fb3-4e37-8f2e-32e6f4c827e0">


3. The values more or less same with some precisional differences of **e-05** order which can be ignored as these precision levels might be different for different backends and also varies w.r.t the hardware also.

I hope wrt the order of results the documentation states the documentation states that its need not be same. I am curious to know any use case that might get effects with this order.

 I am curious to know how the order of eigen values generated may affect for the case of batch normalization applied on inputs.

@drewshark , Could you please confirm whether you are looking the differences in results wrt precision or order ? Hi @SuryanarayanaY,

I am looking the differences in results wrt both precision and order and I agree with you that the precision difference is very close so the problem may only be the order problem. I observe this difference because I am calling the eigvals API and only use the first result returned by it. 
### Issue type

Bug

### Have you reproduced the bug with TensorFlow Nightly?

Yes

### Source

source

### TensorFlow version

2.13.0

### Custom code

Yes

### OS platform and distribution

_No response_

### Mobile device

_No response_

### Python version

_No response_

### Bazel version

_No response_

### GCC/compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current behavior?

Given the same tensor, tf.linalg.eigvals outputs results different from np.linalg.eigvals and scipy.linalg.eig. The latter two APIs are also computing the eigenvalues and it may be expected if tf.linalg.eigvals can output the same results as theirs.

### Standalone code to reproduce the issue

```shell
import tensorflow as tf
import scipy
import numpy as np

np.random.seed(1234)
tensor = np.random.random((3, 3)).astype(np.float32)

tf_out = tf.linalg.eigvals(tf.constant(tensor))
np_out = np.linalg.eigvals(tensor)
scipy_out = scipy.linalg.eig(tensor)[0]
print("TensorFlow's result: ",tf_out)
print("Numpy's result: ", np_out)
print("Scipy's result: ", scipy_out)
```


### Relevant log output

```shell
TensorFlow's result:  tf.Tensor([-0.20270659+0.j  1.7388148 +0.j  0.3935262 +0.j], shape=(3,), dtype=complex64)
Numpy's result:  [ 1.7388151  -0.20270674  0.39352626]
Scipy's result:  [ 1.7388152 +0.j -0.20270659+0.j  0.39352617+0.j]
```
