7 #include "symengine/symengine_config.h"
9 #ifdef HAVE_SYMENGINE_GMP
13 #ifdef HAVE_SYMENGINE_MPFR
17 #include "symengine/symengine_exception.h"
24 #define SYMENGINE_C_ASSERT(cond) \
27 printf("SYMENGINE_C_ASSERT failed: %s \nfunction %s (), line " \
28 "number %d at\n%s\n", \
29 __FILE__, __func__, __LINE__, #cond); \
34 typedef symengine_exceptions_t CWRAPPER_OUTPUT_TYPE;
41 } BasicCodePrinterPrecision;
46 #define SYMENGINE_INCLUDE_ALL
47 #define SYMENGINE_ENUM(type, Class) type,
48 #include "symengine/type_codes.inc"
50 #undef SYMENGINE_INCLUDE_ALL
51 SYMENGINE_TypeID_Count
79 #if !defined(WITH_SYMENGINE_RCP)
106 SYMENGINE_EXPORT
void basic_new_stack(basic s);
108 SYMENGINE_EXPORT
void basic_free_stack(basic s);
116 SYMENGINE_EXPORT
const char *symengine_version(
void);
124 SYMENGINE_EXPORT
void basic_const_set(basic s,
const char *c);
126 SYMENGINE_EXPORT
void basic_const_zero(basic s);
127 SYMENGINE_EXPORT
void basic_const_one(basic s);
128 SYMENGINE_EXPORT
void basic_const_minus_one(basic s);
129 SYMENGINE_EXPORT
void basic_const_I(basic s);
131 SYMENGINE_EXPORT
void basic_const_pi(basic s);
132 SYMENGINE_EXPORT
void basic_const_E(basic s);
133 SYMENGINE_EXPORT
void basic_const_EulerGamma(basic s);
134 SYMENGINE_EXPORT
void basic_const_Catalan(basic s);
135 SYMENGINE_EXPORT
void basic_const_GoldenRatio(basic s);
139 SYMENGINE_EXPORT
void basic_const_infinity(basic s);
140 SYMENGINE_EXPORT
void basic_const_neginfinity(basic s);
141 SYMENGINE_EXPORT
void basic_const_complex_infinity(basic s);
144 SYMENGINE_EXPORT
void basic_const_nan(basic s);
147 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_assign(basic a,
const basic b);
150 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_parse(basic b,
const char *str);
153 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_parse2(basic b,
const char *str,
157 SYMENGINE_EXPORT TypeID basic_get_type(
const basic s);
159 SYMENGINE_EXPORT TypeID basic_get_class_id(
const char *c);
162 SYMENGINE_EXPORT
char *basic_get_class_from_id(TypeID
id);
167 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE symbol_set(basic s,
const char *c);
170 SYMENGINE_EXPORT
int number_is_zero(
const basic s);
172 SYMENGINE_EXPORT
int number_is_negative(
const basic s);
174 SYMENGINE_EXPORT
int number_is_positive(
const basic s);
176 SYMENGINE_EXPORT
int number_is_complex(
const basic s);
179 SYMENGINE_EXPORT
int basic_has_symbol(
const basic e,
const basic s);
182 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE integer_set_si(basic s,
long i);
184 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE integer_set_ui(basic s,
unsigned long i);
186 #ifdef HAVE_SYMENGINE_GMP
187 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE integer_set_mpz(basic s,
const mpz_t i);
190 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE integer_set_str(basic s,
const char *c);
192 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE real_double_set_d(basic s,
double d);
194 SYMENGINE_EXPORT
double real_double_get_d(
const basic s);
196 #ifdef HAVE_SYMENGINE_MPFR
198 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE real_mpfr_set_d(basic s,
double d,
202 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE real_mpfr_set_str(basic s,
const char *c,
205 SYMENGINE_EXPORT
double real_mpfr_get_d(
const basic s);
207 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE real_mpfr_set(basic s, mpfr_srcptr m);
209 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE real_mpfr_get(mpfr_ptr m,
const basic s);
211 SYMENGINE_EXPORT mpfr_prec_t real_mpfr_get_prec(
const basic s);
215 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE complex_base_real_part(basic s,
218 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE
219 complex_base_imaginary_part(basic s,
const basic com);
222 SYMENGINE_EXPORT
signed long integer_get_si(
const basic s);
224 SYMENGINE_EXPORT
unsigned long integer_get_ui(
const basic s);
226 #ifdef HAVE_SYMENGINE_GMP
227 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE integer_get_mpz(mpz_t a,
const basic s);
232 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE rational_set(basic s,
const basic i,
235 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE rational_set_si(basic s,
long i,
long j);
237 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE rational_set_ui(basic s,
unsigned long i,
239 #ifdef HAVE_SYMENGINE_GMP
241 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE rational_get_mpq(mpq_t a,
const basic s);
243 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE rational_set_mpq(basic s,
const mpq_t i);
247 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE complex_set(basic s,
const basic re,
250 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE complex_set_rat(basic s,
const basic re,
252 #ifdef HAVE_SYMENGINE_GMP
254 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE complex_set_mpq(basic s,
const mpq_t re,
260 SYMENGINE_EXPORT
dcomplex complex_double_get(
const basic s);
263 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_add(basic s,
const basic a,
266 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_sub(basic s,
const basic a,
269 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_mul(basic s,
const basic a,
272 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_div(basic s,
const basic a,
275 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_pow(basic s,
const basic a,
279 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_diff(basic s,
const basic expr,
282 SYMENGINE_EXPORT
int basic_eq(
const basic a,
const basic b);
284 SYMENGINE_EXPORT
int basic_neq(
const basic a,
const basic b);
287 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_expand(basic s,
const basic a);
289 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_neg(basic s,
const basic a);
292 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_abs(basic s,
const basic a);
295 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_erf(basic s,
const basic a);
297 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_erfc(basic s,
const basic a);
300 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_sin(basic s,
const basic a);
302 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_cos(basic s,
const basic a);
304 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_tan(basic s,
const basic a);
307 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_asin(basic s,
const basic a);
309 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_acos(basic s,
const basic a);
311 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_atan(basic s,
const basic a);
314 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_csc(basic s,
const basic a);
316 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_sec(basic s,
const basic a);
318 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_cot(basic s,
const basic a);
321 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_acsc(basic s,
const basic a);
323 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_asec(basic s,
const basic a);
325 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_acot(basic s,
const basic a);
328 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_sinh(basic s,
const basic a);
330 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_cosh(basic s,
const basic a);
332 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_tanh(basic s,
const basic a);
335 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_asinh(basic s,
const basic a);
337 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_acosh(basic s,
const basic a);
339 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_atanh(basic s,
const basic a);
342 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_csch(basic s,
const basic a);
344 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_sech(basic s,
const basic a);
346 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_coth(basic s,
const basic a);
349 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_acsch(basic s,
const basic a);
351 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_asech(basic s,
const basic a);
353 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_acoth(basic s,
const basic a);
356 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_lambertw(basic s,
const basic a);
358 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_zeta(basic s,
const basic a);
360 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_dirichlet_eta(basic s,
363 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_gamma(basic s,
const basic a);
365 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_loggamma(basic s,
const basic a);
367 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_sqrt(basic s,
const basic a);
369 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_cbrt(basic s,
const basic a);
371 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_exp(basic s,
const basic a);
373 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_log(basic s,
const basic a);
375 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_floor(basic s,
const basic a);
377 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_ceiling(basic s,
const basic a);
379 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_sign(basic s,
const basic a);
382 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_atan2(basic s,
const basic a,
385 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_kronecker_delta(basic s,
389 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_lowergamma(basic s,
const basic a,
392 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_uppergamma(basic s,
const basic a,
395 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_beta(basic s,
const basic a,
398 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_polygamma(basic s,
const basic a,
402 SYMENGINE_EXPORT
char *basic_dumps(
const basic s,
unsigned long *size);
404 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_loads(basic s,
const char *c,
410 SYMENGINE_EXPORT
void
413 SYMENGINE_EXPORT
void
415 BasicCodePrinterPrecision prec);
418 SYMENGINE_EXPORT
char *basic_str(
const basic s);
421 SYMENGINE_EXPORT
char *basic_str_julia(
const basic s);
423 SYMENGINE_EXPORT
char *basic_str_mathml(
const basic s);
425 SYMENGINE_EXPORT
char *basic_str_latex(
const basic s);
427 SYMENGINE_EXPORT
char *basic_str_ccode(
const basic s);
430 char *basic_str_ccode_settings(
const basic s,
433 SYMENGINE_EXPORT
char *basic_str_cudacode(
const basic s);
436 char *basic_str_cudacode_settings(
const basic s,
439 SYMENGINE_EXPORT
char *basic_str_metalcode(
const basic s);
441 SYMENGINE_EXPORT
char *
442 basic_str_metalcode_settings(
const basic s,
445 SYMENGINE_EXPORT
char *basic_str_jscode(
const basic s);
447 SYMENGINE_EXPORT
void basic_str_free(
char *s);
450 SYMENGINE_EXPORT
void bool_set_true(basic s);
452 SYMENGINE_EXPORT
void bool_set_false(basic s);
455 SYMENGINE_EXPORT
void basic_set_emptyset(basic s);
457 SYMENGINE_EXPORT
void basic_set_universalset(basic s);
459 SYMENGINE_EXPORT
void basic_set_complexes(basic s);
461 SYMENGINE_EXPORT
void basic_set_reals(basic s);
463 SYMENGINE_EXPORT
void basic_set_rationals(basic s);
465 SYMENGINE_EXPORT
void basic_set_integers(basic s);
467 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_interval(
468 basic s,
const basic start,
const basic end,
int left_open,
int right_open);
470 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE
471 basic_set_finiteset(basic s,
const CSetBasic *container);
473 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_union(basic s,
const basic a,
476 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_intersection(basic s,
480 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_complement(basic s,
484 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_contains(basic s,
const basic a,
487 SYMENGINE_EXPORT
int basic_set_is_subset(
const basic a,
const basic b);
489 SYMENGINE_EXPORT
int basic_set_is_proper_subset(
const basic a,
const basic b);
491 SYMENGINE_EXPORT
int basic_set_is_superset(
const basic a,
const basic b);
493 SYMENGINE_EXPORT
int basic_set_is_proper_superset(
const basic a,
const basic b);
495 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_inf(basic s,
const basic a);
497 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_sup(basic s,
const basic a);
499 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_boundary(basic s,
502 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_interior(basic s,
505 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_set_closure(basic s,
const basic a);
516 SYMENGINE_EXPORT
int symengine_have_component(
const char *c);
521 SYMENGINE_EXPORT
int is_a_Integer(
const basic s);
523 SYMENGINE_EXPORT
int is_a_Rational(
const basic s);
525 SYMENGINE_EXPORT
int is_a_Symbol(
const basic s);
529 SYMENGINE_EXPORT
int is_a_RealDouble(
const basic c);
531 SYMENGINE_EXPORT
int is_a_ComplexDouble(
const basic c);
533 SYMENGINE_EXPORT
int is_a_RealMPFR(
const basic c);
535 SYMENGINE_EXPORT
int is_a_ComplexMPC(
const basic c);
537 SYMENGINE_EXPORT
int is_a_Set(
const basic c);
543 SYMENGINE_EXPORT
CVectorInt *vectorint_new(
void);
551 SYMENGINE_EXPORT
int vectorint_placement_new_check(
void *data,
size_t size);
552 SYMENGINE_EXPORT
CVectorInt *vectorint_placement_new(
void *data);
554 SYMENGINE_EXPORT
void vectorint_placement_free(
CVectorInt *
self);
556 SYMENGINE_EXPORT
void vectorint_free(
CVectorInt *
self);
557 SYMENGINE_EXPORT
void vectorint_push_back(
CVectorInt *
self,
int value);
558 SYMENGINE_EXPORT
int vectorint_get(
CVectorInt *
self,
int n);
564 SYMENGINE_EXPORT
CVecBasic *vecbasic_new(
void);
565 SYMENGINE_EXPORT
void vecbasic_free(
CVecBasic *
self);
566 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE vecbasic_push_back(
CVecBasic *
self,
568 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE vecbasic_get(
CVecBasic *
self,
size_t n,
570 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE vecbasic_set(
CVecBasic *
self,
size_t n,
572 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE vecbasic_erase(
CVecBasic *
self,
size_t n);
573 SYMENGINE_EXPORT
size_t vecbasic_size(
CVecBasic *
self);
576 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_max(basic s,
const CVecBasic *d);
578 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_min(basic s,
const CVecBasic *d);
580 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_add_vec(basic s,
584 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_mul_vec(basic s,
595 SYMENGINE_EXPORT
void dense_matrix_free(
CDenseMatrix *
self);
598 dense_matrix_new_vec(
unsigned rows,
unsigned cols,
CVecBasic *l);
600 SYMENGINE_EXPORT
CDenseMatrix *dense_matrix_new_rows_cols(
unsigned r,
603 SYMENGINE_EXPORT
void sparse_matrix_free(
CSparseMatrix *
self);
606 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_set(
CDenseMatrix *s,
611 SYMENGINE_EXPORT
char *dense_matrix_str(
const CDenseMatrix *s);
613 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_rows_cols(
CDenseMatrix *mat,
617 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_get_basic(
618 basic s,
const CDenseMatrix *mat,
unsigned long int r,
unsigned long int c);
620 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_set_basic(
621 CDenseMatrix *mat,
unsigned long int r,
unsigned long int c, basic s);
623 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE
624 sparse_matrix_get_basic(basic s,
const CSparseMatrix *mat,
unsigned long int r,
625 unsigned long int c);
627 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE sparse_matrix_set_basic(
628 CSparseMatrix *mat,
unsigned long int r,
unsigned long int c, basic s);
630 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_det(basic s,
633 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_inv(
CDenseMatrix *s,
636 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE
640 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_submatrix(
642 unsigned long int c1,
unsigned long int r2,
unsigned long int c2,
643 unsigned long int r,
unsigned long int c);
645 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE
648 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE
651 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_row_del(
CDenseMatrix *C,
654 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_col_del(
CDenseMatrix *C,
658 SYMENGINE_EXPORT
unsigned long int dense_matrix_cols(
const CDenseMatrix *s);
660 SYMENGINE_EXPORT
unsigned long int dense_matrix_rows(
const CDenseMatrix *s);
662 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_add_matrix(
665 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_mul_matrix(
668 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_add_scalar(
671 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_mul_scalar(
674 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_LU(
CDenseMatrix *l,
678 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_LDL(
CDenseMatrix *l,
682 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE
685 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_FFLDU(
688 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_LU_solve(
691 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_ones(
CDenseMatrix *s,
693 unsigned long int c);
695 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_zeros(
CDenseMatrix *s,
697 unsigned long int c);
700 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_diag(
CDenseMatrix *s,
704 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_eye(
CDenseMatrix *s,
710 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_diff(
CDenseMatrix *result,
714 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE dense_matrix_jacobian(
720 SYMENGINE_EXPORT
void sparse_matrix_rows_cols(
CSparseMatrix *s,
722 unsigned long int c);
724 SYMENGINE_EXPORT
char *sparse_matrix_str(
const CSparseMatrix *s);
727 SYMENGINE_EXPORT
int is_a_DenseMatrix(
const CDenseMatrix *c);
729 SYMENGINE_EXPORT
int is_a_SparseMatrix(
const CSparseMatrix *c);
738 SYMENGINE_EXPORT
CSetBasic *setbasic_new(
void);
739 SYMENGINE_EXPORT
void setbasic_free(
CSetBasic *
self);
742 SYMENGINE_EXPORT
int setbasic_insert(
CSetBasic *
self,
const basic value);
743 SYMENGINE_EXPORT
void setbasic_get(
CSetBasic *
self,
int n, basic result);
745 SYMENGINE_EXPORT
int setbasic_find(
CSetBasic *
self, basic value);
747 SYMENGINE_EXPORT
int setbasic_erase(
CSetBasic *
self,
const basic value);
748 SYMENGINE_EXPORT
size_t setbasic_size(
CSetBasic *
self);
757 const basic key,
const basic mapped);
759 SYMENGINE_EXPORT
int mapbasicbasic_get(
CMapBasicBasic *
self,
const basic key,
766 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_get_args(
const basic
self,
769 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_free_symbols(
const basic
self,
772 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_function_symbols(
CSetBasic *symbols,
775 SYMENGINE_EXPORT
size_t basic_hash(
const basic
self);
778 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_subs(basic s,
const basic e,
782 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_subs2(basic s,
const basic e,
783 const basic a,
const basic b);
787 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE function_symbol_set(basic s,
792 SYMENGINE_EXPORT
char *function_symbol_get_name(
const basic b);
794 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_coeff(basic c,
const basic b,
795 const basic x,
const basic n);
800 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE vecbasic_linsolve(
CVecBasic *sol,
804 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_solve_poly(
CSetBasic *r,
812 SYMENGINE_EXPORT
char *ascii_art_str(
void);
816 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_gcd(basic s,
const basic a,
819 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_lcm(basic s,
const basic a,
822 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_gcd_ext(basic g, basic s, basic t,
826 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_nextprime(basic s,
const basic a);
828 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_mod(basic s,
const basic n,
831 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_quotient(basic s,
const basic n,
834 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_quotient_mod(basic q, basic r,
838 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_mod_f(basic s,
const basic n,
841 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_quotient_f(basic s,
const basic n,
844 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_quotient_mod_f(basic q, basic r,
848 SYMENGINE_EXPORT
int ntheory_mod_inverse(basic b,
const basic a,
const basic m);
850 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_fibonacci(basic s,
853 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_fibonacci2(basic g, basic s,
856 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_lucas(basic s,
unsigned long a);
858 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_lucas2(basic g, basic s,
861 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_binomial(basic s,
const basic a,
864 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE ntheory_factorial(basic s,
867 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_evalf(basic s,
const basic b,
868 unsigned long bits,
int real);
871 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_as_numer_denom(basic numer,
875 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_add_as_two_terms(basic term1,
879 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_mul_as_two_terms(basic term1,
886 SYMENGINE_EXPORT
void
890 SYMENGINE_EXPORT
void
892 double *
const outs,
const double *
const inps);
893 SYMENGINE_EXPORT
void
897 #ifdef HAVE_SYMENGINE_LLVM
899 typedef struct CLLVMDoubleVisitor CLLVMDoubleVisitor;
900 SYMENGINE_EXPORT CLLVMDoubleVisitor *llvm_double_visitor_new(
void);
901 SYMENGINE_EXPORT
void llvm_double_visitor_init(CLLVMDoubleVisitor *
self,
904 int perform_cse,
int opt_level);
905 SYMENGINE_EXPORT
void llvm_double_visitor_call(CLLVMDoubleVisitor *
self,
907 const double *
const inps);
908 SYMENGINE_EXPORT
void llvm_double_visitor_free(CLLVMDoubleVisitor *
self);
910 typedef struct CLLVMFloatVisitor CLLVMFloatVisitor;
911 SYMENGINE_EXPORT CLLVMFloatVisitor *llvm_float_visitor_new(
void);
912 SYMENGINE_EXPORT
void llvm_float_visitor_init(CLLVMFloatVisitor *
self,
915 int perform_cse,
int opt_level);
916 SYMENGINE_EXPORT
void llvm_float_visitor_call(CLLVMFloatVisitor *
self,
918 const float *
const inps);
919 SYMENGINE_EXPORT
void llvm_float_visitor_free(CLLVMFloatVisitor *
self);
921 #ifdef SYMENGINE_HAVE_LLVM_LONG_DOUBLE
923 typedef struct CLLVMLongDoubleVisitor CLLVMLongDoubleVisitor;
924 SYMENGINE_EXPORT CLLVMLongDoubleVisitor *llvm_long_double_visitor_new(
void);
925 SYMENGINE_EXPORT
void
926 llvm_long_double_visitor_init(CLLVMLongDoubleVisitor *
self,
928 int perform_cse,
int opt_level);
929 SYMENGINE_EXPORT
void
930 llvm_long_double_visitor_call(CLLVMLongDoubleVisitor *
self,
931 long double *
const outs,
932 const long double *
const inps);
933 SYMENGINE_EXPORT
void
934 llvm_long_double_visitor_free(CLLVMLongDoubleVisitor *
self);
938 SYMENGINE_EXPORT CWRAPPER_OUTPUT_TYPE basic_cse(
CVecBasic *replacement_syms,
944 SYMENGINE_EXPORT
void symengine_print_stack_on_segfault(
void);
bool is_a_Number(const Basic &b)
bool is_a_Complex(const Basic &b)