
    ukia                         d dl Zd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ  ed	      Zed
edefd       Zed
edefd       Zed
edefd       Zed
edefd       Zed
ededefd       Zy)    N)core)dtypes)lax)	lax_numpy)ufuncs)Array	ArrayLike)
set_modulez	jax.numpyMreturnc                    t        j                  t        | d      } t        j                         }| dk  rt        j                  | fd|      S t        j                  ||       }ddt        j                  dt        j                  z  |z  | dz
  z        z  z
  dt        j                  dt        j                  z  |z  | dz
  z        z  z   S )a_  Return a Blackman window of size M.

  JAX implementation of :func:`numpy.blackman`.

  Args:
    M: The window size.

  Returns:
    An array of size M containing the Blackman window.

  Examples:
    >>> with jnp.printoptions(precision=2, suppress=True):
    ...   print(jnp.blackman(4))
    [-0.    0.63  0.63 -0.  ]

  See also:
    - :func:`jax.numpy.bartlett`: return a Bartlett window of size M.
    - :func:`jax.numpy.hamming`: return a Hamming window of size M.
    - :func:`jax.numpy.hanning`: return a Hanning window of size M.
    - :func:`jax.numpy.kaiser`: return a Kaiser window of size M.
  zM argument of jnp.blackman   gzG?      ?   g{Gz?   r   concrete_or_errorintr   default_float_dtyper   fulliotar   cosnppir   dtypens      Z/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/_src/numpy/window_functions.pyblackmanr      s    . S!%AB!

$
$
&%!V88QD!U##	hhua!	fjjRUUQ!a%!899	9D6::aRTRWRWiZ[m_`cd_dNeCf<f	ff    c                    t        j                  t        | d      } t        j                         }| dk  rt        j                  | fd|      S t        j                  ||       }dt        j                  d|z  dz   | z
        | dz
  z  z
  S )a[  Return a Bartlett window of size M.

  JAX implementation of :func:`numpy.bartlett`.

  Args:
    M: The window size.

  Returns:
    An array of size M containing the Bartlett window.

  Examples:
    >>> with jnp.printoptions(precision=2, suppress=True):
    ...   print(jnp.bartlett(4))
    [0.   0.67 0.67 0.  ]

  See also:
    - :func:`jax.numpy.blackman`: return a Blackman window of size M.
    - :func:`jax.numpy.hamming`: return a Hamming window of size M.
    - :func:`jax.numpy.hanning`: return a Hanning window of size M.
    - :func:`jax.numpy.kaiser`: return a Kaiser window of size M.
  zM argument of jnp.bartlettr   r   )
r   r   r   r   r   r   r   r   r   absr   s      r   bartlettr#   ;   s|    . S!%AB!

$
$
&%!V88QD!U##	hhua!	
VZZA	A&!a%0	00r    c                 0   t        j                  t        | d      } t        j                         }| dk  rt        j                  | fd|      S t        j                  ||       }ddt        j                  dt        j                  z  |z  | dz
  z        z  z
  S )aY  Return a Hamming window of size M.

  JAX implementation of :func:`numpy.hamming`.

  Args:
    M: The window size.

  Returns:
    An array of size M containing the Hamming window.

  Examples:
    >>> with jnp.printoptions(precision=2, suppress=True):
    ...   print(jnp.hamming(4))
    [0.08 0.77 0.77 0.08]

  See also:
    - :func:`jax.numpy.bartlett`: return a Bartlett window of size M.
    - :func:`jax.numpy.blackman`: return a Blackman window of size M.
    - :func:`jax.numpy.hanning`: return a Hanning window of size M.
    - :func:`jax.numpy.kaiser`: return a Kaiser window of size M.
  zM argument of jnp.hammingr   gHzG?gq=
ףp?r   r   r   s      r   hammingr%   Z   s    . S!%@A!

$
$
&%!V88QD!U##	hhua!	vzz!bee)a-1q5"9::	::r    c                 0   t        j                  t        | d      } t        j                         }| dk  rt        j                  | fd|      S t        j                  ||       }ddt        j                  dt        j                  z  |z  | dz
  z        z
  z  S )aY  Return a Hanning window of size M.

  JAX implementation of :func:`numpy.hanning`.

  Args:
    M: The window size.

  Returns:
    An array of size M containing the Hanning window.

  Examples:
    >>> with jnp.printoptions(precision=2, suppress=True):
    ...   print(jnp.hanning(4))
    [0.   0.75 0.75 0.  ]

  See also:
    - :func:`jax.numpy.bartlett`: return a Bartlett window of size M.
    - :func:`jax.numpy.blackman`: return a Blackman window of size M.
    - :func:`jax.numpy.hamming`: return a Hamming window of size M.
    - :func:`jax.numpy.kaiser`: return a Kaiser window of size M.
  zM argument of jnp.hanningr   r   r   r   r   s      r   hanningr'   y   s    . S!%@A!

$
$
&%!V88QD!U##	hhua!	FJJq255y1}A677	88r    betac                 p   t        j                  t        | d      } t        j                         }| dk  rt        j                  | fd|      S t        j                  ||       }d| dz
  z  }t        j                  |t        j                  d||z
  |z  dz  z
        z        t        j                  |      z  S )a  Return a Kaiser window of size M.

  JAX implementation of :func:`numpy.kaiser`.

  Args:
    M: The window size.
    beta: The Kaiser window parameter.

  Returns:
    An array of size M containing the Kaiser window.

  Examples:
    >>> with jnp.printoptions(precision=2, suppress=True):
    ...   print(jnp.kaiser(4, 1.5))
    [0.61 0.95 0.95 0.61]

  See also:
    - :func:`jax.numpy.bartlett`: return a Bartlett window of size M.
    - :func:`jax.numpy.blackman`: return a Blackman window of size M.
    - :func:`jax.numpy.hamming`: return a Hamming window of size M.
    - :func:`jax.numpy.hanning`: return a Hanning window of size M.
  zM argument of jnp.kaiserr   r   r   )r   r   r   r   r   r   r   r   r   i0r   sqrt)r   r(   r   r   alphas        r   kaiserr-      s    0 S!%?@!

$
$
&%!V88QD!U##	hhua!
Q-%	dV[[q5yE.Aa-G)GHH	IILLY]L^	^^r    )numpyr   jax._srcr   r   jax._src.laxr   jax._src.numpyr   r   jax._src.typingr   r	   jax._src.utilr
   exportr   r   r#   r%   r'   r-    r    r   <module>r6      s        $ ! , $	K	  g g g g< 1 1 1 1< ;s ;u ; ;< 9s 9u 9 9< _c _ _u _ _r    