Fixed database typo and removed unnecessary class identifier.
This commit is contained in:
parent
00ad49a143
commit
45fb349a7d
5098 changed files with 952558 additions and 85 deletions
|
@ -0,0 +1,125 @@
|
|||
#include <Python.h>
|
||||
|
||||
#include "math.h"
|
||||
|
||||
const double PI = 3.141592653589793238462643383279502884;
|
||||
|
||||
static double
|
||||
_multivariate_typical(int n, double *args)
|
||||
{
|
||||
return cos(args[1] * args[0] - args[2] * sin(args[0])) / PI;
|
||||
}
|
||||
|
||||
static double
|
||||
_multivariate_indefinite(int n, double *args)
|
||||
{
|
||||
return -exp(-args[0]) * log(args[0]);
|
||||
}
|
||||
|
||||
static double
|
||||
_multivariate_sin(int n, double *args)
|
||||
{
|
||||
return sin(args[0]);
|
||||
}
|
||||
|
||||
static double
|
||||
_sin_0(double x, void *user_data)
|
||||
{
|
||||
return sin(x);
|
||||
}
|
||||
|
||||
static double
|
||||
_sin_1(int ndim, double *x, void *user_data)
|
||||
{
|
||||
return sin(x[0]);
|
||||
}
|
||||
|
||||
static double
|
||||
_sin_2(double x)
|
||||
{
|
||||
return sin(x);
|
||||
}
|
||||
|
||||
static double
|
||||
_sin_3(int ndim, double *x)
|
||||
{
|
||||
return sin(x[0]);
|
||||
}
|
||||
|
||||
|
||||
typedef struct {
|
||||
char *name;
|
||||
void *ptr;
|
||||
} routine_t;
|
||||
|
||||
|
||||
static const routine_t routines[] = {
|
||||
{"_multivariate_typical", &_multivariate_typical},
|
||||
{"_multivariate_indefinite", &_multivariate_indefinite},
|
||||
{"_multivariate_sin", &_multivariate_sin},
|
||||
{"_sin_0", &_sin_0},
|
||||
{"_sin_1", &_sin_1},
|
||||
{"_sin_2", &_sin_2},
|
||||
{"_sin_3", &_sin_3}
|
||||
};
|
||||
|
||||
|
||||
static int create_pointers(PyObject *module)
|
||||
{
|
||||
PyObject *d, *obj = NULL;
|
||||
int i;
|
||||
|
||||
d = PyModule_GetDict(module);
|
||||
if (d == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
for (i = 0; i < sizeof(routines) / sizeof(routine_t); ++i) {
|
||||
obj = PyLong_FromVoidPtr(routines[i].ptr);
|
||||
if (obj == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (PyDict_SetItemString(d, routines[i].name, obj)) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
Py_DECREF(obj);
|
||||
obj = NULL;
|
||||
}
|
||||
|
||||
Py_XDECREF(obj);
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
Py_XDECREF(obj);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
static struct PyModuleDef moduledef = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"_test_multivariate",
|
||||
NULL,
|
||||
-1,
|
||||
NULL, /* Empty methods section */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
PyMODINIT_FUNC
|
||||
PyInit__test_multivariate(void)
|
||||
{
|
||||
PyObject *m;
|
||||
m = PyModule_Create(&moduledef);
|
||||
if (m == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
if (create_pointers(m)) {
|
||||
Py_DECREF(m);
|
||||
return NULL;
|
||||
}
|
||||
return m;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue