are_expressions_identical Function (ROM Call 0x2BF)

AMS 1.01 or higher estack.h

short are_expressions_identical (CESI ptr1, CESI ptr2);

Checks whether two expressions are identical.

are_expressions_identical returns TRUE if expressions pointed to by ptr1 and ptr2 are syntactically identical, else returns FALSE. At the moment, I am not exactly sure what is the criteria for equivalence. I only know that a+b and b+a are not identical for example. And, floats are never identical to rational numbers. So far, I only know that this function surely returns TRUE when two expressions are absolutely identical. But, if this is the only case of equivalence, this routine should be very simple. But it is not. It is very complicated and recursive, so I am really not sure which pairs of expressions may be treated as "identical". Any additional info is welcomed.


Uses: next_expression_index, memcmp, primary_tag_list
Used by: is_independent_of, is_monomial_in_kernel, is_narrowly_independent_of, push_internal_simplify, push_parse_text, cmd_goto, did_push_anti_deriv, did_push_series, push_1st_derivative, push_abs, push_acosh, push_asin, push_asinh, push_atan, push_atanh, push_comdenom, push_csolve, push_czeros, push_def_int, push_desolve, push_expand, push_extended_prod, push_factor, push_floor, push_lim, push_max, push_min, push_nint, push_nsolve, push_phase, push_sign, push_sin2, push_solve, push_summation, push_zeros, did_push_to_polar, push_and, push_equals, push_exponentiate, push_greater_than, push_greater_than_or_equals, push_less_than, push_less_than_or_equals, push_negate, push_not_equals, push_or, push_product, push_substitute_no_simplify, push_sum, push_to_cylin, push_to_sphere, ST_eraseHelp, ST_modKey, add_to_top, and_onto_top, are_units_consistent, did_push_lincf, EQU_getNameInfo, get_lb, get_ub, has_different_variable, index_if_pushed_binomial_info, index_rmng_factor, index_rmng_fctrs_start_base, is_equivalent_to, is_negative, is_never0, is_nonnegative, is_nonpositive, is_polynomial_in_var_or_kern, is_positive, is_term_improper, linear_degree, or_onto_top, push_but_term, push_constant_terms, push_dependent_terms, push_gcd_then_cofactors, push_independent_terms, push_make_proper, push_nonconstant_terms, push_parse_prgm_or_func_text, push_poly_deg_in_var_or_kernel, push_poly_qr, push_reciprocal, push_standardize, replace_top_with_post_simplified, replace_top2_with_sum, ROM Call 0x410, ROM Call 0x48D, ROM Call 0x4E6