diff --git a/stonesoup/functions.py b/stonesoup/functions.py
index db7567f2..a1d971f3 100644
--- a/stonesoup/functions.py
+++ b/stonesoup/functions.py
@@ -130,8 +130,11 @@ def gauss2sigma(state, alpha=1.0, beta=2.0, kappa=None):
 
     # Calculate sigma point locations
     sigma_points = np.tile(state.state_vector, (1, 2 * ndim_state + 1))
-    sigma_points[:, 1:(ndim_state + 1)] += sqrt_sigma * np.sqrt(c)
-    sigma_points[:, (ndim_state + 1):] -= sqrt_sigma * np.sqrt(c)
+    # Can't use in place addition/subtraction as casting issues may arise when mixing float/int
+    sigma_points[:, 1:(ndim_state + 1)] = \
+        sigma_points[:, 1:(ndim_state + 1)] + sqrt_sigma*np.sqrt(c)
+    sigma_points[:, (ndim_state + 1):] = \
+        sigma_points[:, (ndim_state + 1):] - sqrt_sigma*np.sqrt(c)
 
     # Put these sigma points into s State object list
     sigma_points_states = []

Unscented Kalman Filter transform : Cannot cast ufunc 'add' output from dtype('float64') to dtype('int32') with casting rule 'same_kind'
I am trying to use UKF in place of EKF in the code fragment below. However for UKF i am getting the following stack trace (see below). I noted the defaults are set for UKF if no arguments are given. Am Am I missing setting up something for UKF?


```
from stonesoup.predictor.kalman import UnscentedKalmanPredictor
predictor = UnscentedKalmanPredictor(transition_model)
.
.
.
from stonesoup.updater.kalman import UnscentedKalmanUpdater
updater = UnscentedKalmanUpdater(measurement_model)


tracks = {Track([prior_one]), Track([prior_two])}
for n, (measurements, clutter_set) in enumerate(zip(measurementss, clutter), 1):
    detections = clutter_set.copy()
    detections.update(measurements) # Add measurements and clutter together
    
    hypotheses = data_associator.associate(tracks, detections, start_time+timedelta(seconds=n))
    for track in tracks:
        hypothesis = hypotheses[track]
        if hypothesis.measurement:
            post = updater.update(hypothesis)
            track.append(post)
        else: # When data associator says no detections are good enough, we'll keep the prediction
            track.append(hypothesis.prediction)
```



```
---------------------------------------------------------------------------
UFuncTypeError                            Traceback (most recent call last)
<ipython-input-23-75a62285695b> in <module>
      5     detections.update(measurements) # Add measurements and clutter together
      6 
----> 7     hypotheses = data_associator.associate(tracks, detections, start_time+timedelta(seconds=n))
      8     for track in tracks:
      9         hypothesis = hypotheses[track]

C:\g\mot\lib\a\lib\site-packages\stonesoup\dataassociator\neighbour.py in associate(self, tracks, detections, time)
    100         hypotheses = {
    101             track: self.hypothesiser.hypothesise(track, detections, time)
--> 102             for track in tracks}
    103 
    104         # Link hypotheses into a set of joint_hypotheses and evaluate

C:\g\mot\lib\a\lib\site-packages\stonesoup\dataassociator\neighbour.py in <dictcomp>(.0)
    100         hypotheses = {
    101             track: self.hypothesiser.hypothesise(track, detections, time)
--> 102             for track in tracks}
    103 
    104         # Link hypotheses into a set of joint_hypotheses and evaluate

C:\g\mot\lib\a\lib\site-packages\stonesoup\hypothesiser\distance.py in hypothesise(self, track, detections, timestamp)
     62 
     63         # Common state & measurement prediction
---> 64         prediction = self.predictor.predict(track.state, timestamp=timestamp)
     65         measurement_prediction = self.updater.get_measurement_prediction(
     66             prediction)

C:\g\mot\lib\a\lib\site-packages\stonesoup\predictor\kalman.py in predict(self, prior, control_input, timestamp, **kwargs)
    358             transition_noise_covar, control_input.state_vector,
    359             control_matrix, contol_noise_covar,
--> 360             self.alpha, self.beta, self.kappa)
    361 
    362         return GaussianStatePrediction(prediction_mean,

C:\g\mot\lib\a\lib\site-packages\stonesoup\predictor\kalman.py in predict_lowlevel(x, P, f, Q, u, B, Qu, alpha, beta, kappa)
    402 
    403         sigma_points, mean_weights, covar_weights = \
--> 404             gauss2sigma(x, P, alpha, beta, kappa)
    405 
    406         x_pred, P_pred, _, _, _, _ = unscented_transform(sigma_points,

C:\g\mot\lib\a\lib\site-packages\stonesoup\functions.py in gauss2sigma(mean, covar, alpha, beta, kappa)
    123     # Calculate sigma point locations
    124     sigma_points = np.tile(mean, (1, 2 * ndim_state + 1))
--> 125     sigma_points[:, 1:(ndim_state + 1)] += sqrt_sigma * np.sqrt(c)
    126     sigma_points[:, (ndim_state + 1):] -= sqrt_sigma * np.sqrt(c)
    127 

UFuncTypeError: Cannot cast ufunc 'add' output from dtype('float64') to dtype('int32') with casting rule 'same_kind'
```
diff --git a/stonesoup/tests/test_functions.py b/stonesoup/tests/test_functions.py
index ac5e135f..e82fe1d7 100644
--- a/stonesoup/tests/test_functions.py
+++ b/stonesoup/tests/test_functions.py
@@ -3,8 +3,8 @@ from numpy import deg2rad
 from pytest import approx
 
 from ..functions import (
-    jacobian, gm_reduce_single, mod_bearing, mod_elevation)
-from ..types.state import State
+    jacobian, gm_reduce_single, mod_bearing, mod_elevation, gauss2sigma)
+from ..types.state import State, GaussianState
 
 
 def test_jacobian():
