Skip to content

Commit d9005a9

Browse files
committed
sleef based quadprecision
1 parent ccfc64a commit d9005a9

File tree

5 files changed

+65
-4
lines changed

5 files changed

+65
-4
lines changed

quaddtype2/meson.build

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
project(
2+
'quaddtype2',
3+
'c',
4+
)
5+
6+
py_mod = import('python')
7+
py = py_mod.find_installation('/home/rootacess/numpy-user-dtypes/quaddtype2/.venv/bin/python3')
8+
9+
# incdir_numpy = run_command(py,
10+
# [
11+
# '-c',
12+
# 'import numpy; print(numpy.get_include())'
13+
# ],
14+
# check: true
15+
# ).stdout().strip()
16+
17+
includes = include_directories(
18+
[
19+
'.venv/lib/python3.12/site-packages/numpy/_core/include',
20+
'quaddtype/src'
21+
]
22+
)
23+
24+
srcs = [
25+
'quaddtype/src/dtype.c',
26+
'quaddtype/src/quaddtype_main.c',
27+
]
28+
29+
py.install_sources(
30+
[
31+
'quaddtype/__init__.py',
32+
'quaddtype/quadscalar.py'
33+
],
34+
subdir: 'quaddtype',
35+
pure: false
36+
)
37+
38+
py.extension_module(
39+
'_quaddtype_main',
40+
srcs,
41+
c_args: ['-g', '-O0' ,'-lsleef', '-lsleefquad'],
42+
install: true,
43+
subdir: 'quaddtype',
44+
include_directories: includes
45+
)

quaddtype2/quaddtype/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from .scalar import QuadScalar
1+
from .quadscalar import QuadScalar
22
from ._quaddtype_main import QuadDType
33

44
__all__ = ["QuadScalar", "QuadDType"]
File renamed without changes.

quaddtype2/quaddtype/src/dtype.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#include <Python.h>
2+
#include<sleef.h>
3+
#include<sleefquad.h>
24

35
#define PY_ARRAY_UNIQUE_SYMBOL quaddtype_ARRAY_API
46
#define PY_UFUNC_UNIQUE_SYMBOL quaddtype_UFUNC_API
@@ -23,8 +25,8 @@ QuadDTypeObject *new_quaddtype_instance(void)
2325
return NULL;
2426
}
2527

26-
new->base.elsize = sizeof(__float128);
27-
new->base.alignment = _Alignof(__float128);
28+
new->base.elsize = sizeof(Sleef_quad);
29+
new->base.alignment = _Alignof(Sleef_quad);
2830
return new;
2931
}
3032

@@ -40,7 +42,7 @@ static void quaddtype_dealloc(QuadDTypeObject *self)
4042

4143
static PyObject *quaddtype_repr(QuadDTypeObject *self)
4244
{
43-
PyObject *res = PyUnicode_FromString("This is a quad (128-bit float) dtype.");
45+
PyObject *res = PyUnicode_FromString("This is a Sleef based quad (128-bit float) dtype.");
4446
return res;
4547
}
4648

quaddtype2/reinstall.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/bin/bash
2+
set -xeuo pipefail
3+
IFS=$'\n\t'
4+
5+
if [ -d "build/" ]
6+
then
7+
rm -r build
8+
fi
9+
10+
#meson setup build -Db_sanitize=address,undefined
11+
meson setup build
12+
python -m pip uninstall -y quaddtype
13+
python -m pip install . -v --no-build-isolation -Cbuilddir=build -C'compile-args=-v' -Csetup-args="-Dbuildtype=debug"
14+
#python -m pip install . -v --no-build-isolation -Cbuilddir=build -C'compile-args=-v'

0 commit comments

Comments
 (0)