Go to the documentation of this file.
70 if (source->
children[i] == NULL)
continue;
78 if (source->
children[i] == NULL)
continue;
124 if (temp_1 > temp_2) {
199 if (source->
children[i] == NULL)
continue;
208 if (source->
children[i] == NULL)
continue;
209 if (source->
children[j] == NULL)
continue;
335 if (source->
children[i] == NULL)
continue;
350 if (source->
children[i] == NULL)
continue;
351 if (source->
children[j] == NULL)
continue;
415 if (source->
children[i] == NULL)
continue;
426 if (source->
children[i] == NULL)
continue;
442 for (i = 0; i < addition_factors->
child_count; i++) {
504 uintmax_t* coefficients;
640 if (exponent->
sign == -1) {
1123 for (i = 0; i < source->
child_count && recursive; i++) {
1124 if (source->
children[i] == NULL)
continue;
1272 if (source->
children[i] == 0)
continue;
uint8_t remove_exponentation_identities(expression *source)
void approximate_trigonometric(expression *source)
uint8_t int_power(uintmax_t *result, uintmax_t base, uintmax_t exponent)
void simplify_division(expression *source)
void merge_nested_exponentations(expression *source)
void replace_expression(expression *a, expression *b)
void simplify_arctan(expression *source)
uint8_t symbolic_exponentation(expression *source)
expression_identifier identifier
expression * prime_factors(uintmax_t source)
double literal_to_double(expression *source)
return_status exponentation_remove_logarithms(expression *source)
uint8_t expand_multiplication(expression *source)
void simplify_multiplication(expression *source)
void smart_free(void *pointer)
Frees a pointer.
void simplify_cos(expression *source)
#define ERROR_CHECK(F)
Check if the return status of a function is RETS_ERROR. If so, return RETS_ERROR.
void approximate_multiplication(expression *source)
uintmax_t euclidean_gcd(uintmax_t a, uintmax_t b)
Computes the GCD of two integers.
void simplify_abs(expression *source)
expression * new_symbol(expression_identifier identifier, const char *value)
Allocates and initializes a new symbol/variable expression.
union expression::@0 value
void simplify_sin(expression *source)
uint8_t symbolic_multiplication(expression **result, expression *a, expression *b, bool persistent)
uint8_t symbolic_addition(expression **result, expression *a, expression *b, bool persistent)
expression * double_to_literal(double source)
uint8_t evaluate_logarithm(expression **result, expression *value, expression *base)
void order_children(expression *source)
bool expressions_are_identical(const expression *a, expression *b, bool persistent)
void remove_child_at_index(expression *source, uint8_t index)
void approximate_addition(expression *source)
void free_expression(expression *source, bool persistent)
void evaluate_addition(expression *source)
uint8_t numeric_addition(expression **result, expression *a, expression *b, bool persistent)
uint8_t simplify_logarithm(expression *source)
uintmax_t * binomial_coefficients(uint8_t n)
uint8_t numeric_multiplication(expression **result, expression *a, expression *b, bool persistent)
uint8_t set_error(error_domain domain, error_identifier identifier, const char *body)
Sets current_error to the arguments provided.
uint8_t expand_logarithm(expression *source)
void approximate(expression *source)
void int_root(uintmax_t *factor, uintmax_t *remainder, uintmax_t base, uintmax_t degree)
void free_expressions(uint8_t expression_count,...)
uint8_t multiplication(uintmax_t *result, uintmax_t a, uintmax_t b)
uint8_t expand_exponentation_exponent(expression *source)
void any_expression_to_expression(expression *source)
void approximate_exponentation(expression *source)
void simplify_addition(expression *source)
bool expression_is_constant(const expression *source)
expression * copy_expression(const expression *source)
Returns a deep copy of an expression.
void merge_additions_multiplications(expression *source)
void simplify_arccos(expression *source)
return_status simplify_tan(expression *source)
return_status simplify_exponentation(expression *source)
uint8_t simplify(expression *source, bool recursive)
void expand_multiplication_addition_factors(expression *source)
void append_child(expression *parent, expression *child)
Appends a child to an expression.
expression * new_expression(expression_type type, expression_identifier identifier, uint8_t child_count,...)
Allocates and initializes a new expression with the arguments provided.
void remove_null_children(expression *source)
void evaluate_multiplication(expression *source)
uint8_t addition(uintmax_t *result, uintmax_t a, uintmax_t b)
expression * new_literal(int8_t sign, uintmax_t numerator, uintmax_t denominator)
Allocates and initializes a new literal expression.
uint8_t expand_exponentation_base(expression *source)
bool expressions_are_equivalent(const expression *a, expression *b, bool persistent)
return_status evaluate_exponentation(expression *source)
struct expression ** children
void simplify_arcsin(expression *source)
void approximate_log(expression *source)
void approximate_ln(expression *source)
void simplify_literal(expression *source)
bool symbol_is_constant(const expression *source)
uint8_t numeric_exponentation(expression *source)
void simplify_subtraction(expression *source)