Skip to content

Commit 79e5ea2

Browse files
authored
Merge pull request #102 from SwayamInSync/dragon4
Updating Quaddtype
2 parents cf6cf91 + 1a6618a commit 79e5ea2

31 files changed

+5201
-1914
lines changed

quaddtype/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Numpy-QuadDType
2+
3+
## Installation
4+
5+
```
6+
pip install numpy==2.1.0
7+
pip install -i https://test.pypi.org/simple/ quaddtype
8+
```
9+
10+
## Usage
11+
12+
```python
13+
import numpy as np
14+
from numpy_quaddtype import QuadPrecDType, QuadPrecision
15+
16+
# using sleef backend (default)
17+
np.array([1,2,3], dtype=QuadPrecDType())
18+
np.array([1,2,3], dtype=QuadPrecDType("sleef"))
19+
20+
# using longdouble backend
21+
np.array([1,2,3], dtype=QuadPrecDType("longdouble"))
22+
```

quaddtype/meson.build

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
project('quaddtype', 'c', 'cpp', default_options : ['cpp_std=c++17', 'b_pie=true'])
1+
project('numpy_quaddtype', 'c', 'cpp', default_options : ['cpp_std=c++17', 'b_pie=true'])
22

33
py_mod = import('python')
44
py = py_mod.find_installation()
@@ -19,30 +19,33 @@ incdir_numpy = run_command(py,
1919
includes = include_directories(
2020
[
2121
incdir_numpy,
22-
'quaddtype/src',
22+
'numpy_quaddtype/src',
2323
]
2424
)
2525

2626
srcs = [
27-
'quaddtype/src/casts.h',
28-
'quaddtype/src/casts.cpp',
29-
'quaddtype/src/scalar.h',
30-
'quaddtype/src/scalar.c',
31-
'quaddtype/src/dtype.h',
32-
'quaddtype/src/dtype.c',
33-
'quaddtype/src/quaddtype_main.c',
34-
'quaddtype/src/scalar_ops.h',
35-
'quaddtype/src/scalar_ops.cpp',
36-
'quaddtype/src/ops.hpp',
37-
'quaddtype/src/umath.h',
38-
'quaddtype/src/umath.cpp'
27+
'numpy_quaddtype/src/quad_common.h',
28+
'numpy_quaddtype/src/casts.h',
29+
'numpy_quaddtype/src/casts.cpp',
30+
'numpy_quaddtype/src/scalar.h',
31+
'numpy_quaddtype/src/scalar.c',
32+
'numpy_quaddtype/src/dtype.h',
33+
'numpy_quaddtype/src/dtype.c',
34+
'numpy_quaddtype/src/quaddtype_main.c',
35+
'numpy_quaddtype/src/scalar_ops.h',
36+
'numpy_quaddtype/src/scalar_ops.cpp',
37+
'numpy_quaddtype/src/ops.hpp',
38+
'numpy_quaddtype/src/umath.h',
39+
'numpy_quaddtype/src/umath.cpp',
40+
'numpy_quaddtype/src/dragon4.h',
41+
'numpy_quaddtype/src/dragon4.c'
3942
]
4043

4144
py.install_sources(
4245
[
43-
'quaddtype/__init__.py',
46+
'numpy_quaddtype/__init__.py',
4447
],
45-
subdir: 'quaddtype',
48+
subdir: 'numpy_quaddtype',
4649
pure: false
4750
)
4851

@@ -51,6 +54,6 @@ srcs,
5154
c_args: ['-g', '-O0', '-lsleef', '-lsleefquad'],
5255
dependencies: [sleef_dep, sleefquad_dep],
5356
install: true,
54-
subdir: 'quaddtype',
57+
subdir: 'numpy_quaddtype',
5558
include_directories: includes
5659
)

quaddtype/numpy_quaddtype/__init__.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from ._quaddtype_main import (
2+
QuadPrecision,
3+
QuadPrecDType,
4+
is_longdouble_128,
5+
get_sleef_constant
6+
)
7+
8+
__all__ = [
9+
'QuadPrecision', 'QuadPrecDType', 'SleefQuadPrecision', 'LongDoubleQuadPrecision',
10+
'SleefQuadPrecDType', 'LongDoubleQuadPrecDType', 'is_longdouble_128', 'pi', 'e',
11+
'log2e', 'log10e', 'ln2', 'ln10', 'max_value', 'min_value', 'epsilon'
12+
]
13+
14+
def SleefQuadPrecision(value):
15+
return QuadPrecision(value, backend='sleef')
16+
17+
def LongDoubleQuadPrecision(value):
18+
return QuadPrecision(value, backend='longdouble')
19+
20+
def SleefQuadPrecDType():
21+
return QuadPrecDType(backend='sleef')
22+
23+
def LongDoubleQuadPrecDType():
24+
return QuadPrecDType(backend='longdouble')
25+
26+
pi = get_sleef_constant("pi")
27+
e = get_sleef_constant("e")
28+
log2e = get_sleef_constant("log2e")
29+
log10e = get_sleef_constant("log10e")
30+
ln2 = get_sleef_constant("ln2")
31+
ln10 = get_sleef_constant("ln10")
32+
max_value = get_sleef_constant("quad_max")
33+
min_value = get_sleef_constant("quad_min")
34+
epsilon = get_sleef_constant("epsilon")

0 commit comments

Comments
 (0)