special-functions


Namespecial-functions JSON
Version 0.3.7 PyPI version JSON
download
home_pagehttps://ameli.github.io/special_functions/
SummaryCython and Python API for special functions.
upload_time2024-01-21 23:20:38
maintainer
docs_urlNone
author
requires_python>=3.8
licenseCopyright (c) 2020-2022, Siavash Ameli <sameli@berkeley.edu> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
keywords special-functions bessel-function gamma-function
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            *****************
special functions
*****************

|licence| |docs|

This package provides both Python and Cython interfaces for Bessel functions and a few other special functions. 

========
Features
========

* **Lightweight:** This package requires *no python dependency* at runtime.
* **Cython interface:** Both Python and Cython interfaces are available.
* **Releasing GIL:** Most importantly, the functions can be used in ``with nogil:`` environment, which is essential in parallel OpenMP applications with Cython.

========
Tutorial
========

|binder|

Launch `online interactive notebook <https://mybinder.org/v2/gh/ameli/special_functions/HEAD?filepath=notebooks%2Fspecial_functions.ipynb>`__ with Binder.


=====
Links
=====

* `Documentation <https://ameli.github.io/special_functions/index.html>`__
* `Package on Anaconda Cloud <https://anaconda.org/s-ameli/special_functions>`__
* `Package on PyPI <https://pypi.org/project/special_functions/>`__
* `Github <https://ameli.github.io/special_functions>`__

=======
Install
=======

-------------------
Supported Platforms
-------------------

Successful installation and tests have been performed on the following platforms and Python/PyPy versions shown in the table below.

.. |y| unicode:: U+2714
.. |n| unicode:: U+2716

+----------+-------------------+-------+-------+-------+-------+-------+-------+-------+-----------------+
| Platform | Arch              | Python Version                | PyPy Version :sup:`1` | Continuous      |
+          |                   +-------+-------+-------+-------+-------+-------+-------+ Integration     +
|          |                   |  3.9  |  3.10 |  3.11 |  3.12 |  3.8  |  3.9  |  3.10 |                 |
+==========+===================+=======+=======+=======+=======+=======+=======+=======+=================+
| Linux    | X86-64            |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  | |build-linux|   |
+          +-------------------+-------+-------+-------+-------+-------+-------+-------+                 +
|          | AARCH-64          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |                 |
+----------+-------------------+-------+-------+-------+-------+-------+-------+-------+-----------------+
| macOS    | X86-64            |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  | |build-macos|   |
+          +-------------------+-------+-------+-------+-------+-------+-------+-------+                 +
|          | ARM-64            |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |                 |
+----------+-------------------+-------+-------+-------+-------+-------+-------+-------+-----------------+
| Windows  | X86-64            |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  | |build-windows| |
+----------+-------------------+-------+-------+-------+-------+-------+-------+-------+-----------------+

.. |build-linux| image:: https://github.com/ameli/special_functions/workflows/build-linux/badge.svg
   :target: https://github.com/ameli/special_functions/actions?query=workflow%3Abuild-linux 
.. |build-macos| image:: https://github.com/ameli/special_functions/workflows/build-macos/badge.svg
   :target: https://github.com/ameli/special_functions/actions?query=workflow%3Abuild-macos
.. |build-windows| image:: https://github.com/ameli/special_functions/workflows/build-windows/badge.svg
   :target: https://github.com/ameli/special_functions/actions?query=workflow%3Abuild-windows

Python wheels for ``special_functions`` for all supported platforms and versions in the above are available through `PyPI <https://pypi.org/project/special_functions/>`__ and `Anaconda Cloud <https://anaconda.org/s-ameli/special_functions>`__. If you need ``special_functions`` on other platforms, architectures, and Python or PyPy versions, `raise an issue <https://github.com/ameli/special_functions/issues>`__ on GitHub and we build its Python Wheel for you.

.. line-block::

    :sup:`1. Wheels for PyPy are exclusively available for installation through pip and cannot be installed using conda.`



------------
Dependencies
------------

* **At runtime:** This package does not have any dependencies at runtime.
* **For tests:** To run `Test`_, ``scipy`` package is required and can be installed by

  ::

      python -m pip install -r tests/requirements.txt

---------------
Install Package
---------------

Either `Install from PyPi`_, `Install from Anaconda Cloud`_, or `Build and Install from Source Code`_.

.. _Install_PyPi:

~~~~~~~~~~~~~~~~~
Install from PyPi
~~~~~~~~~~~~~~~~~

|pypi| |format| |implementation| |pyversions|

The recommended installation method is through the package available at `PyPi <https://pypi.org/project/special_functions>`__ using ``pip``.

1. Ensure ``pip`` is installed within Python and upgrade the existing ``pip`` by

   ::

       python -m ensurepip
       python -m pip install --upgrade pip

   If you are using PyPy instead of Python, ensure ``pip`` is installed and upgrade the existing ``pip`` by

   ::

       pypy -m ensurepip
       pypy -m pip install --upgrade pip

2. Install this package in Python by
   
   ::
       
       python -m pip install special_functions

   or, in PyPy by

   ::
       
       pypy -m pip install special_functions

.. _Install_Conda:

~~~~~~~~~~~~~~~~~~~~~~~~~~~
Install from Anaconda Cloud
~~~~~~~~~~~~~~~~~~~~~~~~~~~

|conda-version| |conda-platform|

Alternatively, the package can be installed through `Anaconda could <https://anaconda.org/s-ameli/special_functions>`__.

* In **Linux** and **Windows**:
  
  ::
      
      conda install -c s-ameli special_functions

* In **macOS**:
  
  ::
      
      conda install -c s-ameli -c conda-forge special_functions

.. _Build_Locally:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Build and Install from Source Code
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

|release|

**Build dependencies:** To build the package from the source code, ``numpy`` and ``cython`` are required. These dependencies are installed automatically during the build process and no action is needed.

1. Install both C and Fortran compilers as follows.

   * **Linux:** Install ``gcc``, for instance, by ``apt`` (or any other package manager on your Linux distro)

     ::

         sudo apt install gcc gfortran

   * **macOS:** Install ``gcc`` via Homebrew:

     ::

         sudo brew install gcc

     *Note:* If ``gcc`` is already installed, but Fortran compiler is yet not available on macOS, you may resolve this issue by reinstalling:
     
     ::
         
         sudo brew reinstall gcc

   * **Windows:** Install both `Microsoft Visual C++ compiler <https://visualstudio.microsoft.com/vs/features/cplusplus/>`__ and Intel Fortran compiler (`Intel oneAPI <https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html>`__). Open the command prompt (where you will enter the installation commands in the next step) and load the Intel compiler variables by

     ::

         C:\Program Files (x86)\Intel\oneAPI\setvars.bat

     Here, we assumed the Intel Fortran compiler is installed in ``C:\Program Files (x86)\Intel\oneAPI``. You may set this directory accordingly to the directory of your Intel compiler.


2. Clone the source code and install this package by
   
   ::

       git clone https://github.com/ameli/special_functions.git
       cd special_functions
       python -m pip install .

**Warning:** After the package is built and installed from the source code, the package cannot be imported properly if the current working directory is the same as the source code directory. To properly import the package, change the current working directory to a directory anywhere else **outside** of the source code directory. For instance:
    
.. code-block:: python
   
   cd ..
   python
   >>> import special_functions

====
Test
====

|codecov-devel|

To test package, install ``tox``:

::

    python -m pip install tox

and test the package with

::

    tox

=================
List of Functions
=================

----------
Python API
----------

