#cython: cdivision=True
#cython: boundscheck=False
#cython: nonecheck=False
#cython: wraparound=False
"""
pyart.correct._unwrap_1d
========================

.. autosummary::
    :toctree: generated/
    
    unwrap_1d

"""

from libc.math cimport M_PI


def unwrap_1d(double[::1] image, double[::1] unwrapped_image):
    '''Phase unwrapping using the naive approach.'''
    cdef:
        Py_ssize_t i
        double difference
        long periods = 0
    unwrapped_image[0] = image[0]
    for i in range(1, image.shape[0]):
        difference = image[i] - image[i - 1]
        if difference > M_PI:
            periods -= 1
        elif difference < -M_PI:
            periods += 1
        unwrapped_image[i] = image[i] + 2 * M_PI * periods
