code: def circstd(
      samples, high=2 * pi, low=0, axis=None, nan_policy="propagate"
  ):
      """
      Compute the circular standard deviation for samples assumed to be in the
      range [low to high].
  
      Parameters
      ----------
      samples : array_like
          Input array.
      high : float or int, optional
          High boundary for circular standard deviation range.
          Default is ``2*pi``.
      low : float or int, optional
          Low boundary for circular standard deviation range.  Default is 0.
      axis : int, optional
          Axis along which standard deviations are computed.  The default is
          to compute the standard deviation of the flattened array.
      nan_policy : {'propagate', 'raise', 'omit'}, optional
          Defines how to handle when input contains nan. 'propagate' returns nan,
          'raise' throws an error, 'omit' performs the calculations ignoring nan
          values. Default is 'propagate'.
  
      Returns
      -------
      circstd : float
          Circular standard deviation.
  
      Notes
      -----
      This uses a definition of circular standard deviation that in the limit of
      small angles returns a number close to the 'linear' standard deviation.
  
      Examples
      --------
      >>> from scipy.stats import circstd
      >>> circstd([0, 0.1*np.pi/2, 0.001*np.pi, 0.03*np.pi/2])
      0.063564063306
  
      """
      samples, sin_samp, cos_samp, mask = _circfuncs_common(
          samples, high, low, nan_policy=nan_policy
      )
      if mask is None:
          sin_mean = sin_samp.mean(axis=axis)
          cos_mean = cos_samp.mean(axis=axis)
      else:
          nsum = np.asarray(np.sum(~mask, axis=axis).astype(float))
          nsum[nsum == 0] = np.nan
          sin_mean = sin_samp.sum(axis=axis) / nsum
          cos_mean = cos_samp.sum(axis=axis) / nsum
      # hypot can go slightly above 1 due to rounding errors
      with np.errstate(invalid="ignore"):
          R = np.minimum(1, hypot(sin_mean, cos_mean))
  
      return ((high - low) / 2.0 / pi) * sqrt(-2 * log(R))
  
imports: from __future__ import annotations
  import math
  import warnings
  from collections import namedtuple
  import numpy
  from numpy import isscalar, r_, log, around, unique, asarray, zeros, arange, sort, amin, amax, atleast_1d, sqrt, array, compress, pi, exp, ravel, count_nonzero, sin, cos, arctan2, hypot
  from scipy import optimize
  from scipy import special
  from .None import statlib
  from .None import stats
  from .stats import find_repeats, _contains_nan, _normtest_finish
  from .contingency import chi2_contingency
  from .None import distributions
  from ._distn_infrastructure import rv_generic
  from ._hypotests import _get_wilcoxon_distr
label_desc: Use image node_id 39 for calling a global function with example usage: circstd(samples, high, low, axis, nan_policy) and returns: unknown