Files
Time-Series-Analysis/.venv/lib/python3.12/site-packages/pmdarima/utils/_array.pyx
2025-07-30 17:09:11 +03:00

44 lines
1.1 KiB
Cython

#cython: boundscheck=False
#cython: cdivision=True
#cython: wraparound=False
#cython: nonecheck=False
#cython: language_level=3
#
# This is the Cython translation of the diffinv function R source code
#
# Author: Charles Drotar
import numpy as np
cimport numpy as np
cimport cython
ctypedef np.npy_intp INTP
cdef fused floating1d:
float[::1]
double[::1]
np.import_array()
@cython.boundscheck(False)
@cython.wraparound(False)
cpdef double[:] C_intgrt_vec(floating1d x,
floating1d xi,
INTP lag):
"""Inverse diff
References
----------
.. [1] https://github.com/wch/r-source/blob/trunk/src/library/stats/R/diffinv.R#L39
.. [2] https://github.com/mirror/r/blob/65a0e33a4b0a119703586fcd1f9742654738ae54/src/library/stats/src/PPsum.c#L46
"""
cdef INTP i, n = x.shape[0]
cdef np.ndarray[double, ndim=1, mode='c'] ans = \
np.zeros(n + lag, dtype=np.float64, order='c')
with nogil:
for i in range(lag, lag + n):
ans[i] = x[i - lag] + ans[i - lag]
return ans