| lead_factor_index | Function (ROM Call 0x2E0)

AMS 1.01 or higher | estack.h

ESI lead_factor_index (CESI ptr);

Gets the index of the lead factor of an expression.

If ptr points to the MUL_TAG, which is the case when it points to an expression of form factor1 * factor2 * ... (i.e. if the expression is a product of simpler factors), lead_factor_index returns the pointer to factor1 (i.e. to the lead factor). If ptr does not point to the MUL_TAG (i.e. if the expression is not a product of simpler factors), lead_factor_index returns ptr (i.e. the pointer to the expression itself).
Note: Expressions in internal canonic form have the most main factor shallowest, with less main factors deeper (see compare_expressions for more info about "main" ordering). Also, the lead factor of an internally-simplified product is never a product. For example, lead factor of `'(3*x^2)*y'` converted into canonic form is `'x^2'`. 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. For example, the lead factor of `'2/x'` converted into canonic form is `'x^-1'`. A factor having a sum as its base orders shallower than a factor having the sum’s main variable as its base. For example, the lead factor of `'(x+1)^-2*x^3'` converted into canonic form is `'(x+1)^-2'`. See push_internal_simplify for more info about how to convert an expression into the internal canonic form.

Used by: is_monomial_in_kernel, lead_base_index, lead_exponent_index, did_push_anti_deriv, did_push_series, push_1st_derivative, push_comdenom, push_csolve, push_czeros, push_def_int, push_denominator, push_desolve, 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_sin2, push_solve, push_summation, 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, get_ub, index_if_pushed_qquad_info, index_rmng_factor, 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