Inconsistency-bug in `tf.raw_ops.AddN` between jit mode and normal mode
Hi @Lyutoon ,

I have replicated the reported behaviour of `tf.raw_ops.AddN` and attached [gist](https://colab.research.google.com/gist/SuryanarayanaY/0f02aed16b2b7bd6b8255dc12e4cda04/60765_nightly.ipynb) here. Inconsistency observed with dtype=half and when checked with `float32` or `float64` there is no inconsistency. It might be related to the precision error of dtypes because when we see the relative difference in results it is `~0.0052%`. We need to hear it from Developer team for confirmation on this.

Thanks!
<details><summary>Click to expand!</summary> 
 
 ### Issue Type

Bug

### Have you reproduced the bug with TF nightly?

Yes

### Source

source

### Tensorflow Version

2.14.0

### Custom Code

Yes

### OS Platform and Distribution

Ubuntu 20.04

### Mobile device

Ubuntu 20.04

### Python version

3.8.10

### Bazel version

_No response_

### GCC/Compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current Behaviour?

There is an inconsistency bug between **jit compile mode** and **normal mode** in `tf.raw_ops.AddN` which result in inconsistent computational result especially when the data type is `half`. But expectedly, the computational result have to be the same.

### Standalone code to reproduce the issue

```shell
import os 
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
import numpy as np

inputs = 44 * [tf.random.uniform([1, 2, 4, 3], dtype=tf.dtypes.half, maxval=1000)] # the half datatype!

@tf.function(jit_compile=True)
def fuzz_jit():
    y = tf.raw_ops.AddN(
        inputs = inputs
    )
    return y

def fuzz_normal():
    y = tf.raw_ops.AddN(
        inputs = inputs
    )
    return y

y1 = fuzz_jit()
print('[+] JIT ok')
y2 = fuzz_normal()
print('[+] Normal ok')
np.testing.assert_allclose(y1.numpy(), y2.numpy(), rtol=1e-4, atol=1e-4)
```


### Relevant log output

```shell
% python test.py
[+] JIT ok
[+] Normal ok
Traceback (most recent call last):
  File "test.py", line 25, in <module>
    np.testing.assert_allclose(y1.numpy(), y2.numpy(), rtol=1e-4, atol=1e-4)
  File "/usr/local/lib/python3.8/dist-packages/numpy/testing/_private/utils.py", line 1530, in assert_allclose
    assert_array_compare(compare, actual, desired, err_msg=str(err_msg),
  File "/usr/local/lib/python3.8/dist-packages/numpy/testing/_private/utils.py", line 844, in assert_array_compare
    raise AssertionError(msg)
AssertionError: 
Not equal to tolerance rtol=0.0001, atol=0.0001

Mismatched elements: 20 / 24 (83.3%)
Max absolute difference: 160.
Max relative difference: 0.004887
 x: array([[[[14864., 41344., 39872.],
         [ 2492.,  6852., 17664.],
         [17344., 33216., 39968.],...
 y: array([[[[14912., 41376., 39808.],
         [ 2488.,  6824., 17696.],
         [17408., 33280., 40096.],...
```
</details>