[](https://github.com/rjfarmer/pyQuadp/actions/workflows/ci.yml)
[](https://coveralls.io/github/rjfarmer/pyQuadp?branch=main)
[](https://img.shields.io/pypi/pyversions/gfort2py.svg)
[](https://img.shields.io/badge/gfortran-8%7C9%7C10%7C11%7C12-blue)
# pyQuadp
Python interface to gcc's libquadmath for quad (128-bit) precision maths.
## Build
````bash
python -m build
python -m pip install .
````
Package is not yet available on pypi.
This package requires ``quadmath.h`` and ``libquadmath.so``. This might come installed with your installation of gcc/gfortran from your package manager. Or it might require a separate installation. This should be installed before trying to install the Python package.
### Fedora
````bash
sudo dnf install libquadmath libquadmath-devel
````
## Usage
### qfloat
A quad precision number is created by passing either a int, float, or string to ``qfloat``:
````python
import pyquadp
q = pyquadp.qfloat(1)
q = pyquadp.qfloat(1.0)
q = pyquadp.qfloat('1')
````
A ``qfloat`` implements Python's NumberProtocol, thus it can be used like any other number, either with basic math operations or in rich comparisons:
````python
q1 = pyquadp.qfloat(1)
q2 = pyquadp.qfloat(2)
q1+q2 # pyquadp.qfloat(3)
q1*q2 # pyquadp.qfloat(2)
q1+=q2 # pyquadp.qfloat(3)
q1 <= q2 # True
q1 == q2 # False
str(q) # "1.000000000000000000000000000000000000e+00"
````
### qcmplx
A quad precision number is created by passing either a complex variable or two ints, floats, strs, or qfloats to ``qcmplx``:
````python
import pyquadp
q = pyquadp.qcmplx(complex(1,1))
q = pyquadp.qcmplx(1,1.0)
q = pyquadp.qcmplx('1',1.0)
q = pyquadp.qcmplx('1','1')
q = pyquadp.qcmplx(pyquadp.qfloat(1), pyquadp.qfloat('1'))
````
Note that strings must be split into two components. There is no support for ``1+1j`` (unless passed via complex('1+1j'))
<!-- A ``qcmplx`` implements Python's NumberProtocol, thus it can be used like any other number, either with basic math operations or in rich comparisons:
````python
q1 = pyquadp.qfloat(1)
q2 = pyquadp.qfloat(2)
q1+q2 # pyquadp.qfloat(3)
q1*q2 # pyquadp.qfloat(2)
q1+=q2 # pyquadp.qfloat(3)
q1 <= q2 # True
q1 == q2 # False
str(q) # "1.000000000000000000000000000000000000e+00"
```` -->
## Math libraries
The ``qmath`` provides the union of math operations from Python's ``math`` library and the routines provided in ``libquadmath``. ``qmath`` provides routines for ``qfloat``, while complex numbers are handled by ``qcmath`` versions.
Where possible functions accessed via the Python name follows Python's conventions
regarding behavior of exceptional values. While routines from ``libquadmath`` (those ending in ``q``) follows ``libquadmath``'s conventions.
### Routines from Python's ``math`` library
| Name | Implemented | Descritpion |
|----------|-------------|-------------|
| ceil | :heavy_check_mark: | |
| comb | :x: | |
| copysign | :heavy_check_mark: | |
| fabs |:heavy_check_mark: | |
| factorial | :x: | |
| floor | :heavy_check_mark: | |
| fmod | :heavy_check_mark: | |
| frexp | :heavy_check_mark: | |
| fsum | :x: | |
| gcd | :x: | |
| isclose | :x: | |
| isfinite | :x: | |
| isinf | :heavy_check_mark: | |
| isnan | :heavy_check_mark: | |
| isqrt | :x: | |
| lcm | :x: | |
| ldexp | :heavy_check_mark: | |
| modf | :heavy_check_mark: | |
| nextafter | :heavy_check_mark: | |
| perm | :x: | |
| prod | :x: | |
| remainder | :heavy_check_mark: | |
| trunc | :heavy_check_mark: | |
| ulp | :x: | |
| cbrt | :heavy_check_mark: | |
| exp | :heavy_check_mark: | |
| exp2 | :heavy_check_mark: | |
| expm1 | :heavy_check_mark: | |
| log | :heavy_check_mark: | |
| log1p | :heavy_check_mark: | |
| log2 | :heavy_check_mark: | |
| log10 | :heavy_check_mark: | |
| pow | :heavy_check_mark: | |
| sqrt | :heavy_check_mark: | |
| acos | :heavy_check_mark: | |
| asin | :heavy_check_mark: | |
| atan | :heavy_check_mark: | |
| atan2 | :heavy_check_mark: | |
| cos | :heavy_check_mark: | |
| dist | :x: | |
| hypot | :heavy_check_mark: | |
| sin | :heavy_check_mark: | |
| tan | :heavy_check_mark: | |
| degress | :x: | |
| radians | :x: | |
| acosh | :heavy_check_mark: | |
| asinh| :heavy_check_mark: | |
| atanh| :heavy_check_mark: | |
| cosh| :heavy_check_mark: | |
| sinh| :heavy_check_mark: | |
| tanh| :heavy_check_mark: | |
| erf| :heavy_check_mark: | |
| erfc| :heavy_check_mark: | |
| gamma| :heavy_check_mark: | |
| lgamma| :heavy_check_mark: | |
| pi | :heavy_check_mark: | |
| e | :heavy_check_mark: | |
| tau | :heavy_check_mark: | |
| inf | :heavy_check_mark: | |
| nan | :heavy_check_mark: | |
### Routines from gcc's ``libquadthmath`` library
| Name | Implemented |
|----------|-------------|
|acosq | :heavy_check_mark: | arc cosine function |
|acoshq | :heavy_check_mark: | inverse hyperbolic cosine function |
|asinq | :heavy_check_mark: | arc sine function |
|asinhq | :heavy_check_mark: | inverse hyperbolic sine function |
|atanq | :heavy_check_mark: | arc tangent function |
|atanhq | :heavy_check_mark: | inverse hyperbolic tangent function |
|atan2q | :heavy_check_mark: | arc tangent function |
|cbrtq | :heavy_check_mark: | cube root function |
|ceilq | :heavy_check_mark: | ceiling value function |
|copysignq |:heavy_check_mark: | copy sign of a number
|coshq | :heavy_check_mark: | hyperbolic cosine function |
|cosq | :heavy_check_mark: | cosine function |
|erfq | :heavy_check_mark: | error function |
|erfcq | :heavy_check_mark: | complementary error function |
|exp2q | :heavy_check_mark: | base 2 exponential function |
|expq | :heavy_check_mark: | exponential function |
|expm1q | :heavy_check_mark: | exponential minus 1 function |
|fabsq | :heavy_check_mark: | absolute value function |
|fdimq | :heavy_check_mark: | positive difference function |
|finiteq | :heavy_check_mark: | check finiteness of value
|floorq | :heavy_check_mark: | floor value function |
|fmaq | :heavy_check_mark: | fused multiply and add |
|fmaxq | :heavy_check_mark: | determine maximum of two values |
|fminq | :heavy_check_mark: | determine minimum of two values |
|fmodq | :heavy_check_mark: | remainder value function |
|frexpq | :heavy_check_mark: | extract mantissa and exponent |
|hypotq | :heavy_check_mark: | Eucledian distance function |
|ilogbq | :heavy_check_mark: | get exponent of the value |
|isinfq | :heavy_check_mark: | check for infinity |
|isnanq | :heavy_check_mark: | check for not a number |
|issignalingq | :heavy_check_mark: | check for signaling not a number |
|j0q | :heavy_check_mark: | Bessel function of the first kind, first order |
|j1q | :heavy_check_mark: | Bessel function of the first kind, second order |
|jnq | :heavy_check_mark: | Bessel function of the first kind, n-th order |
|ldexpq | :heavy_check_mark: | load exponent of the value |
|lgammaq | :heavy_check_mark: | logarithmic gamma function |
|llrintq | :heavy_check_mark: | round to nearest integer value |
|llroundq |:heavy_check_mark: | round to nearest integer value away from zero |
|logbq | :heavy_check_mark: | get exponent of the value |
|logq | :heavy_check_mark: | natural logarithm function |
|log10q | :heavy_check_mark: | base 10 logarithm function |
|log1pq | :heavy_check_mark: | compute natural logarithm of the value plus one |
|log2q | :heavy_check_mark: | base 2 logarithm function |
|lrintq | :heavy_check_mark: | round to nearest integer value |
|lroundq | :heavy_check_mark: | round to nearest integer value away from zero |
|modfq | :heavy_check_mark: | decompose the floating-point number |
|nanq | :heavy_check_mark: | return quiet NaN |
|nearbyintq | :heavy_check_mark: | round to nearest integer |
|nextafterq | ::heavy_check_mark: | next representable floating-point number |
|powq | :heavy_check_mark: | power function |
|remainderq | :heavy_check_mark: | remainder function |
|remquoq | :heavy_check_mark: | remainder and part of quotient |
|rintq | :heavy_check_mark: | round-to-nearest integral value |
|roundq | :heavy_check_mark: | round-to-nearest integral value, return __float128 |
|scalblnq | :heavy_check_mark: | compute exponent using FLT_RADIX |
|scalbnq | :heavy_check_mark: | compute exponent using FLT_RADIX |
|signbitq | :heavy_check_mark: | return sign bit |
|sincosq | :heavy_check_mark: | calculate sine and cosine simultaneously |
|sinhq | :heavy_check_mark: | hyperbolic sine function |
|sinq | :heavy_check_mark: | sine function |
|sqrtq | :heavy_check_mark: | square root function |
|tanq | :heavy_check_mark: | tangent function |
|tanhq | :heavy_check_mark: | hyperbolic tangent function |
|tgammaq | :heavy_check_mark: | true gamma function |
|truncq | :heavy_check_mark: | round to integer, towards zero |
|y0q | :heavy_check_mark: | Bessel function of the second kind, first order |
|y1q | :heavy_check_mark: | Bessel function of the second kind, second order |
|ynq | :heavy_check_mark: | Bessel function of the second kind, n-th order |
### Routines from Python's complex math ``cmath`` library
These are available from ``qcmath``
| Name | Implemented | Descritpion |
|----------|-------------|-------------|
| phase | :heavy_check_mark: | |
| polar | :heavy_check_mark: | |
| rect | :heavy_check_mark: | |
| exp | :heavy_check_mark: | |
| log | :heavy_check_mark: | |
| log10 | :heavy_check_mark: | |
| sqrt | :heavy_check_mark: | |
| acos | :heavy_check_mark: | |
| asin | :heavy_check_mark: | |
| atan | :heavy_check_mark: | |
| cos | :heavy_check_mark: | |
| sin | :heavy_check_mark: | |
| tan | :heavy_check_mark: | |
| acosh | :heavy_check_mark: | |
| asinh | :heavy_check_mark: | |
| atanh | :heavy_check_mark: | |
| cosh | :heavy_check_mark: | |
| sinh | :heavy_check_mark: | |
| tanh | :heavy_check_mark: | |
| isfinite | :heavy_check_mark: | |
| isinf | :heavy_check_mark: | |
| isnan | :heavy_check_mark: | |
| isclose | :x: | |
| pi | :heavy_check_mark: | |
| e | :heavy_check_mark: | |
| tau | :heavy_check_mark: | |
| inf | :heavy_check_mark: | |
| infj | :heavy_check_mark: | |
| nan | :heavy_check_mark: | |
| nanj | :heavy_check_mark: | |
### Routines from complex math ``libquadthmath`` library
These are available from ``qcmath``
| Name | Implemented | Descritpion |
|----------|-------------|-------------|
| cabsq | :heavy_check_mark: | complex absolute value function |
| cargq | :heavy_check_mark: | calculate the argument |
| cimagq | :heavy_check_mark: | imaginary part of complex number |
| crealq | :heavy_check_mark: | real part of complex number |
| cacoshq | :heavy_check_mark: | complex arc hyperbolic cosine function |
| cacosq | :heavy_check_mark: | complex arc cosine function |
| casinhq | :heavy_check_mark: | complex arc hyperbolic sine function |
| casinq | :heavy_check_mark: | complex arc sine function |
| catanhq | :heavy_check_mark: | complex arc hyperbolic tangent function |
| catanq | :heavy_check_mark: | complex arc tangent function |
| ccosq: | :heavy_check_mark: | complex cosine function |
| ccoshq | :heavy_check_mark: | complex hyperbolic cosine function |
| cexpq | :heavy_check_mark: | complex exponential function |
| cexpiq | :heavy_check_mark: | computes the exponential function of ``i`` times a real value |
| clogq | :heavy_check_mark: | complex natural logarithm |
| clog10q | :heavy_check_mark: | complex base 10 logarithm |
| conjq | :heavy_check_mark: | complex conjugate function |
| cpowq | :heavy_check_mark: | complex power function |
| cprojq | :heavy_check_mark: | project into Riemann Sphere |
| csinq | :heavy_check_mark: | complex sine function |
| csinhq | :heavy_check_mark: | complex hyperbolic sine function |
| csqrtq | :heavy_check_mark: | complex square root |
| ctanq | :heavy_check_mark: | complex tangent function |
| ctanhq | :heavy_check_mark: | complex hyperbolic tangent function |
### Constants from ``libquadthmath`` library.
The following constants are availbe both in ``qmath`` and ``qcmath``
| Name | Implemented | Descritpion |
|----------|-------------|-------------|
| FLT128_MAX | :heavy_check_mark: | largest finite number |
| FLT128_MIN| :heavy_check_mark: | smallest positive number with full precision |
| FLT128_EPSILON | :heavy_check_mark: | difference between 1 and the next larger representable number |
| FLT128_DENORM_MIN | :heavy_check_mark: | smallest positive denormalized number |
| FLT128_MANT_DIG | :heavy_check_mark: | number of digits in the mantissa (bit precision) |
| FLT128_MIN_EXP | :heavy_check_mark: | maximal negative exponent |
| FLT128_MAX_EXP | :heavy_check_mark: | maximal positive exponent |
| FLT128_DIG | :heavy_check_mark: | number of decimal digits in the mantissa |
| FLT128_MIN_10_EXP | :heavy_check_mark: | maximal negative decimal exponent |
| FLT128_MAX_10_EXP | :heavy_check_mark: | maximal positive decimal exponent |
| M_Eq | :heavy_check_mark: | the constant e (Euler’s number) |
| M_LOG2Eq | :heavy_check_mark: | binary logarithm of 2 |
| M_LOG10Eq | :heavy_check_mark: | common, decimal logarithm of 2 |
| M_LN2q | :heavy_check_mark: | natural logarithm of 2 |
| M_LN10q | :heavy_check_mark: | natural logarithm of 10 |
| M_PIq | :heavy_check_mark: | pi |
| M_PI_2q | :heavy_check_mark: | pi divided by two |
| M_PI_4q | :heavy_check_mark: | pi divided by four |
| M_1_PIq | :heavy_check_mark: | one over pi |
| M_2_PIq | :heavy_check_mark: | one over two pi |
| M_2_SQRTPIq | :heavy_check_mark: | two over square root of pi |
| M_SQRT2q | :heavy_check_mark: | square root of 2 |
| M_SQRT1_2q | :heavy_check_mark: | one over square root of 2 |
Raw data
{
"_id": null,
"home_page": "https://github.com/rjfarmer/pyquadp",
"name": "pyquadp",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "",
"author": "Robert Farmer",
"author_email": "robert.j.farmer37@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/d9/dd/78d037e52a16ad506353637281c1bcc769df8d19f4d7359c0805aa6699ed/pyquadp-0.0.0.tar.gz",
"platform": "unix",
"description": "[](https://github.com/rjfarmer/pyQuadp/actions/workflows/ci.yml)\n[](https://coveralls.io/github/rjfarmer/pyQuadp?branch=main)\n[](https://img.shields.io/pypi/pyversions/gfort2py.svg)\n[](https://img.shields.io/badge/gfortran-8%7C9%7C10%7C11%7C12-blue)\n\n\n# pyQuadp\n\nPython interface to gcc's libquadmath for quad (128-bit) precision maths.\n\n## Build\n````bash\npython -m build\npython -m pip install . \n````\n\nPackage is not yet available on pypi.\n\nThis package requires ``quadmath.h`` and ``libquadmath.so``. This might come installed with your installation of gcc/gfortran from your package manager. Or it might require a separate installation. This should be installed before trying to install the Python package.\n\n### Fedora\n\n````bash\nsudo dnf install libquadmath libquadmath-devel\n````\n\n\n## Usage\n\n### qfloat\n\nA quad precision number is created by passing either a int, float, or string to ``qfloat``:\n\n````python\nimport pyquadp\n\nq = pyquadp.qfloat(1)\nq = pyquadp.qfloat(1.0)\nq = pyquadp.qfloat('1')\n````\n\nA ``qfloat`` implements Python's NumberProtocol, thus it can be used like any other number, either with basic math operations or in rich comparisons:\n\n````python\n\nq1 = pyquadp.qfloat(1)\nq2 = pyquadp.qfloat(2)\n\nq1+q2 # pyquadp.qfloat(3)\nq1*q2 # pyquadp.qfloat(2)\nq1+=q2 # pyquadp.qfloat(3)\n\nq1 <= q2 # True\nq1 == q2 # False\n\nstr(q) # \"1.000000000000000000000000000000000000e+00\"\n````\n\n### qcmplx\n\nA quad precision number is created by passing either a complex variable or two ints, floats, strs, or qfloats to ``qcmplx``:\n\n````python\nimport pyquadp\n\nq = pyquadp.qcmplx(complex(1,1))\nq = pyquadp.qcmplx(1,1.0)\nq = pyquadp.qcmplx('1',1.0)\nq = pyquadp.qcmplx('1','1')\nq = pyquadp.qcmplx(pyquadp.qfloat(1), pyquadp.qfloat('1'))\n````\n\nNote that strings must be split into two components. There is no support for ``1+1j`` (unless passed via complex('1+1j'))\n\n\n<!-- A ``qcmplx`` implements Python's NumberProtocol, thus it can be used like any other number, either with basic math operations or in rich comparisons:\n\n````python\n\nq1 = pyquadp.qfloat(1)\nq2 = pyquadp.qfloat(2)\n\nq1+q2 # pyquadp.qfloat(3)\nq1*q2 # pyquadp.qfloat(2)\nq1+=q2 # pyquadp.qfloat(3)\n\nq1 <= q2 # True\nq1 == q2 # False\n\nstr(q) # \"1.000000000000000000000000000000000000e+00\"\n```` -->\n\n## Math libraries\n\nThe ``qmath`` provides the union of math operations from Python's ``math`` library and the routines provided in ``libquadmath``. ``qmath`` provides routines for ``qfloat``, while complex numbers are handled by ``qcmath`` versions.\n\nWhere possible functions accessed via the Python name follows Python's conventions\nregarding behavior of exceptional values. While routines from ``libquadmath`` (those ending in ``q``) follows ``libquadmath``'s conventions.\n\n\n### Routines from Python's ``math`` library\n\n| Name | Implemented | Descritpion |\n|----------|-------------|-------------|\n| ceil | :heavy_check_mark: | |\n| comb | :x: | |\n| copysign | :heavy_check_mark: | |\n| fabs |:heavy_check_mark: | |\n| factorial | :x: | |\n| floor | :heavy_check_mark: | |\n| fmod | :heavy_check_mark: | |\n| frexp | :heavy_check_mark: | |\n| fsum | :x: | |\n| gcd | :x: | |\n| isclose | :x: | |\n| isfinite | :x: | |\n| isinf | :heavy_check_mark: | |\n| isnan | :heavy_check_mark: | |\n| isqrt | :x: | |\n| lcm | :x: | |\n| ldexp | :heavy_check_mark: | |\n| modf | :heavy_check_mark: | |\n| nextafter | :heavy_check_mark: | |\n| perm | :x: | |\n| prod | :x: | |\n| remainder | :heavy_check_mark: | |\n| trunc | :heavy_check_mark: | |\n| ulp | :x: | |\n| cbrt | :heavy_check_mark: | |\n| exp | :heavy_check_mark: | |\n| exp2 | :heavy_check_mark: | |\n| expm1 | :heavy_check_mark: | |\n| log | :heavy_check_mark: | |\n| log1p | :heavy_check_mark: | |\n| log2 | :heavy_check_mark: | |\n| log10 | :heavy_check_mark: | |\n| pow | :heavy_check_mark: | |\n| sqrt | :heavy_check_mark: | |\n| acos | :heavy_check_mark: | |\n| asin | :heavy_check_mark: | |\n| atan | :heavy_check_mark: | |\n| atan2 | :heavy_check_mark: | |\n| cos | :heavy_check_mark: | |\n| dist | :x: | |\n| hypot | :heavy_check_mark: | |\n| sin | :heavy_check_mark: | |\n| tan | :heavy_check_mark: | |\n| degress | :x: | |\n| radians | :x: | |\n| acosh | :heavy_check_mark: | |\n| asinh| :heavy_check_mark: | |\n| atanh| :heavy_check_mark: | |\n| cosh| :heavy_check_mark: | |\n| sinh| :heavy_check_mark: | |\n| tanh| :heavy_check_mark: | |\n| erf| :heavy_check_mark: | |\n| erfc| :heavy_check_mark: | |\n| gamma| :heavy_check_mark: | |\n| lgamma| :heavy_check_mark: | |\n| pi | :heavy_check_mark: | | \n| e | :heavy_check_mark: | | \n| tau | :heavy_check_mark: | | \n| inf | :heavy_check_mark: | |\n| nan | :heavy_check_mark: | | \n\n\n### Routines from gcc's ``libquadthmath`` library\n\n| Name | Implemented |\n|----------|-------------|\n|acosq | :heavy_check_mark: | arc cosine function |\n|acoshq | :heavy_check_mark: | inverse hyperbolic cosine function |\n|asinq | :heavy_check_mark: | arc sine function |\n|asinhq | :heavy_check_mark: | inverse hyperbolic sine function |\n|atanq | :heavy_check_mark: | arc tangent function |\n|atanhq | :heavy_check_mark: | inverse hyperbolic tangent function |\n|atan2q | :heavy_check_mark: | arc tangent function |\n|cbrtq | :heavy_check_mark: | cube root function |\n|ceilq | :heavy_check_mark: | ceiling value function |\n|copysignq |:heavy_check_mark: | copy sign of a number\n|coshq | :heavy_check_mark: | hyperbolic cosine function |\n|cosq | :heavy_check_mark: | cosine function |\n|erfq | :heavy_check_mark: | error function |\n|erfcq | :heavy_check_mark: | complementary error function |\n|exp2q | :heavy_check_mark: | base 2 exponential function |\n|expq | :heavy_check_mark: | exponential function |\n|expm1q | :heavy_check_mark: | exponential minus 1 function |\n|fabsq | :heavy_check_mark: | absolute value function |\n|fdimq | :heavy_check_mark: | positive difference function |\n|finiteq | :heavy_check_mark: | check finiteness of value\n|floorq | :heavy_check_mark: | floor value function |\n|fmaq | :heavy_check_mark: | fused multiply and add |\n|fmaxq | :heavy_check_mark: | determine maximum of two values |\n|fminq | :heavy_check_mark: | determine minimum of two values |\n|fmodq | :heavy_check_mark: | remainder value function |\n|frexpq | :heavy_check_mark: | extract mantissa and exponent |\n|hypotq | :heavy_check_mark: | Eucledian distance function |\n|ilogbq | :heavy_check_mark: | get exponent of the value |\n|isinfq | :heavy_check_mark: | check for infinity |\n|isnanq | :heavy_check_mark: | check for not a number |\n|issignalingq | :heavy_check_mark: | check for signaling not a number |\n|j0q | :heavy_check_mark: | Bessel function of the first kind, first order |\n|j1q | :heavy_check_mark: | Bessel function of the first kind, second order |\n|jnq | :heavy_check_mark: | Bessel function of the first kind, n-th order |\n|ldexpq | :heavy_check_mark: | load exponent of the value |\n|lgammaq | :heavy_check_mark: | logarithmic gamma function |\n|llrintq | :heavy_check_mark: | round to nearest integer value |\n|llroundq |:heavy_check_mark: | round to nearest integer value away from zero |\n|logbq | :heavy_check_mark: | get exponent of the value |\n|logq | :heavy_check_mark: | natural logarithm function |\n|log10q | :heavy_check_mark: | base 10 logarithm function |\n|log1pq | :heavy_check_mark: | compute natural logarithm of the value plus one |\n|log2q | :heavy_check_mark: | base 2 logarithm function |\n|lrintq | :heavy_check_mark: | round to nearest integer value |\n|lroundq | :heavy_check_mark: | round to nearest integer value away from zero |\n|modfq | :heavy_check_mark: | decompose the floating-point number |\n|nanq | :heavy_check_mark: | return quiet NaN |\n|nearbyintq | :heavy_check_mark: | round to nearest integer |\n|nextafterq | ::heavy_check_mark: | next representable floating-point number |\n|powq | :heavy_check_mark: | power function |\n|remainderq | :heavy_check_mark: | remainder function |\n|remquoq | :heavy_check_mark: | remainder and part of quotient |\n|rintq | :heavy_check_mark: | round-to-nearest integral value |\n|roundq | :heavy_check_mark: | round-to-nearest integral value, return __float128 |\n|scalblnq | :heavy_check_mark: | compute exponent using FLT_RADIX |\n|scalbnq | :heavy_check_mark: | compute exponent using FLT_RADIX |\n|signbitq | :heavy_check_mark: | return sign bit |\n|sincosq | :heavy_check_mark: | calculate sine and cosine simultaneously |\n|sinhq | :heavy_check_mark: | hyperbolic sine function |\n|sinq | :heavy_check_mark: | sine function |\n|sqrtq | :heavy_check_mark: | square root function |\n|tanq | :heavy_check_mark: | tangent function |\n|tanhq | :heavy_check_mark: | hyperbolic tangent function |\n|tgammaq | :heavy_check_mark: | true gamma function |\n|truncq | :heavy_check_mark: | round to integer, towards zero |\n|y0q | :heavy_check_mark: | Bessel function of the second kind, first order |\n|y1q | :heavy_check_mark: | Bessel function of the second kind, second order |\n|ynq | :heavy_check_mark: | Bessel function of the second kind, n-th order |\n\n\n\n### Routines from Python's complex math ``cmath`` library\n\nThese are available from ``qcmath``\n\n| Name | Implemented | Descritpion |\n|----------|-------------|-------------|\n| phase | :heavy_check_mark: | |\n| polar | :heavy_check_mark: | |\n| rect | :heavy_check_mark: | |\n| exp | :heavy_check_mark: | |\n| log | :heavy_check_mark: | |\n| log10 | :heavy_check_mark: | |\n| sqrt | :heavy_check_mark: | |\n| acos | :heavy_check_mark: | |\n| asin | :heavy_check_mark: | |\n| atan | :heavy_check_mark: | |\n| cos | :heavy_check_mark: | |\n| sin | :heavy_check_mark: | |\n| tan | :heavy_check_mark: | |\n| acosh | :heavy_check_mark: | |\n| asinh | :heavy_check_mark: | |\n| atanh | :heavy_check_mark: | |\n| cosh | :heavy_check_mark: | |\n| sinh | :heavy_check_mark: | |\n| tanh | :heavy_check_mark: | |\n| isfinite | :heavy_check_mark: | |\n| isinf | :heavy_check_mark: | |\n| isnan | :heavy_check_mark: | |\n| isclose | :x: | |\n| pi | :heavy_check_mark: | |\n| e | :heavy_check_mark: | |\n| tau | :heavy_check_mark: | |\n| inf | :heavy_check_mark: | |\n| infj | :heavy_check_mark: | |\n| nan | :heavy_check_mark: | |\n| nanj | :heavy_check_mark: | |\n\n\n### Routines from complex math ``libquadthmath`` library\n\nThese are available from ``qcmath``\n\n| Name | Implemented | Descritpion |\n|----------|-------------|-------------|\n| cabsq | :heavy_check_mark: | complex absolute value function |\n| cargq | :heavy_check_mark: | calculate the argument |\n| cimagq | :heavy_check_mark: | imaginary part of complex number |\n| crealq | :heavy_check_mark: | real part of complex number | \n| cacoshq | :heavy_check_mark: | complex arc hyperbolic cosine function |\n| cacosq | :heavy_check_mark: | complex arc cosine function |\n| casinhq | :heavy_check_mark: | complex arc hyperbolic sine function |\n| casinq | :heavy_check_mark: | complex arc sine function |\n| catanhq | :heavy_check_mark: | complex arc hyperbolic tangent function |\n| catanq | :heavy_check_mark: | complex arc tangent function |\n| ccosq: | :heavy_check_mark: | complex cosine function |\n| ccoshq | :heavy_check_mark: | complex hyperbolic cosine function |\n| cexpq | :heavy_check_mark: | complex exponential function |\n| cexpiq | :heavy_check_mark: | computes the exponential function of ``i`` times a real value |\n| clogq | :heavy_check_mark: | complex natural logarithm |\n| clog10q | :heavy_check_mark: | complex base 10 logarithm |\n| conjq | :heavy_check_mark: | complex conjugate function |\n| cpowq | :heavy_check_mark: | complex power function |\n| cprojq | :heavy_check_mark: | project into Riemann Sphere |\n| csinq | :heavy_check_mark: | complex sine function |\n| csinhq | :heavy_check_mark: | complex hyperbolic sine function |\n| csqrtq | :heavy_check_mark: | complex square root |\n| ctanq | :heavy_check_mark: | complex tangent function |\n| ctanhq | :heavy_check_mark: | complex hyperbolic tangent function |\n\n\n### Constants from ``libquadthmath`` library.\n\nThe following constants are availbe both in ``qmath`` and ``qcmath``\n\n| Name | Implemented | Descritpion |\n|----------|-------------|-------------|\n| FLT128_MAX | :heavy_check_mark: | largest finite number | \n| FLT128_MIN| :heavy_check_mark: | smallest positive number with full precision |\n| FLT128_EPSILON | :heavy_check_mark: | difference between 1 and the next larger representable number | \n| FLT128_DENORM_MIN | :heavy_check_mark: | smallest positive denormalized number |\n| FLT128_MANT_DIG | :heavy_check_mark: | number of digits in the mantissa (bit precision) |\n| FLT128_MIN_EXP | :heavy_check_mark: | maximal negative exponent |\n| FLT128_MAX_EXP | :heavy_check_mark: | maximal positive exponent |\n| FLT128_DIG | :heavy_check_mark: | number of decimal digits in the mantissa |\n| FLT128_MIN_10_EXP | :heavy_check_mark: | maximal negative decimal exponent |\n| FLT128_MAX_10_EXP | :heavy_check_mark: | maximal positive decimal exponent |\n| M_Eq | :heavy_check_mark: | the constant e (Euler\u2019s number) |\n| M_LOG2Eq | :heavy_check_mark: | binary logarithm of 2 |\n| M_LOG10Eq | :heavy_check_mark: | common, decimal logarithm of 2 |\n| M_LN2q | :heavy_check_mark: | natural logarithm of 2 |\n| M_LN10q | :heavy_check_mark: | natural logarithm of 10 |\n| M_PIq | :heavy_check_mark: | pi |\n| M_PI_2q | :heavy_check_mark: | pi divided by two |\n| M_PI_4q | :heavy_check_mark: | pi divided by four |\n| M_1_PIq | :heavy_check_mark: | one over pi |\n| M_2_PIq | :heavy_check_mark: | one over two pi |\n| M_2_SQRTPIq | :heavy_check_mark: | two over square root of pi |\n| M_SQRT2q | :heavy_check_mark: | square root of 2 |\n| M_SQRT1_2q | :heavy_check_mark: | one over square root of 2 |\n",
"bugtrack_url": null,
"license": "GPLv2+",
"summary": "\"Python's bindings for gcc's libquadmath\"",
"version": "0.0.0",
"project_urls": {
"Homepage": "https://github.com/rjfarmer/pyquadp"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d9dd78d037e52a16ad506353637281c1bcc769df8d19f4d7359c0805aa6699ed",
"md5": "cedd9bf9d9a7efc5697a5211b9c464c8",
"sha256": "352e72bd71d4edcbef3535bac804379c0d9e64e7cf04a8d3d5f6b5be2f0f08f5"
},
"downloads": -1,
"filename": "pyquadp-0.0.0.tar.gz",
"has_sig": false,
"md5_digest": "cedd9bf9d9a7efc5697a5211b9c464c8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 43483,
"upload_time": "2023-08-07T13:45:03",
"upload_time_iso_8601": "2023-08-07T13:45:03.758120Z",
"url": "https://files.pythonhosted.org/packages/d9/dd/78d037e52a16ad506353637281c1bcc769df8d19f4d7359c0805aa6699ed/pyquadp-0.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-07 13:45:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rjfarmer",
"github_project": "pyquadp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "pyquadp"
}