========================  =========  ===================================================================================================================
Syntax                    Symbol     User guide
========================  =========  ===================================================================================================================
``besselj(nu, z, n)``     |image06|  `Bessel function of the first kind <https://ameli.github.io/special_functions/api/besselj.html>`__
``bessely(nu, z, n)``     |image07|  `Bessel function of the second kind <https://ameli.github.io/special_functions/api/bessely.html>`__ (Weber function)
``besseli(nu, z, n)``     |image08|  `Modified Bessel function of the first kind <https://ameli.github.io/special_functions/api/besseli.html>`__
``besselk(nu, z, n)``     |image09|  `Modified Bessel function of the second kind <https://ameli.github.io/special_functions/api/besselk.html>`__
``besselh(nu, k, z, n)``  |image10|  `Bessel function of the third kind <https://ameli.github.io/special_functions/api/besselh.html>`__ (Hankel function)
``lngamma(x)``            |image11|  `Natural logarithm of Gamma function <https://ameli.github.io/special_functions/api/lngamma.html>`__
========================  =========  ===================================================================================================================

**Typed Arguments:**

========  ==============================  =========  ==============================================================
Argument   Type                           Symbol     Description
========  ==============================  =========  ==============================================================
``nu``    ``double``                      |image01|  Parameter of Bessel functions.
``k``     ``int``                         |image02|  Can be ``1`` or ``2`` and sets the type of Hankel function.
``z``     ``double``, ``double complex``  |image03|  Real or complex argument of the Bessel functions.
``x``     ``double``                      |image04|  Real argument of the functions.
``n``     ``int``                         |image05|  Order of derivative of function. Zero indicates no derivative.
========  ==============================  =========  ==============================================================

----------
Cython API
----------

In Cython interface, the syntax of the **real** functions are similar to the Python interface. However, the syntax of **complex** functions start with the letter ``c`` in the beginning of each function as shown in the table below.

=========  ========================  =========================
Symbol     Real Function             Complex Function          
=========  ========================  =========================
|image06|  ``besselj(nu, x, n)``     ``cbesselj(nu, z, n)``    
|image07|  ``bessely(nu, x, n)``     ``cbessely(nu, z, n)``    
|image08|  ``besseli(nu, x, n)``     ``cbesseli(nu, z, n)``    
|image09|  ``besselk(nu, x, n)``     ``cbesselk(nu, z, n)``    
|image10|  ``besselh(nu, k, x, n)``  ``cbesselh(nu, k, z, n)`` 
|image11|  ``lngamma(x)``            N/A
=========  ========================  =========================

.. |image01| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image01.svg
.. |image02| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image02.svg
.. |image03| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image03.svg
.. |image04| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image04.svg
.. |image05| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image05.svg
.. |image06| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image06.svg
.. |image07| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image07.svg
.. |image08| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image08.svg
.. |image09| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image09.svg
.. |image10| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image10.svg
.. |image11| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image11.svg

========
Examples
========
 
--------------------
Using in Cython Code
--------------------

The codes below should be used in a ``.pyx`` file and compiled with Cython.

As shown in the codes below, the python's global lock interpreter, or ``gil``, can be optionally released inside the scope of ``with nogil:`` statement. This is especially useful in parallel OpenMP environments.

~~~~~~~~~~~~~
Real Function
~~~~~~~~~~~~~

This example shows the real function ``besselk`` to compute the modified Bessel function of the second kind for a real argument ``z``. The output variables ``d0k``, ``d1k``, and ``d2k`` represent the values of modified Bessel function and its first and second derivatives, respectively.

.. code-block:: python

    >>> # cimport module in a *.pyx file
    >>> from special_functions cimport besselk

    >>> # Declare typed variables
    >>> cdef double nu = 2.5
    >>> cdef double z = 2.0
    >>> cdef double d0k, d1k, d2k

    >>> # Releasing gil to secure maximum cythonic speedup
    >>> with nogil:
    ...     d0k = besselk(nu, z, 0)    # no derivative
    ...     d1k = besselk(nu, z, 1)    # 1st derivative
    ...     d2k = besselk(nu, z, 2)    # 2nd derivative

~~~~~~~~~~~~~~~~
Complex Function
~~~~~~~~~~~~~~~~

The example below is similar to the above, except, the *complex* function ``cbesselk`` with complex argument ``z`` is used. The output variables ``d0k``, ``d1k``, and ``d2k`` are also complex.

.. code-block:: python

    >>> # cimport module in a *.pyx file
    >>> from special_functions cimport cbesselk

    >>> # Declare typed variables
    >>> cdef double nu = 2.5
    >>> cdef double complex z = 2.0 + 1.0j
    >>> cdef double complex d0k, d1k, d2k

    >>> # Releasing gil to secure maximum cythonic speedup
    >>> with nogil:
    ...     d0k = cbesselk(nu, z, 0)    # no derivative
    ...     d1k = cbesselk(nu, z, 1)    # 1st derivative
    ...     d2k = cbesselk(nu, z, 2)    # 2nd derivative

--------------------
Using in Python Code
--------------------

The codes below should be used in a ``.py`` file and no compilation is required. The python's global lock interpreter, or ``gil``, cannot be released.

~~~~~~~~~~~~~
Real Function
~~~~~~~~~~~~~

The example below uses the function ``besselk`` with the real argument ``z`` to compute the modified Bessel function of the second kind and its first and second derivatives.

.. code-block:: python

    >>> # import module in a *.py file
    >>> from special_functions import besselk

    >>> nu = 2.5
    >>> z = 2.0

    >>> d0k = besselk(nu, z)       # no derivative
    >>> d1k = besselk(nu, z, 1)    # 1st derivative
    >>> d2k = besselk(nu, z, 2)    # 2nd derivative

~~~~~~~~~~~~~~~~
Complex Function
~~~~~~~~~~~~~~~~

To use a complex input argument ``z`` in the Python interface, the same function ``besselk`` as the previous example can be used. This is unlike the Cython interface in which ``cbesselk`` should be used.

.. code-block:: python

    >>> # import module in a *.py file
    >>> from special_functions import besselk

    >>> nu = 2.5
    >>> z = 2.0 + 1.0j

    >>> d0k = besselk(nu, z)       # no derivative
    >>> d1k = besselk(nu, z, 1)    # 1st derivative
    >>> d2k = besselk(nu, z, 2)    # 2nd derivative

================
Related Packages
================

* `scipy.special <https://docs.scipy.org/doc/scipy/reference/special.html>`__: Many special functions were implemented in Scipy's special sub-package. This package is reimplements Bessel functions similar to ``scipy.special``, but with simplified python and cython different interfaces.
* `G-Learn <https://github.com/ameli/glearn>`__: A python package for machine learning using Gaussian process regression. This package makes use of ``special_functions``.

================
Acknowledgements
================

* National Science Foundation #1520825
* American Heart Association #18EIA33900046

========
Citation
========

* Ameli, S. (2022). ameli/special_functions: (v0.1.0). Zenodo. |code-doi|

======
Credit
======

This package uses the following libraries:

* Amos, D. E. (1986). Algorithm 644: A portable package for Bessel functions of a complex argument and nonnegative order. ACM Trans. Math. Softw. 12, 3 (Sept. 1986), 265-273. DOI: `https://doi.org/10.1145/7921.214331 <https://doi.org/10.1145/7921.214331>`__. Available at `http://netlib.org/amos/ <http://netlib.org/amos/>`__.
* Moshier, S. L. (1989). C language library with special functions for mathematical physics. Available at `http://www.netlib.org/cephes/index.html <http://www.netlib.org/cephes>`__.