@@ -109,3 +109,27 @@ def test_elevation():
 
     for ind, val in enumerate(rad_in):
         assert rad_out[ind] == approx(mod_elevation(val))
+
+
+def test_gauss2sigma_float():
+    mean = 1.0
+    covar = 2.0
+    state = GaussianState([[mean]], [[covar]])
+
+    sigma_points_states, mean_weights, covar_weights = gauss2sigma(state, kappa=0)
+
+    for n, sigma_point_state in zip((0, 1, -1), sigma_points_states):
+        assert sigma_point_state.state_vector[0, 0] == approx(mean + n*covar**0.5)
+
+
+def test_gauss2sigma_int():
+    mean = 1
+    covar = 2.0
+    state = GaussianState([[mean]], [[covar]])
+
+    sigma_points_states, mean_weights, covar_weights = gauss2sigma(state, kappa=0)
+
+    for n, sigma_point_state in zip((0, 1, -1), sigma_points_states):
+        # Resultant sigma points are still ints
+        assert sigma_point_state.state_vector[0, 0] == int(mean + n*covar**0.5)
+        assert isinstance(sigma_point_state.state_vector[0, 0], np.integer)

pip install -e .[dev]
parse_log_pytest
pytest
pytest pytest-cov pytest-flake8
apt-get update apt-get install -y gcc
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
attrs @ file:///croot/attrs_1668696182826/work
Babel==2.14.0
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
coverage==7.2.7
cycler==0.11.0
docutils==0.17.1
flake8==5.0.4
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
fonttools==4.38.0
idna==3.10
imagesize==1.4.1
importlib-metadata==4.2.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
Jinja2==3.1.6
kiwisolver==1.4.5
MarkupSafe==2.1.5
matplotlib==3.5.3
mccabe==0.7.0
numpy==1.21.6
packaging @ file:///croot/packaging_1671697413597/work
Pillow==9.5.0
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle==2.9.1
pyflakes==2.5.0
Pygments==2.17.2
pymap3d==2.9.1
pyparsing==3.1.4
pytest==7.1.2
pytest-cov==4.1.0
pytest-flake8==1.1.3
python-dateutil==2.9.0.post0
pytz==2025.2
requests==2.31.0
ruamel.yaml==0.18.10
ruamel.yaml.clib==0.2.8
scipy==1.7.3
six==1.17.0
snowballstemmer==2.2.0
Sphinx==4.3.2
sphinx-rtd-theme==1.3.0
sphinxcontrib-applehelp==1.0.2
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.0
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
-e git+https://github.com/dstl/Stone-Soup.git@184c23f38773ff035fbe82030d35cb627615d926#egg=stonesoup
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
urllib3==2.0.7
utm==0.7.0
zipp @ file:///croot/zipp_1672387121353/work

name: Stone-Soup
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
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_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=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - babel==2.14.0
      - charset-normalizer==3.4.1
      - coverage==7.2.7
      - cycler==0.11.0
      - docutils==0.17.1
      - flake8==5.0.4
      - fonttools==4.38.0
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==4.2.0
      - jinja2==3.1.6
      - kiwisolver==1.4.5
      - markupsafe==2.1.5
      - matplotlib==3.5.3
      - mccabe==0.7.0
      - numpy==1.21.6
      - pillow==9.5.0
      - pycodestyle==2.9.1
      - pyflakes==2.5.0
      - pygments==2.17.2
      - pymap3d==2.9.1
      - pyparsing==3.1.4
      - pytest-cov==4.1.0
      - pytest-flake8==1.1.3
      - python-dateutil==2.9.0.post0
      - pytz==2025.2
      - requests==2.31.0
      - ruamel-yaml==0.18.10
      - ruamel-yaml-clib==0.2.8
      - scipy==1.7.3
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==4.3.2
      - sphinx-rtd-theme==1.3.0
      - sphinxcontrib-applehelp==1.0.2
      - sphinxcontrib-devhelp==1.0.2
      - sphinxcontrib-htmlhelp==2.0.0
      - sphinxcontrib-jquery==4.1
      - sphinxcontrib-jsmath==1.0.1
      - sphinxcontrib-qthelp==1.0.3
      - sphinxcontrib-serializinghtml==1.1.5
      - urllib3==2.0.7
      - utm==0.7.0
prefix: /opt/conda/envs/Stone-Soup

stonesoup/tests/test_functions.py::test_gauss2sigma_int
stonesoup/tests/test_functions.py::test_jacobian stonesoup/tests/test_functions.py::test_jacobian2 stonesoup/tests/test_functions.py::test_jacobian_large_values stonesoup/tests/test_functions.py::test_gm_reduce_single stonesoup/tests/test_functions.py::test_bearing stonesoup/tests/test_functions.py::test_elevation stonesoup/tests/test_functions.py::test_gauss2sigma_float
stonesoup/functions.py
stonesoup/functions.py