/usr/include/pynac/py_funcs.h is in libpynac-dev 0.2.6-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | /** @file py_func.cpp
*
* Function table containing the functions used in the Sage - Pynac
* interface.
* */
#ifndef PY_FUNC_H_
# define PY_FUNC_H_
#include "Python.h"
#include "basic.h"
#include "constant.h"
#include "ex.h"
#include <stdexcept>
#include <vector>
#include <iostream>
namespace GiNaC {
typedef std::multiset<unsigned> paramset;
struct py_funcs_struct {
PyObject* (*py_binomial)(PyObject* a, PyObject* b);
PyObject* (*py_binomial_int)(int n, unsigned int k);
PyObject* (*py_gcd)(PyObject* a, PyObject* b);
PyObject* (*py_lcm)(PyObject* a, PyObject* b);
PyObject* (*py_real)(PyObject* a);
PyObject* (*py_imag)(PyObject* a);
PyObject* (*py_numer)(PyObject* a);
PyObject* (*py_denom)(PyObject* a);
PyObject* (*py_conjugate)(PyObject* a);
int (*py_is_rational)(PyObject* a);
int (*py_is_crational)(PyObject* a);
int (*py_is_real)(PyObject* a);
int (*py_is_integer)(PyObject* a);
int (*py_is_equal)(PyObject* a, PyObject* b);
int (*py_is_even)(PyObject* a);
int (*py_is_cinteger)(PyObject* a);
int (*py_is_prime)(PyObject* n);
PyObject* (*py_int)(PyObject* n);
PyObject* (*py_integer_from_long)(long int x);
PyObject* (*py_integer_from_python_obj)(PyObject* x);
PyObject* (*py_float)(PyObject* a, PyObject* parent);
PyObject* (*py_RDF_from_double)(double x);
PyObject* (*py_factorial)(PyObject* a);
PyObject* (*py_fibonacci)(PyObject* n);
PyObject* (*py_step)(PyObject* n);
PyObject* (*py_doublefactorial)(PyObject* a);
PyObject* (*py_bernoulli)(PyObject* n);
PyObject* (*py_sin)(PyObject* n);
PyObject* (*py_cos)(PyObject* n);
PyObject* (*py_zeta)(PyObject* n);
PyObject* (*py_exp)(PyObject* n);
PyObject* (*py_log)(PyObject* n);
PyObject* (*py_tan)(PyObject* n);
PyObject* (*py_asin)(PyObject* n);
PyObject* (*py_acos)(PyObject* n);
PyObject* (*py_atan)(PyObject* n);
PyObject* (*py_atan2)(PyObject* n, PyObject* y);
PyObject* (*py_sinh)(PyObject* n);
PyObject* (*py_cosh)(PyObject* n);
PyObject* (*py_tanh)(PyObject* n);
PyObject* (*py_asinh)(PyObject* n);
PyObject* (*py_acosh)(PyObject* n);
PyObject* (*py_atanh)(PyObject* n);
PyObject* (*py_li)(PyObject* x, PyObject* n, PyObject* prec);
PyObject* (*py_li2)(PyObject* n);
PyObject* (*py_lgamma)(PyObject* n);
PyObject* (*py_tgamma)(PyObject* n);
PyObject* (*py_psi)(PyObject* n);
PyObject* (*py_psi2)(PyObject* n, PyObject* b);
PyObject* (*py_isqrt)(PyObject* n);
PyObject* (*py_sqrt)(PyObject* n);
PyObject* (*py_abs)(PyObject* n);
PyObject* (*py_mod)(PyObject* n, PyObject* b);
PyObject* (*py_smod)(PyObject* n, PyObject* b);
PyObject* (*py_irem)(PyObject* n, PyObject* b);
PyObject* (*py_iquo)(PyObject* n, PyObject* b);
PyObject* (*py_iquo2)(PyObject* n, PyObject* b);
int (*py_int_length)(PyObject* x);
PyObject* (*py_eval_constant)(unsigned serial, PyObject* parent);
PyObject* (*py_eval_unsigned_infinity)();
PyObject* (*py_eval_infinity)();
PyObject* (*py_eval_neg_infinity)();
// we use this to check if the element lives in a domain of positive
// characteristic, in which case we have to do modulo reductions
int (*py_get_parent_char)(PyObject* o);
// printing helpers
std::string* (*py_latex)(PyObject* o, int level);
std::string* (*py_repr)(PyObject* o, int level);
// archive helper
std::string* (*py_dumps)(PyObject* o);
PyObject* (*py_loads)(PyObject* s);
PyObject* (*exvector_to_PyTuple)(GiNaC::exvector seq);
GiNaC::ex (*pyExpression_to_ex)(PyObject* s);
PyObject* (*ex_to_pyExpression)(GiNaC::ex e);
std::string* (*py_print_function)(unsigned id, PyObject* args);
std::string* (*py_latex_function)(unsigned id, PyObject* args);
int (*py_get_ginac_serial)();
PyObject* (*py_get_sfunction_from_serial)(unsigned id);
unsigned (*py_get_serial_from_sfunction)(PyObject* f);
unsigned (*py_get_serial_for_new_sfunction)(std::string &s, unsigned nargs);
constant (*py_get_constant)(const char* name);
std::string* (*py_print_fderivative)(unsigned id, PyObject* params, PyObject* args);
std::string* (*py_latex_fderivative)(unsigned id, PyObject* params, PyObject* args);
PyObject* (*paramset_to_PyTuple)(const GiNaC::paramset &s);
PyObject* (*py_rational_power_parts)(PyObject* basis, PyObject* exp);
};
extern py_funcs_struct py_funcs;
}
#endif /* !PY_FUNC_H_ */
|