remaining_factors_index Function (ROM Call 0x2F1)

AMS 1.01 or higher estack.h

ESI remaining_factors_index (CESI ptr);

Gets the index of remaining factors of an expression.

If ptr points to the MUL_TAG, which is a case when it points to an expression of form factor1 * factor2 * ... (i.e. if the expression is a sum of simpler terms), remaining_factors_index returns the pointer to the subexpression term2 * ... (i.e. to the remaining factors of the expression). If ptr does not point to the MUL_TAG (i.e. if the expression is not a product of simpler factors), remaining_factors_index returns a pointer to a simple expression which consists only of number 1.

Note: Expressions in internal canonic form have the most main factor shallowest, with less main factors below that (see compare_expressions for more info about "main" ordering). Also, the lead factor of an internally-simplified product is never a product. For example, remaining factors of '(3*x^2)*y' converted into canonic form are '3*y'. By default, similar powers of the main variable are collected, so remaining factor of 'x^2*y+x^2' after conversion into canonic form is 'y+1'. Internally-simplified numeric denominator factors are combined with numeric numerator factors into a fractional numeric factor. Non-numeric denominator factors are internally simplified to be merged with numerator factors as negative powers. See push_internal_simplify for more info about how to convert an expression into the internal canonic form.


Uses: next_expression_index, Float1Index, Integer1Index
Used by: is_monomial, is_monomial_in_kernel, 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_cosh, push_csolve, push_czeros, push_def_int, push_denominator, push_desolve, push_exp, push_expand, push_extended_prod, push_factor, push_floor, push_im, push_lim, push_ln, push_max, push_min, push_nsolve, push_numerator, push_phase, push_re, push_sign, push_sin2, push_sinh, push_solve, push_summation, push_tanh, push_zeros, did_push_to_polar, 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_product, push_sum, push_to_cylin, push_to_sphere, add_to_top, are_units_consistent, did_push_divide_units, get_ub, has_unit_base, index_if_pushed_binomial_info, index_if_pushed_qquad_info, index_reductum_with_tag_base, index_rmng_factor, index_rmng_fctrs_start_base, index_rmng_fctrs_start_base_tag, index_rmng_fctrs_start_fctr_tag, is_negative, is_nonnegative, is_nonpositive, is_positive, is_term_improper, push_auto_units_conversion, push_but_factor, push_but_term, push_constant_factors, push_constant_terms, push_dependent_factors, push_dependent_terms, push_gcd_then_cofactors, push_independent_factors, push_independent_terms, push_make_proper, push_nonconstant_factors, push_nonconstant_terms, push_nonnumeric_factors, push_poly_qr, push_reciprocal, push_standardize, raise_to_top, replace_top_with_post_simplified, replace_top2_with_pow, replace_top2_with_sum, ROM Call 0x48D