#ifndef RSSN_H
#define RSSN_H
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#ifdef __cplusplus
namespace rssn {
#endif
typedef enum rssn_ConvergenceResult {
Converges,
Diverges,
Inconclusive,
} rssn_ConvergenceResult;
typedef enum rssn_MonomialOrder {
Lexicographical,
GradedLexicographical,
GradedReverseLexicographical,
} rssn_MonomialOrder;
typedef enum rssn_CoordinateSystem {
Cartesian,
Cylindrical,
Spherical,
} rssn_CoordinateSystem;
typedef struct rssn_ComputationResultCache rssn_ComputationResultCache;
typedef struct rssn_Expr rssn_Expr;
typedef struct rssn_ParsingCache rssn_ParsingCache;
typedef struct rssn_State rssn_State;
typedef struct rssn_Tensor rssn_Tensor;
typedef struct rssn_Vec_Expr rssn_Vec_Expr;
typedef struct rssn_Vec_SparsePolynomial rssn_Vec_SparsePolynomial;
typedef struct rssn_Vec_String rssn_Vec_String;
typedef struct rssn_Vector rssn_Vector;
typedef struct rssn_BincodeBuffer {
uint8_t *mData;
size_t mLen;
} rssn_BincodeBuffer;
typedef struct rssn_FfiPoint {
double mX;
double mY;
} rssn_FfiPoint;
#ifdef __cplusplus
extern "C" {
#endif
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *expr_definite_integrate(struct rssn_Expr *aHandle,
const char *aVarPtr,
struct rssn_Expr *aLowerHandle,
struct rssn_Expr *aUpperHandle)
;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *expr_differentiate(struct rssn_Expr *aHandle,
const char *aVarPtr)
;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *expr_integrate(struct rssn_Expr *aHandle,
const char *aVarPtr)
;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *expr_limit(struct rssn_Expr *aHandle,
const char *aVarPtr,
struct rssn_Expr *aToHandle)
;
rssn_ DEPRECATED_WITH_NOTE struct rssn_Expr *expr_simplify(struct rssn_Expr *aHandle) ;
rssn_ DEPRECATED_WITH_NOTE char *expr_solve(struct rssn_Expr *aHandle, const char *aVarPtr) ;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *expr_substitute(struct rssn_Expr *aHandle,
const char *aVarPtr,
struct rssn_Expr *aReplacementHandle)
;
rssn_ char *expr_to_latex(struct rssn_Expr *aHandle) ;
rssn_ char *expr_to_pretty_string(struct rssn_Expr *aHandle) ;
rssn_ char *expr_to_string(struct rssn_Expr *aHandle) ;
rssn_ char *expr_unify_expression(struct rssn_Expr *aHandle) ;
rssn_ void free_string(char *aS) ;
rssn_ char *interpolate_bezier_curve(const char *aJsonPtr) ;
rssn_ char *interpolate_lagrange(const char *aJsonPtr) ;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *matrix_add(struct rssn_Expr *aH1,
struct rssn_Expr *aH2)
;
rssn_
DEPRECATED_WITH_NOTE
char *matrix_characteristic_polynomial(struct rssn_Expr *aHandle,
const char *aVarPtr)
;
rssn_ DEPRECATED_WITH_NOTE struct rssn_Expr *matrix_determinant(struct rssn_Expr *aHandle) ;
rssn_
DEPRECATED_WITH_NOTE
char *matrix_eigen_decomposition(struct rssn_Expr *aHandle)
;
rssn_ DEPRECATED_WITH_NOTE struct rssn_Expr *matrix_identity(size_t aSize) ;
rssn_ DEPRECATED_WITH_NOTE struct rssn_Expr *matrix_inverse(struct rssn_Expr *aHandle) ;
rssn_ DEPRECATED_WITH_NOTE char *matrix_lu_decomposition(struct rssn_Expr *aHandle) ;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *matrix_mul(struct rssn_Expr *aH1,
struct rssn_Expr *aH2)
;
rssn_ DEPRECATED_WITH_NOTE char *matrix_null_space(struct rssn_Expr *aHandle) ;
rssn_ DEPRECATED_WITH_NOTE char *matrix_rref(struct rssn_Expr *aHandle) ;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *matrix_scalar_mul(struct rssn_Expr *aScalarHandle,
struct rssn_Expr *aMatrixHandle)
;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *matrix_sub(struct rssn_Expr *aH1,
struct rssn_Expr *aH2)
;
rssn_ DEPRECATED_WITH_NOTE char *matrix_trace(struct rssn_Expr *aHandle) ;
rssn_ DEPRECATED_WITH_NOTE struct rssn_Expr *matrix_transpose(struct rssn_Expr *aHandle) ;
rssn_ DEPRECATED_WITH_NOTE char *nt_mod_inverse(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *nt_mod_pow(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *numerical_gradient(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *numerical_integrate(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *physics_solve_advection_diffusion_1d(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE int64_t poly_degree(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE struct rssn_Expr *poly_from_coeffs_vec(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE bool poly_is_polynomial(const char *aJsonPtr) ;
rssn_
DEPRECATED_WITH_NOTE
struct rssn_Expr *poly_leading_coefficient(struct rssn_Expr *aHandle,
const char *aVarPtr)
;
rssn_ DEPRECATED_WITH_NOTE char *poly_long_division(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *poly_to_coeffs_vec(const char *aJsonPtr) ;
rssn_ bool polynomial_contains_var_handle(const struct rssn_Expr *aExprHandle, const char *aVar) ;
rssn_ int64_t polynomial_degree_handle(const struct rssn_Expr *aExprHandle, const char *aVar) ;
rssn_ void polynomial_free_expr_handle(struct rssn_Expr *aExprHandle) ;
rssn_ bool polynomial_is_polynomial_handle(const struct rssn_Expr *aExprHandle, const char *aVar) ;
rssn_
struct rssn_Expr *polynomial_leading_coefficient_handle(const struct rssn_Expr *aExprHandle,
const char *aVar)
;
rssn_
void polynomial_long_division_handle(const struct rssn_Expr *aDividendHandle,
const struct rssn_Expr *aDivisorHandle,
const char *aVar,
struct rssn_Expr **aQuotientOut,
struct rssn_Expr **aRemainderOut)
;
rssn_
struct rssn_Expr *rssn_analytic_continuation_handle(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aOrigCenter,
const struct rssn_Expr *aNewCenter,
size_t aOrder)
;
rssn_
enum rssn_ConvergenceResult rssn_analyze_convergence_handle(const struct rssn_Expr *aTerm,
const char *aVar)
;
rssn_
struct rssn_Expr *rssn_asymptotic_expansion_handle(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aPoint,
size_t aOrder)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_analytic_continuation(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aVarBuf,
struct rssn_BincodeBuffer aOrigCenterBuf,
struct rssn_BincodeBuffer aNewCenterBuf,
struct rssn_BincodeBuffer aOrderBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_analyze_convergence(struct rssn_BincodeBuffer aTermBuf,
struct rssn_BincodeBuffer aVarBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_asymptotic_expansion(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aVarBuf,
struct rssn_BincodeBuffer aPointBuf,
struct rssn_BincodeBuffer aOrderBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_buchberger(struct rssn_BincodeBuffer aBasisBuf,
struct rssn_BincodeBuffer aOrderBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_calculate_residue(struct rssn_BincodeBuffer aExprBuf,
const char *aVar,
struct rssn_BincodeBuffer aPoleBuf)
;
rssn_ bool rssn_bincode_check_analytic(struct rssn_BincodeBuffer aExprBuf, const char *aVar) ;
rssn_
struct rssn_BincodeBuffer rssn_bincode_coordinates_get_metric_tensor(struct rssn_BincodeBuffer aSystemBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_definite_integrate(struct rssn_BincodeBuffer aExprBuf,
const char *aVar,
struct rssn_BincodeBuffer aLowerBuf,
struct rssn_BincodeBuffer aUpperBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_differentiate(struct rssn_BincodeBuffer aExprBuf,
const char *aVar)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_evaluate_at_point(struct rssn_BincodeBuffer aExprBuf,
const char *aVar,
struct rssn_BincodeBuffer aValueBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_evaluate_numerical(struct rssn_BincodeBuffer aExprBuf)
;
rssn_
size_t rssn_bincode_find_pole_order(struct rssn_BincodeBuffer aExprBuf,
const char *aVar,
struct rssn_BincodeBuffer aPoleBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_find_poles(struct rssn_BincodeBuffer aExprBuf,
const char *aVar)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_fourier_series(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aVarBuf,
struct rssn_BincodeBuffer aPeriodBuf,
struct rssn_BincodeBuffer aOrderBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_get_real_imag_parts(struct rssn_BincodeBuffer aExprBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_heuristic_simplify(struct rssn_BincodeBuffer aExprBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_integrate(struct rssn_BincodeBuffer aExprBuf,
const char *aVar)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_laurent_series(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aVarBuf,
struct rssn_BincodeBuffer aCenterBuf,
struct rssn_BincodeBuffer aOrderBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_limit(struct rssn_BincodeBuffer aExprBuf,
const char *aVar,
struct rssn_BincodeBuffer aPointBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_matrix_add(struct rssn_BincodeBuffer aM1Buf,
struct rssn_BincodeBuffer aM2Buf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_matrix_determinant(struct rssn_BincodeBuffer aMatrixBuf)
;
rssn_ struct rssn_BincodeBuffer rssn_bincode_matrix_inverse(struct rssn_BincodeBuffer aMatrixBuf) ;
rssn_
struct rssn_BincodeBuffer rssn_bincode_matrix_mul(struct rssn_BincodeBuffer aM1Buf,
struct rssn_BincodeBuffer aM2Buf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_matrix_solve_linear_system(struct rssn_BincodeBuffer aABuf,
struct rssn_BincodeBuffer aBBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_matrix_transpose(struct rssn_BincodeBuffer aMatrixBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_path_integrate(struct rssn_BincodeBuffer aExprBuf,
const char *aVar,
struct rssn_BincodeBuffer aContourBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_poly_division_multivariate(struct rssn_BincodeBuffer aDividendBuf,
struct rssn_BincodeBuffer aDivisorsBuf,
struct rssn_BincodeBuffer aOrderBuf)
;
rssn_
bool rssn_bincode_polynomial_contains_var(struct rssn_BincodeBuffer aExprBuf,
const char *aVar)
;
rssn_ int64_t rssn_bincode_polynomial_degree(struct rssn_BincodeBuffer aExprBuf, const char *aVar) ;
rssn_
bool rssn_bincode_polynomial_is_polynomial(struct rssn_BincodeBuffer aExprBuf,
const char *aVar)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_polynomial_leading_coefficient(struct rssn_BincodeBuffer aExprBuf,
const char *aVar)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_polynomial_long_division(struct rssn_BincodeBuffer aDividendBuf,
struct rssn_BincodeBuffer aDivisorBuf,
const char *aVar)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_polynomial_to_coeffs_vec(struct rssn_BincodeBuffer aExprBuf,
const char *aVar)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_product(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aVarBuf,
struct rssn_BincodeBuffer aLowerBuf,
struct rssn_BincodeBuffer aUpperBuf)
;
rssn_ struct rssn_BincodeBuffer rssn_bincode_simplify(struct rssn_BincodeBuffer aExprBuf) ;
rssn_ struct rssn_BincodeBuffer rssn_bincode_simplify_dag(struct rssn_BincodeBuffer aExprBuf) ;
rssn_
struct rssn_BincodeBuffer rssn_bincode_solve(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aVarBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_solve_linear_system(struct rssn_BincodeBuffer aSystemBuf,
struct rssn_BincodeBuffer aVarsBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_solve_system(struct rssn_BincodeBuffer aEquationsBuf,
struct rssn_BincodeBuffer aVarsBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_substitute(struct rssn_BincodeBuffer aExprBuf,
const char *aVar,
struct rssn_BincodeBuffer aReplacementBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_summation(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aVarBuf,
struct rssn_BincodeBuffer aLowerBuf,
struct rssn_BincodeBuffer aUpperBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_taylor_series(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aVarBuf,
struct rssn_BincodeBuffer aCenterBuf,
struct rssn_BincodeBuffer aOrderBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_tensor_add(struct rssn_BincodeBuffer aT1Buf,
struct rssn_BincodeBuffer aT2Buf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_tensor_outer_product(struct rssn_BincodeBuffer aT1Buf,
struct rssn_BincodeBuffer aT2Buf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_tensor_scalar_mul(struct rssn_BincodeBuffer aTBuf,
struct rssn_BincodeBuffer aScalarBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_transform_contravariant_vector(struct rssn_BincodeBuffer aCompsBuf,
struct rssn_BincodeBuffer aFromBuf,
struct rssn_BincodeBuffer aToBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_transform_covariant_vector(struct rssn_BincodeBuffer aCompsBuf,
struct rssn_BincodeBuffer aFromBuf,
struct rssn_BincodeBuffer aToBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_transform_curl(struct rssn_BincodeBuffer aCompsBuf,
struct rssn_BincodeBuffer aFromBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_transform_divergence(struct rssn_BincodeBuffer aCompsBuf,
struct rssn_BincodeBuffer aFromBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_transform_expression(struct rssn_BincodeBuffer aExprBuf,
struct rssn_BincodeBuffer aFromBuf,
struct rssn_BincodeBuffer aToBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_transform_gradient(struct rssn_BincodeBuffer aScalarBuf,
struct rssn_BincodeBuffer aVarsBuf,
struct rssn_BincodeBuffer aFromBuf,
struct rssn_BincodeBuffer aToBuf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_transform_point(struct rssn_BincodeBuffer aPointBuf,
struct rssn_BincodeBuffer aFromBuf,
struct rssn_BincodeBuffer aToBuf)
;
rssn_ struct rssn_BincodeBuffer rssn_bincode_unify_expression(struct rssn_BincodeBuffer aExprBuf) ;
rssn_
struct rssn_BincodeBuffer rssn_bincode_vector_cross(struct rssn_BincodeBuffer aV1Buf,
struct rssn_BincodeBuffer aV2Buf)
;
rssn_
struct rssn_BincodeBuffer rssn_bincode_vector_dot(struct rssn_BincodeBuffer aV1Buf,
struct rssn_BincodeBuffer aV2Buf)
;
rssn_ struct rssn_BincodeBuffer rssn_bincode_vector_magnitude(struct rssn_BincodeBuffer aVBuf) ;
rssn_ struct rssn_BincodeBuffer rssn_bincode_vector_normalize(struct rssn_BincodeBuffer aVBuf) ;
rssn_ char *rssn_binomial_coefficient(size_t aN, size_t aK) ;
rssn_ char *rssn_binomial_coefficient_json(size_t aN, size_t aK) ;
rssn_
struct rssn_Vec_SparsePolynomial *rssn_buchberger_handle(const struct rssn_Vec_SparsePolynomial *aBasis,
enum rssn_MonomialOrder aOrder)
;
rssn_
struct rssn_Expr *rssn_calculate_residue(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aPole)
;
rssn_
int32_t rssn_calculus_definite_integrate(size_t aExprH,
const char *aVar,
size_t aLowerH,
size_t aUpperH,
size_t *aResultH)
;
rssn_ int32_t rssn_calculus_differentiate(size_t aExprH, const char *aVar, size_t *aResultH) ;
rssn_ int32_t rssn_calculus_integrate(size_t aExprH, const char *aVar, size_t *aResultH) ;
rssn_ int32_t rssn_calculus_limit(size_t aExprH, const char *aVar, size_t aToH, size_t *aResultH) ;
rssn_
int32_t rssn_calculus_substitute(size_t aExprH,
const char *aVar,
size_t aReplacementH,
size_t *aResultH)
;
rssn_ bool rssn_check_analytic(const struct rssn_Expr *aExpr, const char *aVar) ;
rssn_ int32_t rssn_comb_combinations(uint64_t aN, uint64_t aK, double *aResult) ;
rssn_ int32_t rssn_comb_factorial(uint64_t aN, double *aResult) ;
rssn_ int32_t rssn_comb_permutations(uint64_t aN, uint64_t aK, double *aResult) ;
rssn_ void rssn_computation_result_cache_clear(struct rssn_ComputationResultCache *aCache) ;
rssn_ void rssn_computation_result_cache_free(struct rssn_ComputationResultCache *aCache) ;
rssn_
char *rssn_computation_result_cache_get(struct rssn_ComputationResultCache *aCache,
const struct rssn_Expr *aExpr)
;
rssn_
struct rssn_BincodeBuffer rssn_computation_result_cache_get_bincode(struct rssn_ComputationResultCache *aCache,
struct rssn_BincodeBuffer aExprBuffer)
;
rssn_
char *rssn_computation_result_cache_get_json(struct rssn_ComputationResultCache *aCache,
const char *aJsonExpr)
;
rssn_ struct rssn_ComputationResultCache *rssn_computation_result_cache_new(void) ;
rssn_
void rssn_computation_result_cache_set(struct rssn_ComputationResultCache *aCache,
const struct rssn_Expr *aExpr,
const char *aValue)
;
rssn_
void rssn_computation_result_cache_set_bincode(struct rssn_ComputationResultCache *aCache,
struct rssn_BincodeBuffer aExprBuffer,
struct rssn_BincodeBuffer aValueBuffer)
;
rssn_
void rssn_computation_result_cache_set_json(struct rssn_ComputationResultCache *aCache,
const char *aJsonExpr,
const char *aJsonValue)
;
rssn_
struct rssn_Expr *rssn_coordinates_get_metric_tensor_handle(enum rssn_CoordinateSystem aSystem)
;
rssn_ struct rssn_Expr *rssn_cos(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_BincodeBuffer rssn_cos_bincode(struct rssn_BincodeBuffer aExprBuffer) ;
rssn_ char *rssn_cos_json(const char *aJsonExpr) ;
rssn_
struct rssn_Expr *rssn_definite_integrate(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aLower,
const struct rssn_Expr *aUpper)
;
rssn_ struct rssn_Expr *rssn_differentiate(const struct rssn_Expr *aExpr, const char *aVar) ;
rssn_ struct rssn_Expr *rssn_e(void) ;
rssn_ struct rssn_BincodeBuffer rssn_e_bincode(void) ;
rssn_ char *rssn_e_json(void) ;
rssn_
struct rssn_Expr *rssn_evaluate_at_point(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aValue)
;
rssn_ double rssn_evaluate_numerical_handle(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_Expr *rssn_exp(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_BincodeBuffer rssn_exp_bincode(struct rssn_BincodeBuffer aExprBuffer) ;
rssn_ char *rssn_exp_json(const char *aJsonExpr) ;
rssn_ struct rssn_Expr *rssn_expand(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_BincodeBuffer rssn_expand_bincode(struct rssn_BincodeBuffer aExprBuffer) ;
rssn_ char *rssn_expand_json(const char *aJsonExpr) ;
rssn_ size_t rssn_expr_create(const char *aJsonPtr) ;
rssn_ void rssn_expr_free(size_t aHandle) ;
rssn_ size_t rssn_expr_simplify(const size_t *aHandle) ;
rssn_ int32_t rssn_fft(rssn_Complex<double> *aData, size_t aLen) ;
rssn_
size_t rssn_find_pole_order(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aPole)
;
rssn_ struct rssn_Vec_Expr *rssn_find_poles(const struct rssn_Expr *aExpr, const char *aVar) ;
rssn_
struct rssn_Expr *rssn_fourier_series_handle(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aPeriod,
size_t aOrder)
;
rssn_ void rssn_free_bincode_buffer(struct rssn_BincodeBuffer aBuffer) ;
rssn_ void rssn_free_expr(struct rssn_Expr *aExpr) ;
rssn_ void rssn_free_poles(struct rssn_Vec_Expr *aPoles) ;
rssn_ void rssn_free_string(char *aS) ;
rssn_ char *rssn_get_build_date(void) ;
rssn_ struct rssn_BincodeBuffer rssn_get_build_date_bincode(void) ;
rssn_ char *rssn_get_build_date_json(void) ;
rssn_ struct rssn_BincodeBuffer rssn_get_build_info_bincode(void) ;
rssn_ char *rssn_get_build_info_json(void) ;
rssn_ char *rssn_get_cargo_target_triple(void) ;
rssn_ char *rssn_get_commit_sha(void) ;
rssn_ struct rssn_BincodeBuffer rssn_get_commit_sha_bincode(void) ;
rssn_ char *rssn_get_commit_sha_json(void) ;
rssn_ const char *rssn_get_last_error(void) ;
rssn_ struct rssn_Vec_Expr *rssn_get_real_imag_parts(const struct rssn_Expr *aExpr) ;
rssn_ char *rssn_get_rustc_version(void) ;
rssn_ char *rssn_get_system_info(void) ;
rssn_ struct rssn_Expr *rssn_heuristic_simplify(const struct rssn_Expr *aExpr) ;
rssn_ int32_t rssn_ifft(rssn_Complex<double> *aData, size_t aLen) ;
rssn_ int32_t rssn_init_plugin_manager(const char *aPluginDirPtr) ;
rssn_ struct rssn_Expr *rssn_integrate(const struct rssn_Expr *aExpr, const char *aVar) ;
rssn_
int32_t rssn_interp_bezier_curve(const struct rssn_FfiPoint *aPointsPtr,
size_t aNumPoints,
double aT,
struct rssn_FfiPoint *aResultPtr)
;
rssn_
int32_t rssn_interp_lagrange(const struct rssn_FfiPoint *aPointsPtr,
size_t aNumPoints,
size_t *aResultHandle)
;
rssn_
char *rssn_json_analytic_continuation(const char *aExprJson,
const char *aVarJson,
const char *aOrigCenterJson,
const char *aNewCenterJson,
const char *aOrderJson)
;
rssn_ char *rssn_json_analyze_convergence(const char *aTermJson, const char *aVarJson) ;
rssn_
char *rssn_json_asymptotic_expansion(const char *aExprJson,
const char *aVarJson,
const char *aPointJson,
const char *aOrderJson)
;
rssn_ char *rssn_json_buchberger(const char *aBasisJson, const char *aOrderJson) ;
rssn_
char *rssn_json_calculate_residue(const char *aExprJson,
const char *aVar,
const char *aPoleJson)
;
rssn_ bool rssn_json_check_analytic(const char *aExprJson, const char *aVar) ;
rssn_ char *rssn_json_coordinates_get_metric_tensor(enum rssn_CoordinateSystem aSystem) ;
rssn_
char *rssn_json_definite_integrate(const char *aExprJson,
const char *aVar,
const char *aLowerJson,
const char *aUpperJson)
;
rssn_ char *rssn_json_differentiate(const char *aExprJson, const char *aVar) ;
rssn_
char *rssn_json_evaluate_at_point(const char *aExprJson,
const char *aVar,
const char *aValueJson)
;
rssn_ char *rssn_json_evaluate_numerical(const char *aExprJson) ;
rssn_
size_t rssn_json_find_pole_order(const char *aExprJson,
const char *aVar,
const char *aPoleJson)
;
rssn_ char *rssn_json_find_poles(const char *aExprJson, const char *aVar) ;
rssn_
char *rssn_json_fourier_series(const char *aExprJson,
const char *aVarJson,
const char *aPeriodJson,
const char *aOrderJson)
;
rssn_ char *rssn_json_get_real_imag_parts(const char *aExprJson) ;
rssn_ char *rssn_json_heuristic_simplify(const char *aExprJson) ;
rssn_ char *rssn_json_integrate(const char *aExprJson, const char *aVar) ;
rssn_
char *rssn_json_laurent_series(const char *aExprJson,
const char *aVarJson,
const char *aCenterJson,
const char *aOrderJson)
;
rssn_ char *rssn_json_limit(const char *aExprJson, const char *aVar, const char *aPointJson) ;
rssn_ char *rssn_json_matrix_add(const char *aM1Json, const char *aM2Json) ;
rssn_ char *rssn_json_matrix_determinant(const char *aMatrixJson) ;
rssn_ char *rssn_json_matrix_inverse(const char *aMatrixJson) ;
rssn_ char *rssn_json_matrix_mul(const char *aM1Json, const char *aM2Json) ;
rssn_ char *rssn_json_matrix_solve_linear_system(const char *aAJson, const char *aBJson) ;
rssn_ char *rssn_json_matrix_transpose(const char *aMatrixJson) ;
rssn_
char *rssn_json_path_integrate(const char *aExprJson,
const char *aVar,
const char *aContourJson)
;
rssn_
char *rssn_json_poly_division_multivariate(const char *aDividendJson,
const char *aDivisorsJson,
const char *aOrderJson)
;
rssn_ bool rssn_json_polynomial_contains_var(const char *aExprJson, const char *aVar) ;
rssn_ int64_t rssn_json_polynomial_degree(const char *aExprJson, const char *aVar) ;
rssn_ bool rssn_json_polynomial_is_polynomial(const char *aExprJson, const char *aVar) ;
rssn_ char *rssn_json_polynomial_leading_coefficient(const char *aExprJson, const char *aVar) ;
rssn_
char *rssn_json_polynomial_long_division(const char *aDividendJson,
const char *aDivisorJson,
const char *aVar)
;
rssn_ char *rssn_json_polynomial_to_coeffs_vec(const char *aExprJson, const char *aVar) ;
rssn_
char *rssn_json_product(const char *aExprJson,
const char *aVarJson,
const char *aLowerJson,
const char *aUpperJson)
;
rssn_ char *rssn_json_simplify(const char *aExprJson) ;
rssn_ char *rssn_json_simplify_dag(const char *aExprJson) ;
rssn_ char *rssn_json_solve(const char *aExprJson, const char *aVarJson) ;
rssn_ char *rssn_json_solve_linear_system(const char *aSystemJson, const char *aVarsJson) ;
rssn_ char *rssn_json_solve_system(const char *aEquationsJson, const char *aVarsJson) ;
rssn_
char *rssn_json_substitute(const char *aExprJson,
const char *aVar,
const char *aReplacementJson)
;
rssn_
char *rssn_json_summation(const char *aExprJson,
const char *aVarJson,
const char *aLowerJson,
const char *aUpperJson)
;
rssn_
char *rssn_json_taylor_series(const char *aExprJson,
const char *aVarJson,
const char *aCenterJson,
const char *aOrderJson)
;
rssn_ char *rssn_json_tensor_add(const char *aT1Json, const char *aT2Json) ;
rssn_ char *rssn_json_tensor_contract(const char *aTJson, size_t aAxis1, size_t aAxis2) ;
rssn_ char *rssn_json_tensor_outer_product(const char *aT1Json, const char *aT2Json) ;
rssn_ char *rssn_json_tensor_scalar_mul(const char *aTJson, const char *aScalarJson) ;
rssn_
char *rssn_json_transform_contravariant_vector(const char *aCompsJson,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_
char *rssn_json_transform_covariant_vector(const char *aCompsJson,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_ char *rssn_json_transform_curl(const char *aCompsJson, enum rssn_CoordinateSystem aFrom) ;
rssn_
char *rssn_json_transform_divergence(const char *aCompsJson,
enum rssn_CoordinateSystem aFrom)
;
rssn_
char *rssn_json_transform_expression(const char *aExprJson,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_
char *rssn_json_transform_gradient(const char *aScalarJson,
const char *aVarsJson,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_
char *rssn_json_transform_point(const char *aPointJson,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_ char *rssn_json_unify_expression(const char *aExprJson) ;
rssn_ char *rssn_json_vector_cross(const char *aV1Json, const char *aV2Json) ;
rssn_
char *rssn_json_vector_curl(const char *aVJson,
const char *aXVar,
const char *aYVar,
const char *aZVar)
;
rssn_
char *rssn_json_vector_divergence(const char *aVJson,
const char *aXVar,
const char *aYVar,
const char *aZVar)
;
rssn_ char *rssn_json_vector_dot(const char *aV1Json, const char *aV2Json) ;
rssn_
char *rssn_json_vector_gradient(const char *aScalarFieldJson,
const char *aXVar,
const char *aYVar,
const char *aZVar)
;
rssn_ char *rssn_json_vector_magnitude(const char *aVJson) ;
rssn_ char *rssn_json_vector_normalize(const char *aVJson) ;
rssn_
struct rssn_Expr *rssn_laurent_series_handle(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aCenter,
size_t aOrder)
;
rssn_
struct rssn_Expr *rssn_limit(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aPoint)
;
rssn_ struct rssn_Expr *rssn_ln(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_BincodeBuffer rssn_ln_bincode(struct rssn_BincodeBuffer aExprBuffer) ;
rssn_ char *rssn_ln_json(const char *aJsonExpr) ;
rssn_ int32_t rssn_matrix_add(size_t aH1, size_t aH2, size_t *aResultH) ;
rssn_
struct rssn_Expr *rssn_matrix_add_handle(const struct rssn_Expr *aM1,
const struct rssn_Expr *aM2)
;
rssn_ int32_t rssn_matrix_determinant(size_t aH, size_t *aResultH) ;
rssn_ struct rssn_Expr *rssn_matrix_determinant_handle(const struct rssn_Expr *aMatrix) ;
rssn_ int32_t rssn_matrix_identity(size_t aSize, size_t *aResultH) ;
rssn_ int32_t rssn_matrix_inverse(size_t aH, size_t *aResultH) ;
rssn_ struct rssn_Expr *rssn_matrix_inverse_handle(const struct rssn_Expr *aMatrix) ;
rssn_ int32_t rssn_matrix_mul(size_t aH1, size_t aH2, size_t *aResultH) ;
rssn_
struct rssn_Expr *rssn_matrix_mul_handle(const struct rssn_Expr *aM1,
const struct rssn_Expr *aM2)
;
rssn_ int32_t rssn_matrix_scalar_mul(size_t aScalarH, size_t aMatrixH, size_t *aResultH) ;
rssn_
struct rssn_Expr *rssn_matrix_solve_linear_system_handle(const struct rssn_Expr *aA,
const struct rssn_Expr *aB)
;
rssn_ int32_t rssn_matrix_sub(size_t aH1, size_t aH2, size_t *aResultH) ;
rssn_ int32_t rssn_matrix_transpose(size_t aH, size_t *aResultH) ;
rssn_ struct rssn_Expr *rssn_matrix_transpose_handle(const struct rssn_Expr *aMatrix) ;
rssn_ int32_t rssn_nt_gcd(uint64_t aA, uint64_t aB, uint64_t *aResult) ;
rssn_ int32_t rssn_nt_is_prime(uint64_t aN, bool *aResult) ;
rssn_ int32_t rssn_nt_mod_inverse(int64_t aA, int64_t aB, int64_t *aResult) ;
rssn_ int32_t rssn_nt_mod_pow(uint64_t aBase, uint64_t aExp, uint64_t aModulus, uint64_t *aResult) ;
rssn_
int32_t rssn_numerical_gradient(size_t aExprH,
const char *const *aVars,
size_t aNumVars,
const double *aPoint,
size_t aPointLen,
double *aResultVec)
;
rssn_
int32_t rssn_numerical_integrate(size_t aExprH,
const char *aVar,
double aStart,
double aEnd,
size_t aNSteps,
uint32_t aMethod,
double *aResult)
;
rssn_ void rssn_parsing_cache_clear(struct rssn_ParsingCache *aCache) ;
rssn_ void rssn_parsing_cache_free(struct rssn_ParsingCache *aCache) ;
rssn_
struct rssn_Expr *rssn_parsing_cache_get(struct rssn_ParsingCache *aCache,
const char *aInput)
;
rssn_
struct rssn_BincodeBuffer rssn_parsing_cache_get_bincode(struct rssn_ParsingCache *aCache,
const char *aInput)
;
rssn_ char *rssn_parsing_cache_get_json(struct rssn_ParsingCache *aCache, const char *aInput) ;
rssn_ struct rssn_ParsingCache *rssn_parsing_cache_new(void) ;
rssn_
void rssn_parsing_cache_set(struct rssn_ParsingCache *aCache,
const char *aInput,
const struct rssn_Expr *aExpr)
;
rssn_
void rssn_parsing_cache_set_bincode(struct rssn_ParsingCache *aCache,
const char *aInput,
struct rssn_BincodeBuffer aBuffer)
;
rssn_
void rssn_parsing_cache_set_json(struct rssn_ParsingCache *aCache,
const char *aInput,
const char *aJsonExpr)
;
rssn_
struct rssn_Expr *rssn_path_integrate(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aContour)
;
rssn_
int32_t rssn_physics_advection_diffusion_1d(const double *aInitialCond,
size_t aLen,
double aDx,
double aC,
double aD,
double aDt,
size_t aSteps,
double *aResultPtr)
;
rssn_ struct rssn_Expr *rssn_pi(void) ;
rssn_ struct rssn_BincodeBuffer rssn_pi_bincode(void) ;
rssn_ char *rssn_pi_json(void) ;
rssn_
size_t rssn_plugin_execute(const char *aPluginNamePtr,
const char *aCommandPtr,
size_t aArgsHandle)
;
rssn_ struct rssn_Expr *rssn_poles_get(const struct rssn_Vec_Expr *aPoles, size_t aIndex) ;
rssn_ size_t rssn_poles_len(const struct rssn_Vec_Expr *aPoles) ;
rssn_ int32_t rssn_poly_degree(size_t aExprHandle, const char *aVarPtr, int64_t *aResult) ;
rssn_ int32_t rssn_poly_is_polynomial(size_t aExprHandle, const char *aVarPtr, bool *aResult) ;
rssn_
int32_t rssn_poly_long_division(size_t aNHandle,
size_t aDHandle,
const char *aVarPtr,
size_t *aQHandle,
size_t *aRHandle)
;
rssn_ struct rssn_Expr *rssn_pow(const struct rssn_Expr *aBase, const struct rssn_Expr *aExp) ;
rssn_
struct rssn_BincodeBuffer rssn_pow_bincode(struct rssn_BincodeBuffer aBaseBuffer,
struct rssn_BincodeBuffer aExpBuffer)
;
rssn_ char *rssn_pow_json(const char *aJsonBase, const char *aJsonExp) ;
rssn_
struct rssn_Expr *rssn_product_handle(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aLower,
const struct rssn_Expr *aUpper)
;
rssn_
enum rssn_ConvergenceResult *rssn_series_analyze_convergence_handle(const struct rssn_Expr *aSeries,
const char *aVar)
;
rssn_
struct rssn_BincodeBuffer rssn_series_bincode_analyze_convergence(struct rssn_BincodeBuffer aSeriesBuf,
struct rssn_BincodeBuffer aVarBuf)
;
rssn_ char *rssn_series_json_analyze_convergence(const char *aSeriesJson, const char *aVarJson) ;
rssn_ struct rssn_Expr *rssn_simplify(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_Expr *rssn_simplify_dag(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_Expr *rssn_sin(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_BincodeBuffer rssn_sin_bincode(struct rssn_BincodeBuffer aExprBuffer) ;
rssn_ char *rssn_sin_json(const char *aJsonExpr) ;
rssn_ int32_t rssn_solve(size_t aExprH, const char *aVar, size_t *aResultH) ;
rssn_ struct rssn_Vec_Expr *rssn_solve_handle(const struct rssn_Expr *aExpr, const char *aVar) ;
rssn_
struct rssn_Vec_Expr *rssn_solve_linear_system_handle(const struct rssn_Expr *aSystem,
const struct rssn_Vec_String *aVars)
;
rssn_ struct rssn_Expr *rssn_sqrt(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_BincodeBuffer rssn_sqrt_bincode(struct rssn_BincodeBuffer aExprBuffer) ;
rssn_ char *rssn_sqrt_json(const char *aJsonExpr) ;
rssn_ void rssn_state_free(struct rssn_State *aState) ;
rssn_ char *rssn_state_get_intermediate_value(const struct rssn_State *aState) ;
rssn_
struct rssn_BincodeBuffer rssn_state_get_intermediate_value_bincode(struct rssn_BincodeBuffer aStateBuffer)
;
rssn_ char *rssn_state_get_intermediate_value_json(const char *aJsonState) ;
rssn_ struct rssn_State *rssn_state_new(void) ;
rssn_ struct rssn_BincodeBuffer rssn_state_new_bincode(void) ;
rssn_ char *rssn_state_new_json(void) ;
rssn_ void rssn_state_set_intermediate_value(struct rssn_State *aState, const char *aValue) ;
rssn_
struct rssn_BincodeBuffer rssn_state_set_intermediate_value_bincode(struct rssn_BincodeBuffer aStateBuffer,
struct rssn_BincodeBuffer aValueBuffer)
;
rssn_ char *rssn_state_set_intermediate_value_json(const char *aJsonState, const char *aValue) ;
rssn_
int32_t rssn_stats_covariance(const double *aD1,
const double *aD2,
size_t aLen,
double *aResult)
;
rssn_ int32_t rssn_stats_mean(const double *aData, size_t aLen, double *aResult) ;
rssn_ int32_t rssn_stats_std_dev(const double *aData, size_t aLen, double *aResult) ;
rssn_ int32_t rssn_stats_variance(const double *aData, size_t aLen, double *aResult) ;
rssn_
struct rssn_Expr *rssn_substitute(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aReplacement)
;
rssn_
struct rssn_Expr *rssn_summation_handle(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aLower,
const struct rssn_Expr *aUpper)
;
rssn_ struct rssn_Expr *rssn_tan(const struct rssn_Expr *aExpr) ;
rssn_ struct rssn_BincodeBuffer rssn_tan_bincode(struct rssn_BincodeBuffer aExprBuffer) ;
rssn_ char *rssn_tan_json(const char *aJsonExpr) ;
rssn_
struct rssn_Expr *rssn_taylor_series_handle(const struct rssn_Expr *aExpr,
const char *aVar,
const struct rssn_Expr *aCenter,
size_t aOrder)
;
rssn_
struct rssn_Tensor *rssn_tensor_add_handle(const struct rssn_Tensor *aT1,
const struct rssn_Tensor *aT2)
;
rssn_
struct rssn_Tensor *rssn_tensor_contract_handle(const struct rssn_Tensor *aT,
size_t aAxis1,
size_t aAxis2)
;
rssn_
struct rssn_Tensor *rssn_tensor_outer_product_handle(const struct rssn_Tensor *aT1,
const struct rssn_Tensor *aT2)
;
rssn_
struct rssn_Tensor *rssn_tensor_scalar_mul_handle(const struct rssn_Tensor *aT,
const struct rssn_Expr *aScalar)
;
rssn_ char *rssn_test_string_passing(void) ;
rssn_
struct rssn_Vec_Expr *rssn_transform_contravariant_vector_handle(const struct rssn_Vec_Expr *aComps,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_
struct rssn_Vec_Expr *rssn_transform_covariant_vector_handle(const struct rssn_Vec_Expr *aComps,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_
struct rssn_Vec_Expr *rssn_transform_curl_handle(const struct rssn_Vec_Expr *aComps,
enum rssn_CoordinateSystem aFrom)
;
rssn_
struct rssn_Expr *rssn_transform_divergence_handle(const struct rssn_Vec_Expr *aComps,
enum rssn_CoordinateSystem aFrom)
;
rssn_
struct rssn_Expr *rssn_transform_expression_handle(const struct rssn_Expr *aExpr,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_
struct rssn_Vec_Expr *rssn_transform_gradient_handle(const struct rssn_Expr *aScalar,
const struct rssn_Vec_String *aVars,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_
struct rssn_Vec_Expr *rssn_transform_point_handle(const struct rssn_Vec_Expr *aPoint,
enum rssn_CoordinateSystem aFrom,
enum rssn_CoordinateSystem aTo)
;
rssn_ struct rssn_Expr *rssn_unify_expression_handle(const struct rssn_Expr *aExpr) ;
rssn_
int32_t rssn_vec_dot_product(const double *aD1,
size_t aL1,
const double *aD2,
size_t aL2,
double *aResult)
;
rssn_ int32_t rssn_vec_norm(const double *aData, size_t aLen, double *aResult) ;
rssn_ rssn_Vector *rssn_vector_cross_handle(const rssn_Vector *aV1, const rssn_Vector *aV2) ;
rssn_ struct rssn_Expr *rssn_vector_dot_handle(const rssn_Vector *aV1, const rssn_Vector *aV2) ;
rssn_ struct rssn_Expr *rssn_vector_magnitude_handle(const rssn_Vector *aV) ;
rssn_ rssn_Vector *rssn_vector_normalize_handle(const rssn_Vector *aV) ;
rssn_ DEPRECATED_WITH_NOTE char *stats_percentile(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *stats_simple_linear_regression(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *transforms_fft(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *transforms_ifft(const char *aJsonPtr) ;
rssn_ DEPRECATED_WITH_NOTE char *vector_scalar_mul(const char *aJsonPtr) ;
#ifdef __cplusplus
} #endif
#ifdef __cplusplus
} #endif
#endif