.. |codecov-devel| image:: https://img.shields.io/codecov/c/github/ameli/special_functions
   :target: https://codecov.io/gh/ameli/special_functions
.. |docs| image:: https://github.com/ameli/special_functions/workflows/docs/badge.svg
   :target: https://ameli.github.io/special_functions/index.html
.. |licence| image:: https://img.shields.io/github/license/ameli/special_functions
   :target: https://opensource.org/licenses/BSD-3-Clause
.. |travis-devel-linux| image:: https://img.shields.io/travis/com/ameli/special_functions?env=BADGE=linux&label=build&branch=main
   :target: https://travis-ci.com/github/ameli/special_functions
.. |travis-devel-osx| image:: https://img.shields.io/travis/com/ameli/special_functions?env=BADGE=osx&label=build&branch=main
   :target: https://travis-ci.com/github/ameli/special_functions
.. |travis-devel-windows| image:: https://img.shields.io/travis/com/ameli/special_functions?env=BADGE=windows&label=build&branch=main
   :target: https://travis-ci.com/github/ameli/special_functions
.. |implementation| image:: https://img.shields.io/pypi/implementation/special_functions
.. |pyversions| image:: https://img.shields.io/pypi/pyversions/special_functions
.. |format| image:: https://img.shields.io/pypi/format/special_functions
.. |pypi| image:: https://img.shields.io/pypi/v/special_functions
   :target: https://pypi.org/project/special-functions/
.. |conda| image:: https://anaconda.org/s-ameli/special_functions/badges/installer/conda.svg
   :target: https://anaconda.org/s-ameli/special_functions
.. |platforms| image:: https://img.shields.io/conda/pn/s-ameli/special_functions?color=orange?label=platforms
   :target: https://anaconda.org/s-ameli/special_functions
.. |conda-version| image:: https://img.shields.io/conda/v/s-ameli/special_functions
   :target: https://anaconda.org/s-ameli/special_functions
.. |conda-platform| image:: https://anaconda.org/s-ameli/special_functions/badges/platforms.svg
   :target: https://anaconda.org/s-ameli/special_functions
.. |release| image:: https://img.shields.io/github/v/tag/ameli/special_functions
   :target: https://github.com/ameli/special_functions/releases/
.. |binder| image:: https://mybinder.org/badge_logo.svg
   :target: https://mybinder.org/v2/gh/ameli/special_functions/HEAD?filepath=notebooks%2Fspecial_functions.ipynb
.. |downloads| image:: https://pepy.tech/badge/special-functions
   :target: https://pepy.tech/project/special_functions
.. |code-doi| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6395374.svg
   :target: https://doi.org/10.5281/zenodo.6395374

            

