Go to the documentation of this file.
43 if (source->
children[i] == NULL)
continue;
60 if (source->
children[i] == NULL)
continue;
63 if (source->
children[i] == NULL)
continue;
66 append_child((*result)->children[(*result)->child_count - 1], temp_result);
211 if (variable == NULL) {
213 if (variable == NULL) {
269 if (variable == NULL) {
280 switch (
solve(first_derivatives_roots, variable)) {
289 for (i = 0; i < first_derivatives_roots->
child_count; i++) {
419 solve(equation, NULL);
void merge_nested_lists(expression *source, bool recursive)
uint8_t stationary_points(expression *source, expression *variable)
void embed_in_list_if_necessary(expression *source)
bool expression_is_smaller_than(const expression *a, expression *b, bool persistent)
uint8_t derivative(expression **result, expression *source, expression *variable, bool persistent)
void replace_expression(expression *a, expression *b)
expression_identifier identifier
void replace_occurences(expression *source, const expression *child, const expression *replacement)
uint8_t function_intersection_angle(expression **result, expression *g, expression *h)
#define ERROR_CHECK(F)
Check if the return status of a function is RETS_ERROR. If so, return RETS_ERROR.
expression * new_symbol(expression_identifier identifier, const char *value)
Allocates and initializes a new symbol/variable expression.
uint8_t solve(expression *source, expression *variable)
bool expressions_are_identical(const expression *a, expression *b, bool persistent)
uint8_t trigonometric_derivative(expression **result, const expression *source, const expression *variable)
uint8_t ln_derivative(expression **result, const expression *source, const expression *variable)
void free_expression(expression *source, bool persistent)
uint8_t set_error(error_domain domain, error_identifier identifier, const char *body)
Sets current_error to the arguments provided.
uint8_t function_tangent(expression **result, expression *source, expression *variable, expression *x_value, bool persistent)
uint8_t count_occurrences(const expression *haystack, expression *needle, bool persistent)
uint8_t addition_derivative(expression **result, const expression *source, const expression *variable)
uint8_t multiplication_derivative(expression **result, const expression *source, const expression *variable)
expression * copy_expression(const expression *source)
Returns a deep copy of an expression.
uint8_t function_normal(expression **result, expression *source, expression *variable, expression *x_value, bool persistent)
uint8_t simplify(expression *source, bool recursive)
void any_expression_to_expression_recursive(expression *source)
const char * get_expression_string(expression_identifier identifier)
Returns the keyword string corresponding to the identifier.
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.
bool expression_is_greater_than(const expression *a, expression *b, bool persistent)
expression * guess_symbol(const expression *source, const char *custom_priorities, uint8_t rank)
expression * new_literal(int8_t sign, uintmax_t numerator, uintmax_t denominator)
Allocates and initializes a new literal expression.
uint8_t log_derivative(expression **result, const expression *source, const expression *variable)
bool expressions_are_equivalent(const expression *a, expression *b, bool persistent)
uint8_t exponentation_derivative(expression **result, const expression *source, const expression *variable)
struct expression ** children