basic functionallity for is odd/even

This commit is contained in:
Falko Victor Habel 2025-02-09 21:53:03 +01:00
parent b84115ce34
commit 8c74e60f54
8 changed files with 101 additions and 0 deletions

3
example.py Normal file
View File

@ -0,0 +1,3 @@
from fabelous_math import is_even, is_odd
print(is_even(5))

12
pyproject.toml Normal file
View File

@ -0,0 +1,12 @@
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "fabelous_math"
version = "0.0.1"
description = "Math functions written in C++ for faster code"
authors = [
{name = "Falko Habel", email = "falko.habel@fabelous.app"}
]
requires-python = ">=3.7"

30
setup.py Normal file
View File

@ -0,0 +1,30 @@
from setuptools import setup, Extension
import platform
extra_compile_args = []
extra_link_args = []
# Set C++17 flag based on the compiler
if platform.system() == "Windows":
extra_compile_args.append('/std:c++17')
else:
extra_compile_args.append('-std=c++17')
module = Extension(
'fabelous_math.simple_functions',
sources=[
'src/fabelous_math/cpp/functions/simple_functions.cpp',
'src/fabelous_math/cpp/functions/bindings.cpp'
],
include_dirs=['src/fabelous_math/include'],
extra_compile_args=extra_compile_args,
extra_link_args=extra_link_args,
)
setup(
name='fabelous_math',
description='Math functions written in C++ for faster code',
ext_modules=[module],
author="Falko Habel",
author_email="falko.habel@fabelous.app"
)

View File

@ -0,0 +1,3 @@
from fabelous_math.simple_functions import is_even, is_odd
__all__ = ["is_even", "is_odd"]

View File

View File

@ -0,0 +1,36 @@
#include <Python.h>
#include "simple_functions.hpp"
static PyObject* is_even_wrapper(PyObject* self, PyObject* args) {
long long number;
if (!PyArg_ParseTuple(args, "L", &number)) {
return NULL;
}
return PyBool_FromLong(simple_functions::is_even(number));
}
static PyObject* is_odd_wrapper(PyObject* self, PyObject* args) {
long long number;
if (!PyArg_ParseTuple(args, "L", &number)) {
return NULL;
}
return PyBool_FromLong(simple_functions::is_odd(number));
}
static PyMethodDef NumberUtilsMethods[] = {
{"is_even", is_even_wrapper, METH_VARARGS, "Check if a number is even"},
{"is_odd", is_odd_wrapper, METH_VARARGS, "Check if a number is odd"},
{NULL, NULL, 0, NULL}
};
static struct PyModuleDef number_utils_module = {
PyModuleDef_HEAD_INIT,
"simple_functions",
"Module for checking if numbers are even or odd",
-1,
NumberUtilsMethods
};
PyMODINIT_FUNC PyInit_simple_functions(void) {
return PyModule_Create(&number_utils_module);
}

View File

@ -0,0 +1,11 @@
#include "simple_functions.hpp"
namespace simple_functions {
bool is_even(long long number) {
return (number & 1) == 0;
}
bool is_odd(long long number) {
return (number & 1) == 1;
}
}

View File

@ -0,0 +1,6 @@
#pragma once
namespace simple_functions {
bool is_even(long long number);
bool is_odd(long long number);
}