Raw data

            {
    "_id": null,
    "home_page": "https://ameli.github.io/special_functions/",
    "name": "special-functions",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "special-functions bessel-function gamma-function",
    "author": "",
    "author_email": "Siavash Ameli <sameli@berkeley.edu>",
    "download_url": "https://files.pythonhosted.org/packages/37/bf/811ecb2dd69996b4fe55556501821b8b735d2975480572fce68497ccaf32/special_functions-0.3.7.tar.gz",
    "platform": null,
    "description": "*****************\nspecial functions\n*****************\n\n|licence| |docs|\n\nThis package provides both Python and Cython interfaces for Bessel functions and a few other special functions. \n\n========\nFeatures\n========\n\n* **Lightweight:** This package requires *no python dependency* at runtime.\n* **Cython interface:** Both Python and Cython interfaces are available.\n* **Releasing GIL:** Most importantly, the functions can be used in ``with nogil:`` environment, which is essential in parallel OpenMP applications with Cython.\n\n========\nTutorial\n========\n\n|binder|\n\nLaunch `online interactive notebook <https://mybinder.org/v2/gh/ameli/special_functions/HEAD?filepath=notebooks%2Fspecial_functions.ipynb>`__ with Binder.\n\n\n=====\nLinks\n=====\n\n* `Documentation <https://ameli.github.io/special_functions/index.html>`__\n* `Package on Anaconda Cloud <https://anaconda.org/s-ameli/special_functions>`__\n* `Package on PyPI <https://pypi.org/project/special_functions/>`__\n* `Github <https://ameli.github.io/special_functions>`__\n\n=======\nInstall\n=======\n\n-------------------\nSupported Platforms\n-------------------\n\nSuccessful installation and tests have been performed on the following platforms and Python/PyPy versions shown in the table below.\n\n.. |y| unicode:: U+2714\n.. |n| unicode:: U+2716\n\n+----------+-------------------+-------+-------+-------+-------+-------+-------+-------+-----------------+\n| Platform | Arch              | Python Version                | PyPy Version :sup:`1` | Continuous      |\n+          |                   +-------+-------+-------+-------+-------+-------+-------+ Integration     +\n|          |                   |  3.9  |  3.10 |  3.11 |  3.12 |  3.8  |  3.9  |  3.10 |                 |\n+==========+===================+=======+=======+=======+=======+=======+=======+=======+=================+\n| Linux    | X86-64            |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  | |build-linux|   |\n+          +-------------------+-------+-------+-------+-------+-------+-------+-------+                 +\n|          | AARCH-64          |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |                 |\n+----------+-------------------+-------+-------+-------+-------+-------+-------+-------+-----------------+\n| macOS    | X86-64            |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  | |build-macos|   |\n+          +-------------------+-------+-------+-------+-------+-------+-------+-------+                 +\n|          | ARM-64            |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |                 |\n+----------+-------------------+-------+-------+-------+-------+-------+-------+-------+-----------------+\n| Windows  | X86-64            |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  |  |y|  | |build-windows| |\n+----------+-------------------+-------+-------+-------+-------+-------+-------+-------+-----------------+\n\n.. |build-linux| image:: https://github.com/ameli/special_functions/workflows/build-linux/badge.svg\n   :target: https://github.com/ameli/special_functions/actions?query=workflow%3Abuild-linux \n.. |build-macos| image:: https://github.com/ameli/special_functions/workflows/build-macos/badge.svg\n   :target: https://github.com/ameli/special_functions/actions?query=workflow%3Abuild-macos\n.. |build-windows| image:: https://github.com/ameli/special_functions/workflows/build-windows/badge.svg\n   :target: https://github.com/ameli/special_functions/actions?query=workflow%3Abuild-windows\n\nPython wheels for ``special_functions`` for all supported platforms and versions in the above are available through `PyPI <https://pypi.org/project/special_functions/>`__ and `Anaconda Cloud <https://anaconda.org/s-ameli/special_functions>`__. If you need ``special_functions`` on other platforms, architectures, and Python or PyPy versions, `raise an issue <https://github.com/ameli/special_functions/issues>`__ on GitHub and we build its Python Wheel for you.\n\n.. line-block::\n\n    :sup:`1. Wheels for PyPy are exclusively available for installation through pip and cannot be installed using conda.`\n\n\n\n------------\nDependencies\n------------\n\n* **At runtime:** This package does not have any dependencies at runtime.\n* **For tests:** To run `Test`_, ``scipy`` package is required and can be installed by\n\n  ::\n\n      python -m pip install -r tests/requirements.txt\n\n---------------\nInstall Package\n---------------\n\nEither `Install from PyPi`_, `Install from Anaconda Cloud`_, or `Build and Install from Source Code`_.\n\n.. _Install_PyPi:\n\n~~~~~~~~~~~~~~~~~\nInstall from PyPi\n~~~~~~~~~~~~~~~~~\n\n|pypi| |format| |implementation| |pyversions|\n\nThe recommended installation method is through the package available at `PyPi <https://pypi.org/project/special_functions>`__ using ``pip``.\n\n1. Ensure ``pip`` is installed within Python and upgrade the existing ``pip`` by\n\n   ::\n\n       python -m ensurepip\n       python -m pip install --upgrade pip\n\n   If you are using PyPy instead of Python, ensure ``pip`` is installed and upgrade the existing ``pip`` by\n\n   ::\n\n       pypy -m ensurepip\n       pypy -m pip install --upgrade pip\n\n2. Install this package in Python by\n   \n   ::\n       \n       python -m pip install special_functions\n\n   or, in PyPy by\n\n   ::\n       \n       pypy -m pip install special_functions\n\n.. _Install_Conda:\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\nInstall from Anaconda Cloud\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n|conda-version| |conda-platform|\n\nAlternatively, the package can be installed through `Anaconda could <https://anaconda.org/s-ameli/special_functions>`__.\n\n* In **Linux** and **Windows**:\n  \n  ::\n      \n      conda install -c s-ameli special_functions\n\n* In **macOS**:\n  \n  ::\n      \n      conda install -c s-ameli -c conda-forge special_functions\n\n.. _Build_Locally:\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nBuild and Install from Source Code\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n|release|\n\n**Build dependencies:** To build the package from the source code, ``numpy`` and ``cython`` are required. These dependencies are installed automatically during the build process and no action is needed.\n\n1. Install both C and Fortran compilers as follows.\n\n   * **Linux:** Install ``gcc``, for instance, by ``apt`` (or any other package manager on your Linux distro)\n\n     ::\n\n         sudo apt install gcc gfortran\n\n   * **macOS:** Install ``gcc`` via Homebrew:\n\n     ::\n\n         sudo brew install gcc\n\n     *Note:* If ``gcc`` is already installed, but Fortran compiler is yet not available on macOS, you may resolve this issue by reinstalling:\n     \n     ::\n         \n         sudo brew reinstall gcc\n\n   * **Windows:** Install both `Microsoft Visual C++ compiler <https://visualstudio.microsoft.com/vs/features/cplusplus/>`__ and Intel Fortran compiler (`Intel oneAPI <https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html>`__). Open the command prompt (where you will enter the installation commands in the next step) and load the Intel compiler variables by\n\n     ::\n\n         C:\\Program Files (x86)\\Intel\\oneAPI\\setvars.bat\n\n     Here, we assumed the Intel Fortran compiler is installed in ``C:\\Program Files (x86)\\Intel\\oneAPI``. You may set this directory accordingly to the directory of your Intel compiler.\n\n\n2. Clone the source code and install this package by\n   \n   ::\n\n       git clone https://github.com/ameli/special_functions.git\n       cd special_functions\n       python -m pip install .\n\n**Warning:** After the package is built and installed from the source code, the package cannot be imported properly if the current working directory is the same as the source code directory. To properly import the package, change the current working directory to a directory anywhere else **outside** of the source code directory. For instance:\n    \n.. code-block:: python\n   \n   cd ..\n   python\n   >>> import special_functions\n\n====\nTest\n====\n\n|codecov-devel|\n\nTo test package, install ``tox``:\n\n::\n\n    python -m pip install tox\n\nand test the package with\n\n::\n\n    tox\n\n=================\nList of Functions\n=================\n\n----------\nPython API\n----------\n\n========================  =========  ===================================================================================================================\nSyntax                    Symbol     User guide\n========================  =========  ===================================================================================================================\n``besselj(nu, z, n)``     |image06|  `Bessel function of the first kind <https://ameli.github.io/special_functions/api/besselj.html>`__\n``bessely(nu, z, n)``     |image07|  `Bessel function of the second kind <https://ameli.github.io/special_functions/api/bessely.html>`__ (Weber function)\n``besseli(nu, z, n)``     |image08|  `Modified Bessel function of the first kind <https://ameli.github.io/special_functions/api/besseli.html>`__\n``besselk(nu, z, n)``     |image09|  `Modified Bessel function of the second kind <https://ameli.github.io/special_functions/api/besselk.html>`__\n``besselh(nu, k, z, n)``  |image10|  `Bessel function of the third kind <https://ameli.github.io/special_functions/api/besselh.html>`__ (Hankel function)\n``lngamma(x)``            |image11|  `Natural logarithm of Gamma function <https://ameli.github.io/special_functions/api/lngamma.html>`__\n========================  =========  ===================================================================================================================\n\n**Typed Arguments:**\n\n========  ==============================  =========  ==============================================================\nArgument   Type                           Symbol     Description\n========  ==============================  =========  ==============================================================\n``nu``    ``double``                      |image01|  Parameter of Bessel functions.\n``k``     ``int``                         |image02|  Can be ``1`` or ``2`` and sets the type of Hankel function.\n``z``     ``double``, ``double complex``  |image03|  Real or complex argument of the Bessel functions.\n``x``     ``double``                      |image04|  Real argument of the functions.\n``n``     ``int``                         |image05|  Order of derivative of function. Zero indicates no derivative.\n========  ==============================  =========  ==============================================================\n\n----------\nCython API\n----------\n\nIn Cython interface, the syntax of the **real** functions are similar to the Python interface. However, the syntax of **complex** functions start with the letter ``c`` in the beginning of each function as shown in the table below.\n\n=========  ========================  =========================\nSymbol     Real Function             Complex Function          \n=========  ========================  =========================\n|image06|  ``besselj(nu, x, n)``     ``cbesselj(nu, z, n)``    \n|image07|  ``bessely(nu, x, n)``     ``cbessely(nu, z, n)``    \n|image08|  ``besseli(nu, x, n)``     ``cbesseli(nu, z, n)``    \n|image09|  ``besselk(nu, x, n)``     ``cbesselk(nu, z, n)``    \n|image10|  ``besselh(nu, k, x, n)``  ``cbesselh(nu, k, z, n)`` \n|image11|  ``lngamma(x)``            N/A\n=========  ========================  =========================\n\n.. |image01| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image01.svg\n.. |image02| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image02.svg\n.. |image03| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image03.svg\n.. |image04| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image04.svg\n.. |image05| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image05.svg\n.. |image06| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image06.svg\n.. |image07| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image07.svg\n.. |image08| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image08.svg\n.. |image09| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image09.svg\n.. |image10| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image10.svg\n.. |image11| image:: https://raw.githubusercontent.com/ameli/special_functions/main/docs/source/_static/images/formulas/image11.svg\n\n========\nExamples\n========\n \n--------------------\nUsing in Cython Code\n--------------------\n\nThe codes below should be used in a ``.pyx`` file and compiled with Cython.\n\nAs shown in the codes below, the python's global lock interpreter, or ``gil``, can be optionally released inside the scope of ``with nogil:`` statement. This is especially useful in parallel OpenMP environments.\n\n~~~~~~~~~~~~~\nReal Function\n~~~~~~~~~~~~~\n\nThis example shows the real function ``besselk`` to compute the modified Bessel function of the second kind for a real argument ``z``. The output variables ``d0k``, ``d1k``, and ``d2k`` represent the values of modified Bessel function and its first and second derivatives, respectively.\n\n.. code-block:: python\n\n    >>> # cimport module in a *.pyx file\n    >>> from special_functions cimport besselk\n\n    >>> # Declare typed variables\n    >>> cdef double nu = 2.5\n    >>> cdef double z = 2.0\n    >>> cdef double d0k, d1k, d2k\n\n    >>> # Releasing gil to secure maximum cythonic speedup\n    >>> with nogil:\n    ...     d0k = besselk(nu, z, 0)    # no derivative\n    ...     d1k = besselk(nu, z, 1)    # 1st derivative\n    ...     d2k = besselk(nu, z, 2)    # 2nd derivative\n\n~~~~~~~~~~~~~~~~\nComplex Function\n~~~~~~~~~~~~~~~~\n\nThe example below is similar to the above, except, the *complex* function ``cbesselk`` with complex argument ``z`` is used. The output variables ``d0k``, ``d1k``, and ``d2k`` are also complex.\n\n.. code-block:: python\n\n    >>> # cimport module in a *.pyx file\n    >>> from special_functions cimport cbesselk\n\n    >>> # Declare typed variables\n    >>> cdef double nu = 2.5\n    >>> cdef double complex z = 2.0 + 1.0j\n    >>> cdef double complex d0k, d1k, d2k\n\n    >>> # Releasing gil to secure maximum cythonic speedup\n    >>> with nogil:\n    ...     d0k = cbesselk(nu, z, 0)    # no derivative\n    ...     d1k = cbesselk(nu, z, 1)    # 1st derivative\n    ...     d2k = cbesselk(nu, z, 2)    # 2nd derivative\n\n--------------------\nUsing in Python Code\n--------------------\n\nThe codes below should be used in a ``.py`` file and no compilation is required. The python's global lock interpreter, or ``gil``, cannot be released.\n\n~~~~~~~~~~~~~\nReal Function\n~~~~~~~~~~~~~\n\nThe example below uses the function ``besselk`` with the real argument ``z`` to compute the modified Bessel function of the second kind and its first and second derivatives.\n\n.. code-block:: python\n\n    >>> # import module in a *.py file\n    >>> from special_functions import besselk\n\n    >>> nu = 2.5\n    >>> z = 2.0\n\n    >>> d0k = besselk(nu, z)       # no derivative\n    >>> d1k = besselk(nu, z, 1)    # 1st derivative\n    >>> d2k = besselk(nu, z, 2)    # 2nd derivative\n\n~~~~~~~~~~~~~~~~\nComplex Function\n~~~~~~~~~~~~~~~~\n\nTo use a complex input argument ``z`` in the Python interface, the same function ``besselk`` as the previous example can be used. This is unlike the Cython interface in which ``cbesselk`` should be used.\n\n.. code-block:: python\n\n    >>> # import module in a *.py file\n    >>> from special_functions import besselk\n\n    >>> nu = 2.5\n    >>> z = 2.0 + 1.0j\n\n    >>> d0k = besselk(nu, z)       # no derivative\n    >>> d1k = besselk(nu, z, 1)    # 1st derivative\n    >>> d2k = besselk(nu, z, 2)    # 2nd derivative\n\n================\nRelated Packages\n================\n\n* `scipy.special <https://docs.scipy.org/doc/scipy/reference/special.html>`__: Many special functions were implemented in Scipy's special sub-package. This package is reimplements Bessel functions similar to ``scipy.special``, but with simplified python and cython different interfaces.\n* `G-Learn <https://github.com/ameli/glearn>`__: A python package for machine learning using Gaussian process regression. This package makes use of ``special_functions``.\n\n================\nAcknowledgements\n================\n\n* National Science Foundation #1520825\n* American Heart Association #18EIA33900046\n\n========\nCitation\n========\n\n* Ameli, S. (2022). ameli/special_functions: (v0.1.0). Zenodo. |code-doi|\n\n======\nCredit\n======\n\nThis package uses the following libraries:\n\n* Amos, D. E. (1986). Algorithm 644: A portable package for Bessel functions of a complex argument and nonnegative order. ACM Trans. Math. Softw. 12, 3 (Sept. 1986), 265-273. DOI: `https://doi.org/10.1145/7921.214331 <https://doi.org/10.1145/7921.214331>`__. Available at `http://netlib.org/amos/ <http://netlib.org/amos/>`__.\n* Moshier, S. L. (1989). C language library with special functions for mathematical physics. Available at `http://www.netlib.org/cephes/index.html <http://www.netlib.org/cephes>`__.\n\n\n.. |codecov-devel| image:: https://img.shields.io/codecov/c/github/ameli/special_functions\n   :target: https://codecov.io/gh/ameli/special_functions\n.. |docs| image:: https://github.com/ameli/special_functions/workflows/docs/badge.svg\n   :target: https://ameli.github.io/special_functions/index.html\n.. |licence| image:: https://img.shields.io/github/license/ameli/special_functions\n   :target: https://opensource.org/licenses/BSD-3-Clause\n.. |travis-devel-linux| image:: https://img.shields.io/travis/com/ameli/special_functions?env=BADGE=linux&label=build&branch=main\n   :target: https://travis-ci.com/github/ameli/special_functions\n.. |travis-devel-osx| image:: https://img.shields.io/travis/com/ameli/special_functions?env=BADGE=osx&label=build&branch=main\n   :target: https://travis-ci.com/github/ameli/special_functions\n.. |travis-devel-windows| image:: https://img.shields.io/travis/com/ameli/special_functions?env=BADGE=windows&label=build&branch=main\n   :target: https://travis-ci.com/github/ameli/special_functions\n.. |implementation| image:: https://img.shields.io/pypi/implementation/special_functions\n.. |pyversions| image:: https://img.shields.io/pypi/pyversions/special_functions\n.. |format| image:: https://img.shields.io/pypi/format/special_functions\n.. |pypi| image:: https://img.shields.io/pypi/v/special_functions\n   :target: https://pypi.org/project/special-functions/\n.. |conda| image:: https://anaconda.org/s-ameli/special_functions/badges/installer/conda.svg\n   :target: https://anaconda.org/s-ameli/special_functions\n.. |platforms| image:: https://img.shields.io/conda/pn/s-ameli/special_functions?color=orange?label=platforms\n   :target: https://anaconda.org/s-ameli/special_functions\n.. |conda-version| image:: https://img.shields.io/conda/v/s-ameli/special_functions\n   :target: https://anaconda.org/s-ameli/special_functions\n.. |conda-platform| image:: https://anaconda.org/s-ameli/special_functions/badges/platforms.svg\n   :target: https://anaconda.org/s-ameli/special_functions\n.. |release| image:: https://img.shields.io/github/v/tag/ameli/special_functions\n   :target: https://github.com/ameli/special_functions/releases/\n.. |binder| image:: https://mybinder.org/badge_logo.svg\n   :target: https://mybinder.org/v2/gh/ameli/special_functions/HEAD?filepath=notebooks%2Fspecial_functions.ipynb\n.. |downloads| image:: https://pepy.tech/badge/special-functions\n   :target: https://pepy.tech/project/special_functions\n.. |code-doi| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.6395374.svg\n   :target: https://doi.org/10.5281/zenodo.6395374\n",
    "bugtrack_url": null,
    "license": "Copyright (c) 2020-2022, Siavash Ameli <sameli@berkeley.edu> All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.",
    "summary": "Cython and Python API for special functions.",
    "version": "0.3.7",
    "project_urls": {
        "Documentation": "https://ameli.github.io/special_functions/",
        "Download": "https://github.com/ameli/special_functions/archive/main.zip",
        "Homepage": "https://ameli.github.io/special_functions/",
        "Source": "https://github.com/ameli/special_functions/",
        "Tracker": "https://github.com/ameli/special_functions/issues"
    },
    "split_keywords": [
        "special-functions",
        "bessel-function",
        "gamma-function"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "32021b20bf15fb4a411b46042a777c023af750302b99f36de35e6e806d7c95ac",
                "md5": "be4a642dfa118c9f9dad2cc5afdf311b",
                "sha256": "0472cab3fa84380fed0b22b6298f7d319bfb2c71bbb66db2a6cee67587c43a59"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "be4a642dfa118c9f9dad2cc5afdf311b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1826886,
            "upload_time": "2024-01-21T23:19:54",
            "upload_time_iso_8601": "2024-01-21T23:19:54.580087Z",
            "url": "https://files.pythonhosted.org/packages/32/02/1b20bf15fb4a411b46042a777c023af750302b99f36de35e6e806d7c95ac/special_functions-0.3.7-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0c6b8473073418b134ae7a726c35b9a9fc431d57cdbacde2b2a5a8ed41271b06",
                "md5": "aa7435a896cae7fdd673c5c37aca4edf",
                "sha256": "32921e8eb7373f5ed9a97f54cf09433e077eeda3d1e96378ba1e306f53ed2e7c"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "aa7435a896cae7fdd673c5c37aca4edf",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1821469,
            "upload_time": "2024-01-21T23:58:51",
            "upload_time_iso_8601": "2024-01-21T23:58:51.505172Z",
            "url": "https://files.pythonhosted.org/packages/0c/6b/8473073418b134ae7a726c35b9a9fc431d57cdbacde2b2a5a8ed41271b06/special_functions-0.3.7-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c00a3ce949956b140220af139facfd730e8520e2a23a3f4abf167d5f2758f9c1",
                "md5": "661be8f2b56455967e3de2e4c3a5abd0",
                "sha256": "e40d39ffa805608b98a7ae9eb7766cd4f88aaf5b2bc60127abc7d6434a7bb42f"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "661be8f2b56455967e3de2e4c3a5abd0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 949333,
            "upload_time": "2024-01-21T23:18:05",
            "upload_time_iso_8601": "2024-01-21T23:18:05.886573Z",
            "url": "https://files.pythonhosted.org/packages/c0/0a/3ce949956b140220af139facfd730e8520e2a23a3f4abf167d5f2758f9c1/special_functions-0.3.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1211b7d412f837fbfe77b3a768061c7bac31b4af2d37a456df259dc79b459d57",
                "md5": "3abecce4b0f262079ffb53b74909f625",
                "sha256": "824a2b593d7747fbd511e5852f204ab68e9fd074699555faf494c21f7a5d5a12"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3abecce4b0f262079ffb53b74909f625",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1533116,
            "upload_time": "2024-01-21T23:19:56",
            "upload_time_iso_8601": "2024-01-21T23:19:56.611460Z",
            "url": "https://files.pythonhosted.org/packages/12/11/b7d412f837fbfe77b3a768061c7bac31b4af2d37a456df259dc79b459d57/special_functions-0.3.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "256664a72841732d788cc1f480b2aa943d382665b9f06b1cca27714655a5e619",
                "md5": "7d95d989beec30938b1d16dfa4bbf700",
                "sha256": "beeda39143c6e57aebeb16ea1f07d777cd1255165e7713184241cd58643821e2"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7d95d989beec30938b1d16dfa4bbf700",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1937626,
            "upload_time": "2024-01-21T23:19:58",
            "upload_time_iso_8601": "2024-01-21T23:19:58.035957Z",
            "url": "https://files.pythonhosted.org/packages/25/66/64a72841732d788cc1f480b2aa943d382665b9f06b1cca27714655a5e619/special_functions-0.3.7-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ca417e27eaf16da67dfbd795a88270e4f6ad76a1b8f160cc8a6b38bd8b139524",
                "md5": "42f8d7285749620cc730e58d101aa86f",
                "sha256": "ebae65259bbf695c3806349bd750217707c814460a32d01af12c2c1f516d5bbe"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "42f8d7285749620cc730e58d101aa86f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1824678,
            "upload_time": "2024-01-21T23:20:00",
            "upload_time_iso_8601": "2024-01-21T23:20:00.095629Z",
            "url": "https://files.pythonhosted.org/packages/ca/41/7e27eaf16da67dfbd795a88270e4f6ad76a1b8f160cc8a6b38bd8b139524/special_functions-0.3.7-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "498333d654d61bcf214b2c21698701fba6c8ec8fd11189569bd518241be3a4ae",
                "md5": "115ac79ada575239fd8e1fb9d6591989",
                "sha256": "7c2f83f6d8f94eb7022280c580e3636d5111a599e5cc381b74851f4461634415"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "115ac79ada575239fd8e1fb9d6591989",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1819683,
            "upload_time": "2024-01-21T23:52:08",
            "upload_time_iso_8601": "2024-01-21T23:52:08.902258Z",
            "url": "https://files.pythonhosted.org/packages/49/83/33d654d61bcf214b2c21698701fba6c8ec8fd11189569bd518241be3a4ae/special_functions-0.3.7-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cc219db9160a479227303a2ce416c1d97d94241cd4b6eff1126daed1e329fcc6",
                "md5": "f33756f63e830d10a1fcf3cb226876c0",
                "sha256": "6415ccba0e1132cccf4046fd718646480e0e7cbbcdd44b7af108664424889063"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f33756f63e830d10a1fcf3cb226876c0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 948598,
            "upload_time": "2024-01-21T23:18:08",
            "upload_time_iso_8601": "2024-01-21T23:18:08.509571Z",
            "url": "https://files.pythonhosted.org/packages/cc/21/9db9160a479227303a2ce416c1d97d94241cd4b6eff1126daed1e329fcc6/special_functions-0.3.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "acb667dde6d382dbdeef569686e0113d8406f5f8d37bc55f9d45957976b07f13",
                "md5": "73625c92be75f811c42c4a7b84b9ae5a",
                "sha256": "c384bedf18464af7b7b985010cc20c45c60a5702c5dd493e726be35aec2a339c"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "73625c92be75f811c42c4a7b84b9ae5a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1533404,
            "upload_time": "2024-01-21T23:20:01",
            "upload_time_iso_8601": "2024-01-21T23:20:01.809911Z",
            "url": "https://files.pythonhosted.org/packages/ac/b6/67dde6d382dbdeef569686e0113d8406f5f8d37bc55f9d45957976b07f13/special_functions-0.3.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3e9da9eca758c2185b798a0c4559cd21919b2d5b1646ff4c714837beac0c7f48",
                "md5": "5679c3a0862dddfd5fd13589cb598d4f",
                "sha256": "c00ac0011db67064a3f9fde1a33f28fbc11a1b34315d68e9f2383169862b38b2"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5679c3a0862dddfd5fd13589cb598d4f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1938010,
            "upload_time": "2024-01-21T23:20:04",
            "upload_time_iso_8601": "2024-01-21T23:20:04.175463Z",
            "url": "https://files.pythonhosted.org/packages/3e/9d/a9eca758c2185b798a0c4559cd21919b2d5b1646ff4c714837beac0c7f48/special_functions-0.3.7-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c61d9d30ba9171898583b829eb0b791b9280b3fefcb072ffa9211c4f30d3a462",
                "md5": "690c674853cdc270888ebb9b705f91b4",
                "sha256": "a2963cec90a2ff53819f3a55e93f3796d377a13d932380fab1aef309bc9e86d2"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "690c674853cdc270888ebb9b705f91b4",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1827640,
            "upload_time": "2024-01-21T23:20:06",
            "upload_time_iso_8601": "2024-01-21T23:20:06.311948Z",
            "url": "https://files.pythonhosted.org/packages/c6/1d/9d30ba9171898583b829eb0b791b9280b3fefcb072ffa9211c4f30d3a462/special_functions-0.3.7-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c12f7544d21b907ca222e914f42b093405a93fd842b607512d787f9d9e827f3a",
                "md5": "97e6e030de346a6916669965a0289358",
                "sha256": "11cf7108966dbc9fd66eb15489e24e77fc529226407f8cc8fe9913be3e0ee84f"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "97e6e030de346a6916669965a0289358",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 950570,
            "upload_time": "2024-01-21T23:18:10",
            "upload_time_iso_8601": "2024-01-21T23:18:10.675037Z",
            "url": "https://files.pythonhosted.org/packages/c1/2f/7544d21b907ca222e914f42b093405a93fd842b607512d787f9d9e827f3a/special_functions-0.3.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "27aca6feff58cac5e9035f9140b4ca06e69c25cc4cacd32f0dca5ddb9650ba06",
                "md5": "3d01574ab5bb35d7d07b75f5e0428c50",
                "sha256": "7212571851d30d20cd31b8fc3ac6b66f9d3fad7de9ee807f7699b2b3b014e683"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3d01574ab5bb35d7d07b75f5e0428c50",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1536320,
            "upload_time": "2024-01-21T23:20:08",
            "upload_time_iso_8601": "2024-01-21T23:20:08.698730Z",
            "url": "https://files.pythonhosted.org/packages/27/ac/a6feff58cac5e9035f9140b4ca06e69c25cc4cacd32f0dca5ddb9650ba06/special_functions-0.3.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "028753647a854231b72524849470f32b7c1bc6f9b45eac78fbe1204ea2b8a399",
                "md5": "bf16a6056b698da8f4e277f434ae9d00",
                "sha256": "b46c6bf7fda0add57b5b3082a423cfb7171020e4943aa912efa2cfe9ff41e6f0"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "bf16a6056b698da8f4e277f434ae9d00",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1942433,
            "upload_time": "2024-01-21T23:20:11",
            "upload_time_iso_8601": "2024-01-21T23:20:11.307461Z",
            "url": "https://files.pythonhosted.org/packages/02/87/53647a854231b72524849470f32b7c1bc6f9b45eac78fbe1204ea2b8a399/special_functions-0.3.7-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8e0b7935b03050d61201cb744a99a9ad747f1beedd06d4746b2edfa4472be68c",
                "md5": "f3e7f7894504731892c081f6c4566cd2",
                "sha256": "b29cfcbee2947542cfa53546fc775aacdf8821e808ec3163a0457a7f1516a0a6"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f3e7f7894504731892c081f6c4566cd2",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1826870,
            "upload_time": "2024-01-21T23:20:13",
            "upload_time_iso_8601": "2024-01-21T23:20:13.528760Z",
            "url": "https://files.pythonhosted.org/packages/8e/0b/7935b03050d61201cb744a99a9ad747f1beedd06d4746b2edfa4472be68c/special_functions-0.3.7-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "87c0d3afcca14d250b8ceaf61d13d453302e81c77dfd033c22ffbb01dda22e0d",
                "md5": "4677fa9137fb5b5fe44f047499cc085e",
                "sha256": "21b733a48ad35ab681787375bd9a382d490dd760774a83d576e29b4346f51d55"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4677fa9137fb5b5fe44f047499cc085e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 948874,
            "upload_time": "2024-01-21T23:18:12",
            "upload_time_iso_8601": "2024-01-21T23:18:12.851502Z",
            "url": "https://files.pythonhosted.org/packages/87/c0/d3afcca14d250b8ceaf61d13d453302e81c77dfd033c22ffbb01dda22e0d/special_functions-0.3.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "645c5b82869619c89d771aad6634527c04c6ddcbfa34c0ecbd1af04e6ef1295a",
                "md5": "faf026fc19407987cd3256f362ca257b",
                "sha256": "6ef6522d290007df8043e4b0be16a3f6d321bb6e7df4966257c261eb8b8bc44c"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "faf026fc19407987cd3256f362ca257b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1533046,
            "upload_time": "2024-01-21T23:20:15",
            "upload_time_iso_8601": "2024-01-21T23:20:15.611160Z",
            "url": "https://files.pythonhosted.org/packages/64/5c/5b82869619c89d771aad6634527c04c6ddcbfa34c0ecbd1af04e6ef1295a/special_functions-0.3.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3c1f68c1b26933cece00bec6dc9500b0d3062752011278b7d1b9e5e3ddd3b93a",
                "md5": "fffb8e33551920cbdd2ad50dcdf5cc70",
                "sha256": "9926324690650862dbce81ff35f0868136d082253a33516b0b705a36c766d394"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "fffb8e33551920cbdd2ad50dcdf5cc70",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1937496,
            "upload_time": "2024-01-21T23:20:18",
            "upload_time_iso_8601": "2024-01-21T23:20:18.677112Z",
            "url": "https://files.pythonhosted.org/packages/3c/1f/68c1b26933cece00bec6dc9500b0d3062752011278b7d1b9e5e3ddd3b93a/special_functions-0.3.7-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fc26e7dde9ef45494b372af4d5c8f65d7527733d4dd7fdfeb1e09694407d5864",
                "md5": "1d8b60ba93014e9710b53a8ce0288d4f",
                "sha256": "bb2e4b56d1726afb4ca54b5631ef844996370dfcea69feb98f90d2cf3bdc5f90"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp310-pypy310_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1d8b60ba93014e9710b53a8ce0288d4f",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 1787625,
            "upload_time": "2024-01-21T23:20:20",
            "upload_time_iso_8601": "2024-01-21T23:20:20.226599Z",
            "url": "https://files.pythonhosted.org/packages/fc/26/e7dde9ef45494b372af4d5c8f65d7527733d4dd7fdfeb1e09694407d5864/special_functions-0.3.7-pp310-pypy310_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "03ebc26f06980d4eeee728ec0862247b1b395693cb7d600301a644bf5f3fbfcd",
                "md5": "b15cf4fe801fb199d2012a0ddfbd5d41",
                "sha256": "00d8dc6d96f5a78973e4c8f2f3e0b34701e87f467432bec6b6e79cdcfb1c6efe"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b15cf4fe801fb199d2012a0ddfbd5d41",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 900485,
            "upload_time": "2024-01-21T23:18:14",
            "upload_time_iso_8601": "2024-01-21T23:18:14.920295Z",
            "url": "https://files.pythonhosted.org/packages/03/eb/c26f06980d4eeee728ec0862247b1b395693cb7d600301a644bf5f3fbfcd/special_functions-0.3.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8e8c060d84c07d8c4d853005fe1d389ed2da8dee3f321e23232550485feadd9a",
                "md5": "97ae15d862b642ec222a476beb6635e3",
                "sha256": "063ab80aef6551b74e4adefe8aadf42f030ad47505fb3a058959416b99878d02"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "97ae15d862b642ec222a476beb6635e3",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 1480041,
            "upload_time": "2024-01-21T23:20:22",
            "upload_time_iso_8601": "2024-01-21T23:20:22.330524Z",
            "url": "https://files.pythonhosted.org/packages/8e/8c/060d84c07d8c4d853005fe1d389ed2da8dee3f321e23232550485feadd9a/special_functions-0.3.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7109e05976318c38cf315100b20a1933f49768734e0f714795b0e6752b975754",
                "md5": "d8018fa37ff88d08780ed091ac7a6e8e",
                "sha256": "bb3af66e5ee2b8455d5e7978c6adcb3f5b00253a19654e84b7b41ff6f95c2d94"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp310-pypy310_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d8018fa37ff88d08780ed091ac7a6e8e",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 1889451,
            "upload_time": "2024-01-21T23:20:24",
            "upload_time_iso_8601": "2024-01-21T23:20:24.383473Z",
            "url": "https://files.pythonhosted.org/packages/71/09/e05976318c38cf315100b20a1933f49768734e0f714795b0e6752b975754/special_functions-0.3.7-pp310-pypy310_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b10e398e2cfc6cc9d9af057737934699a6c4a8b45e41ae9974a196f2084b72e6",
                "md5": "eb05309b83f5f0ca7bafd07030597978",
                "sha256": "a385b19d6589dc0ae391b297b5fa636a5446f9f210ca057585525980eef2c75e"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "eb05309b83f5f0ca7bafd07030597978",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 1780032,
            "upload_time": "2024-01-21T23:20:26",
            "upload_time_iso_8601": "2024-01-21T23:20:26.862924Z",
            "url": "https://files.pythonhosted.org/packages/b1/0e/398e2cfc6cc9d9af057737934699a6c4a8b45e41ae9974a196f2084b72e6/special_functions-0.3.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fac368277f7eb04071c14bd0c329baec8d6c37f949ab741da1e6024fd13804e5",
                "md5": "f4ad2059512b2fa810cba5c2e3fbc83c",
                "sha256": "2a2f97c02b7fc41d4f597645d66c4069b4e5487628874c9e1191c39b40b4aaae"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "f4ad2059512b2fa810cba5c2e3fbc83c",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 891095,
            "upload_time": "2024-01-21T23:18:17",
            "upload_time_iso_8601": "2024-01-21T23:18:17.251895Z",
            "url": "https://files.pythonhosted.org/packages/fa/c3/68277f7eb04071c14bd0c329baec8d6c37f949ab741da1e6024fd13804e5/special_functions-0.3.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ad085ec03cc2bb4da5e0909a073d4e92ad8a9dbc87ee24b2b34e69b32995fb0",
                "md5": "79a39efef6a6e5d581cb03dee21cc490",
                "sha256": "92eeb82d42a3ef75913e1bf8d93258c8254d0fe727070229c81e516a23cd1756"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "79a39efef6a6e5d581cb03dee21cc490",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 1471215,
            "upload_time": "2024-01-21T23:20:29",
            "upload_time_iso_8601": "2024-01-21T23:20:29.002819Z",
            "url": "https://files.pythonhosted.org/packages/0a/d0/85ec03cc2bb4da5e0909a073d4e92ad8a9dbc87ee24b2b34e69b32995fb0/special_functions-0.3.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "873cd792623ebe01af1fbe56ead9a14f48fc8950bfa41dfff59244004c028295",
                "md5": "f4ea4508e6ff52af656bd21698b44387",
                "sha256": "2c75cfbdadcc5952d832ee1b04ce5fa5035cc83cfdad21a25d33a6b2a786efc0"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp38-pypy38_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f4ea4508e6ff52af656bd21698b44387",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 1881234,
            "upload_time": "2024-01-21T23:20:30",
            "upload_time_iso_8601": "2024-01-21T23:20:30.377478Z",
            "url": "https://files.pythonhosted.org/packages/87/3c/d792623ebe01af1fbe56ead9a14f48fc8950bfa41dfff59244004c028295/special_functions-0.3.7-pp38-pypy38_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4ffefb2a289dd970a158bf90ee80f23139dd97cb8261144e72fe7185b5632ef4",
                "md5": "37490e4eb6f1c6c582b35a3c08183ed3",
                "sha256": "855533f90ca8dc106c676b00ca6f278ef8e7f2a2332ed2aae52209fd50625ad8"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "37490e4eb6f1c6c582b35a3c08183ed3",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 1787534,
            "upload_time": "2024-01-21T23:20:32",
            "upload_time_iso_8601": "2024-01-21T23:20:32.662502Z",
            "url": "https://files.pythonhosted.org/packages/4f/fe/fb2a289dd970a158bf90ee80f23139dd97cb8261144e72fe7185b5632ef4/special_functions-0.3.7-pp39-pypy39_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5218a1fdcdd6398aedf29dcc34aa525aad7d75efdcb3f57a71a4a9798321b45c",
                "md5": "22de41cfffb5b12c127dc54fd484ab7e",
                "sha256": "88b666f22a8029cf4c69556a5910559a5f4d403fcd748757c0c6a31de832a2af"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "22de41cfffb5b12c127dc54fd484ab7e",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 900437,
            "upload_time": "2024-01-21T23:18:19",
            "upload_time_iso_8601": "2024-01-21T23:18:19.298030Z",
            "url": "https://files.pythonhosted.org/packages/52/18/a1fdcdd6398aedf29dcc34aa525aad7d75efdcb3f57a71a4a9798321b45c/special_functions-0.3.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "82c7a3173e9a9db0c06c2caaeecce3dc46a6e92be0c7213d4a45a84374e5439e",
                "md5": "ee90fe8c9e0b62d78fd64c02c8899003",
                "sha256": "f1088e213eb17988bad753e4e98928a45eaa5303f22a59076cb6bf6f0de195f8"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ee90fe8c9e0b62d78fd64c02c8899003",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 1480033,
            "upload_time": "2024-01-21T23:20:34",
            "upload_time_iso_8601": "2024-01-21T23:20:34.112274Z",
            "url": "https://files.pythonhosted.org/packages/82/c7/a3173e9a9db0c06c2caaeecce3dc46a6e92be0c7213d4a45a84374e5439e/special_functions-0.3.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "796a9f870720b61bf191214535c11ac4fa4f270c55ba6a02d6e3da329e3e9c66",
                "md5": "f4c1ff458461a077f6a3a15f736005f1",
                "sha256": "17e40e871fdf2ca583fead55bcea0d8989bf183e724ae23837df6cbeec561286"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7-pp39-pypy39_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f4c1ff458461a077f6a3a15f736005f1",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 1889338,
            "upload_time": "2024-01-21T23:20:36",
            "upload_time_iso_8601": "2024-01-21T23:20:36.672170Z",
            "url": "https://files.pythonhosted.org/packages/79/6a/9f870720b61bf191214535c11ac4fa4f270c55ba6a02d6e3da329e3e9c66/special_functions-0.3.7-pp39-pypy39_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "37bf811ecb2dd69996b4fe55556501821b8b735d2975480572fce68497ccaf32",
                "md5": "53d1cf88bc6e249969a15790a00ee566",
                "sha256": "36f2c27f6f7a89afc5f7b79d99d16678c3812afb1d42eaddf4d2cf9d7f67e37d"
            },
            "downloads": -1,
            "filename": "special_functions-0.3.7.tar.gz",
            "has_sig": false,
            "md5_digest": "53d1cf88bc6e249969a15790a00ee566",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 397078,
            "upload_time": "2024-01-21T23:20:38",
            "upload_time_iso_8601": "2024-01-21T23:20:38.605515Z",
            "url": "https://files.pythonhosted.org/packages/37/bf/811ecb2dd69996b4fe55556501821b8b735d2975480572fce68497ccaf32/special_functions-0.3.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-21 23:20:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ameli",
    "github_project": "special_functions",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "special-functions"
}
        
Elapsed time: 0.26993s