Documentation contents

atlas Library · Script File

polynomial.at

Several representations of univariate polynomials are defined below, all have
in common a dense representation of coefficients starting at degree 0
Source
atlas-scripts/polynomial.at (506 lines)
Definitions
129
Loads
Loaded by
number_theory.at extParamPol.at stable.at cyclotomic.at KL_polynomial_matrices.at laurentPolynomial.at dual.at bigMatrices.at ext_deform.at

Definitions in source order

i_poly type

L8
set_type i_poly = vec { compact storage, machine integers as coefficients }

i_poly_mat type

L9
set_type i_poly_mat = [[i_poly]] { sublists are matrix rows, not columns! }

int_poly, rat_poly type

L11
set_type { more expensive formats, unbounded coefficients; dummy final part }
[ int_poly = (string indeterminate, [int] coefficients, void .)
, rat_poly = (string indeterminate, [rat] coefficients, void .)
]

Fields: indeterminate, coefficients, indeterminate, coefficients

addition of vectors (overrides definition in basic.at) to allow vectors of
possibly different lengths, implicitly extending on the right by zeros as
needed. This gives the right thing for coefficient vectors of polynomials.
L16

fix_add

L22fix_add = +@(vec,vec)

fix_sub

L23fix_sub = -@(vec,vec)
save fixed-length vector addition and subtraction

dot_product

L24dot_product = *@(vec,vec)
and scalar product

also in this file at line 294; also defined in cyclotomicMat.at

prepare for different binding of operators |i_poly| inside this file
L26

+

L31+ = flex_add@(i_poly,i_poly)

also in this file at line 78, line 129, line 155, line 157, line 164, line 166, line 317, line 355, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L32- = flex_sub@(i_poly,i_poly)

also in this file at line 77, line 90, line 128, line 141, line 156, line 158, line 165, line 167, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

*

L33* = convolve@(i_poly,i_poly)

also in this file at line 102, line 159, line 160, line 168, line 169, line 174, line 186, line 300, line 330, line 333, line 488; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

strip

L36strip (i_poly v) = i_poly
reduce polynomial by dropping trailing zeros; shouldn't really be needed
operator + does actual stripping

degree 3 overloads

L37degree (i_poly P) = int
degree is -1 for the zero polynomial
L38degree (int_poly(,a,)) = int
|int_poly| presumed always stripped
L39degree (rat_poly(,a,)) = int
|int_poly| presumed always stripped

also defined in cyclotomic.at, character_tables.at, laurentPolynomial.at

constant_poly 3 overloads

L41constant_poly (int n) = i_poly
L42constant_poly (int n,string X) = int_poly
L43constant_poly (rat c,string X) = rat_poly

to_int_poly

L44to_int_poly ([int] coefs,string X) = int_poly

to_rat_poly

L45to_rat_poly ([rat] coefs,string X) = rat_poly

=

L48= (int_poly(,a,)) = bool
equality tests ignore the name of the indeterminate

also in this file at line 50, line 53, line 55, line 368; also defined in basic.at, combinatorics.at, modules.at, parabolics.at, synthetic.at, hash.at, tits.at, K_highest_weights.at, nilpotent_orbits.at, cyclotomic.at, W_reps_type_BC.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, extended.at, disconnected.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at

!=

L49!= (int_poly(,a,)) = bool

also in this file at line 51, line 54, line 56; also defined in basic.at, combinatorics.at, synthetic.at, hash.at, tits.at, cyclotomic.at, cyclotomicMat.at

=

L50= (int_poly(,a,),int_poly(,b,)) = bool

also in this file at line 48, line 53, line 55, line 368; also defined in basic.at, combinatorics.at, modules.at, parabolics.at, synthetic.at, hash.at, tits.at, K_highest_weights.at, nilpotent_orbits.at, cyclotomic.at, W_reps_type_BC.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, extended.at, disconnected.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at

!=

L51!= (int_poly(,a,),int_poly(,b,)) = bool

also in this file at line 49, line 54, line 56; also defined in basic.at, combinatorics.at, synthetic.at, hash.at, tits.at, cyclotomic.at, cyclotomicMat.at

=

L53= (rat_poly(,a,)) = bool

also in this file at line 48, line 50, line 55, line 368; also defined in basic.at, combinatorics.at, modules.at, parabolics.at, synthetic.at, hash.at, tits.at, K_highest_weights.at, nilpotent_orbits.at, cyclotomic.at, W_reps_type_BC.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, extended.at, disconnected.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at

!=

L54!= (rat_poly(,a,)) = bool

also in this file at line 49, line 51, line 56; also defined in basic.at, combinatorics.at, synthetic.at, hash.at, tits.at, cyclotomic.at, cyclotomicMat.at

=

L55= (rat_poly(,a,),rat_poly(,b,)) = bool

also in this file at line 48, line 50, line 53, line 368; also defined in basic.at, combinatorics.at, modules.at, parabolics.at, synthetic.at, hash.at, tits.at, K_highest_weights.at, nilpotent_orbits.at, cyclotomic.at, W_reps_type_BC.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, extended.at, disconnected.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at

!=

L56!= (rat_poly(,a,),rat_poly(,b,)) = bool

also in this file at line 49, line 51, line 54; also defined in basic.at, combinatorics.at, synthetic.at, hash.at, tits.at, cyclotomic.at, cyclotomicMat.at

poly_0

L59!poly_0 = constant_poly(0)
for convenience declare some constants, the ! makes changes to these illegal

poly_1

L60!poly_1 = constant_poly(1)

poly_2

L61!poly_2 = constant_poly(2)

poly_q

L62!poly_q = i_poly

poly_q2

L63!poly_q2 = i_poly

monic_divide

L65monic_divide (i_poly P, i_poly D) = (i_poly,i_poly)
quotient, remainder

also in this file at line 112, line 194

-

L77- (int_poly(X,a,)) = int_poly
for |int_poly| values, indeterminate names inherit from first operand

also in this file at line 32, line 90, line 128, line 141, line 156, line 158, line 165, line 167, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

+

L78+ (int_poly(X,a,), int_poly(,b,)) = int_poly

also in this file at line 31, line 129, line 155, line 157, line 164, line 166, line 317, line 355, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L90- (int_poly(X,a,), int_poly(,b,)) = int_poly

also in this file at line 32, line 77, line 128, line 141, line 156, line 158, line 165, line 167, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

*

L102* (int_poly(X,a,), int_poly(,b,)) = int_poly

also in this file at line 33, line 159, line 160, line 168, line 169, line 174, line 186, line 300, line 330, line 333, line 488; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

monic_divide

L112monic_divide (int_poly(X,P,), int_poly(,D,)) = (int_poly,int_poly)
quotient, remainder unstripped: size |degree(D)|

also in this file at line 65, line 194

-

L128- (rat_poly(X,a,)) = rat_poly
this is basically copy-pasted from the above, then substituted rat for int

also in this file at line 32, line 77, line 90, line 141, line 156, line 158, line 165, line 167, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

+

L129+ (rat_poly(X,a,), rat_poly(,b,)) = rat_poly

also in this file at line 31, line 78, line 155, line 157, line 164, line 166, line 317, line 355, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L141- (rat_poly(X,a,), rat_poly(,b,)) = rat_poly

also in this file at line 32, line 77, line 90, line 128, line 156, line 158, line 165, line 167, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

+

L155+ (int c,int_poly(X,,):p) = int_poly
some mixed scalar/polynomial operations, for convenience

also in this file at line 31, line 78, line 129, line 157, line 164, line 166, line 317, line 355, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L156- (int c,int_poly(X,,):p) = int_poly

also in this file at line 32, line 77, line 90, line 128, line 141, line 158, line 165, line 167, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

+

L157+ (int_poly(X,,):p,int c) = int_poly

also in this file at line 31, line 78, line 129, line 155, line 164, line 166, line 317, line 355, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L158- (int_poly(X,,):p,int c) = int_poly

also in this file at line 32, line 77, line 90, line 128, line 141, line 156, line 165, line 167, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

* 2 overloads

L159* (int c,int_poly(X,p,)) = int_poly
L160* (int_poly(X,p,),int c) = int_poly

also in this file at line 33, line 102, line 168, line 169, line 174, line 186, line 300, line 330, line 333, line 488; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

\

L161\ (int_poly(X,p,),int c) = int_poly

also in this file at line 170, line 241; also defined in basic.at, lazy_lists.at

%

L162% (int_poly(X,p,),int c) = int_poly

also in this file at line 172, line 242; also defined in basic.at, extParamPol.at, misc.at

+

L164+ (rat c,rat_poly(X,,):p) = rat_poly

also in this file at line 31, line 78, line 129, line 155, line 157, line 166, line 317, line 355, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L165- (rat c,rat_poly(X,,):p) = rat_poly

also in this file at line 32, line 77, line 90, line 128, line 141, line 156, line 158, line 167, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

+

L166+ (rat_poly(X,,):p,rat c) = rat_poly

also in this file at line 31, line 78, line 129, line 155, line 157, line 164, line 317, line 355, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L167- (rat_poly(X,,):p,rat c) = rat_poly

also in this file at line 32, line 77, line 90, line 128, line 141, line 156, line 158, line 165, line 314, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

* 2 overloads

L168* (rat c,rat_poly(X,p,)) = rat_poly
L169* (rat_poly(X,p,),rat c) = rat_poly

also in this file at line 33, line 102, line 159, line 160, line 174, line 186, line 300, line 330, line 333, line 488; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

\

L170\ (rat_poly(X,p,),int c) = int_poly

also in this file at line 161, line 241; also defined in basic.at, lazy_lists.at

/

L171/ (rat_poly(X,p,),rat c) = rat_poly

also in this file at line 175; also defined in basic.at, ratmat.at, cyclotomic.at, lazy_lists.at

%

L172% (rat_poly(X,p,),rat c) = rat_poly

also in this file at line 162, line 242; also defined in basic.at, extParamPol.at, misc.at

*

L174* (int_poly(X,p,),rat c) = rat_poly

also in this file at line 33, line 102, line 159, line 160, line 168, line 169, line 186, line 300, line 330, line 333, line 488; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

/

L175/ (int_poly(X,p,),rat c) = rat_poly

also in this file at line 171; also defined in basic.at, ratmat.at, cyclotomic.at, lazy_lists.at

convolve

L178convolve ([rat]a,[rat]b) = [rat]
the heart of polynomial multiplication

*

L186* (rat_poly(X,a,), rat_poly(,b,)) = rat_poly

also in this file at line 33, line 102, line 159, line 160, line 168, line 169, line 174, line 300, line 330, line 333, line 488; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

^

L188^ (rat_poly (X,,):P,int n) = rat_poly
power of a rational polynomial

also in this file at line 359; also defined in basic.at, ratmat.at, tits.at, cyclotomic.at, sparse.at, lazy_lists.at

monic_divide

L194monic_divide (rat_poly(X,P,), rat_poly(,D,)) = (rat_poly,rat_poly)
quotient, remainder unstripped: size |degree(D)|

also in this file at line 65, line 112

unsafe_divide

L214unsafe_divide (i_poly p,i_poly d) = (i_poly,i_poly)
division of integer polynomial |p| by integer polynomial |d|, with remainder,
|d| is not required to be monic, but might division fail in |exact_divide|;
not particularly written for speed, rather for simplicity and transparency
division of integer polynomials p=dq+r

divide

L224divide (rat_poly(X,P,), rat_poly(,D,)) = (rat_poly,[rat])
quotient, remainder unstripped: size |degree(D)|

also defined in lazy_lists.at

\%

L236\% (rat_poly A,rat_poly B) = (rat_poly,rat_poly)

also defined in basic.at

\

L241\ (rat_poly A, rat_poly B) = rat_poly

also in this file at line 161, line 170; also defined in basic.at, lazy_lists.at

%

L242% (rat_poly A, rat_poly B) = rat_poly

also in this file at line 162, line 172; also defined in basic.at, extParamPol.at, misc.at

Bezout

L247Bezout = (rat_poly,rat_poly->rat_poly,rat_poly,rat_poly)
extended euclidean algorithm
find $D=\gcd(A,B)$ and $S,T$ such that $D=SA+TB$ (returns |(D,S,T)| )

also defined in number_theory.at

evaluate_at_1

L264evaluate_at_1 (i_poly v) = int
evaluate polynomial at integer
often we need this easy case
use vector dot-product here

also in this file at line 275, line 281; also defined in stable.at, hodgeParamPol.at

eval 2 overloads

L267eval (i_poly v,int k) = int
L271eval (i_poly v,Split w) = Split
evaluate polynomial at Split value

also in this file at line 276, line 278, line 282; also defined in KL_polynomial_matrices.at

at_s

L273at_s (i_poly v) = Split

evaluate_at_1

L275evaluate_at_1 (int_poly (,c,)) = int

also in this file at line 264, line 281; also defined in stable.at, hodgeParamPol.at

eval 2 overloads

L276eval (int_poly(,v,),int k) = int
L278eval (int_poly(,v,),Split w) = Split

also in this file at line 267, line 271, line 282; also defined in KL_polynomial_matrices.at

evaluate_at_1

L281evaluate_at_1 (rat_poly (,c,)) = rat

also in this file at line 264, line 275; also defined in stable.at, hodgeParamPol.at

eval

L282eval (rat_poly(,v,),rat k) = rat

also in this file at line 267, line 271, line 276, line 278; also defined in KL_polynomial_matrices.at

cannot evaluate rational polynomial at split integer, so noting here
L284
Polynomial matrices
L287
this is currently done based on |i_poly| entries only
L289

shape

L291shape (i_poly_mat M) = (int,int)

also defined in cyclotomicMat.at

dot_product

L294dot_product([i_poly] v,[i_poly] w) = i_poly
dot product of two vectors of polynomials (the name avoids *@(mat,mat))

also in this file at line 24; also defined in cyclotomicMat.at

*

L300*(i_poly_mat A,i_poly_mat B) = i_poly_mat
multiply two matrices of polynomials; here row-based representation really
makes a difference. Using operator * here does not conflict with other uses

also in this file at line 33, line 102, line 159, line 160, line 168, line 169, line 174, line 186, line 330, line 333, line 488; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

poly_list_add

L305poly_list_add([i_poly] v,[i_poly] w) = [i_poly]
add lists of polynomials, assumed of same length (name avoids +@(mat,mat))

poly_list_sub

L309poly_list_sub([i_poly] v,[i_poly] w) = [i_poly]

-

L314-(i_poly_mat M) = i_poly_mat

also in this file at line 32, line 77, line 90, line 128, line 141, line 156, line 158, line 165, line 167, line 321, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

+

L317+(i_poly_mat A,i_poly_mat B) = i_poly_mat
add or subtract matrices of the same size

also in this file at line 31, line 78, line 129, line 155, line 157, line 164, line 166, line 355, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L321-(i_poly_mat A,i_poly_mat B) = i_poly_mat

also in this file at line 32, line 77, line 90, line 128, line 141, line 156, line 158, line 165, line 167, line 314, line 357, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

scalar_multiply

L326scalar_multiply([i_poly] v,i_poly f) = [i_poly]

* 2 overloads

L330*(i_poly f,i_poly_mat M) = i_poly_mat
polynomial scalar times polynomial matrix
L333*(int c, i_poly_mat M) = i_poly_mat
integer scalar case can be done a bit more efficiently

also in this file at line 33, line 102, line 159, line 160, line 168, line 169, line 174, line 186, line 300, line 488; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

update_row

L337update_row ([i_poly] R, int j,i_poly v) = [i_poly]
update one entry in a list of polynomials, for instance in a row of a matrix

update_matrix_row

L339update_matrix_row (i_poly_mat M, int i, [i_poly] row) = i_poly_mat
update one row of a matrix (replacing it by a given new row)

zero_poly_row

L342zero_poly_row (int n) = [i_poly]

zero_poly_matrix 2 overloads

L343zero_poly_matrix (int rows, int columns) = i_poly_mat
L345zero_poly_matrix(int n) = i_poly_mat

scalar_poly_matrix

L346scalar_poly_matrix (int n, int c) = i_poly_mat

identity_poly_matrix

L351identity_poly_matrix (int n) = i_poly_mat

mat_as_poly_mat

L352mat_as_poly_mat (mat M) = i_poly_mat

also defined in stable.at, hodge_deform.at

+

L355+ (i_poly_mat M, i_poly p) = i_poly_mat
add polynomial scalar matrix

also in this file at line 31, line 78, line 129, line 155, line 157, line 164, line 166, line 317, line 486; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L357- (i_poly_mat M, i_poly p) = i_poly_mat

also in this file at line 32, line 77, line 90, line 128, line 141, line 156, line 158, line 165, line 167, line 314, line 321, line 487; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

^

L359^ = (i_poly,int->i_poly)
power of a polynomial

also in this file at line 188; also defined in basic.at, ratmat.at, tits.at, cyclotomic.at, sparse.at, lazy_lists.at

=

L368= (i_poly_mat M,i_poly_mat N) = bool
equality of polynomial matrices

also in this file at line 48, line 50, line 53, line 55; also defined in basic.at, combinatorics.at, modules.at, parabolics.at, synthetic.at, hash.at, tits.at, K_highest_weights.at, nilpotent_orbits.at, cyclotomic.at, W_reps_type_BC.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, extended.at, disconnected.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at

is_zero

L372is_zero (i_poly_mat M) = bool
polynomial matrix is 0 if all its entries are zero-length polynomials

also defined in hodge_functions.at

upper_unitriangular_inverse

L375upper_unitriangular_inverse (i_poly_mat M) = i_poly_mat

also defined in matrix.at

lower_unitriangular_inverse

L390lower_unitriangular_inverse (i_poly_mat M) = i_poly_mat

poly_permute_basis

L394poly_permute_basis(Permutation sigma, i_poly_mat M) = i_poly_mat
$PMP^{-1}$ where $P$ is a permutation matrix, and $M$ a polynomial matrix
some printing functions
L397
make a printable string out of a polynomial and name of indeterminate,
for use in other print functions
L399

poly_format

L402poly_format (i_poly v, string q) = string
we cannot reuse |poly_format| below, as it takes a |vec| of coefficients
L417

format 2 overloads

L420format (int_poly(X,cs,)) = string
for |int_poly| and |rat_poly| that value names the indeterminate; use it
L434format (rat_poly(X,cs,)) = string

also defined in cyclotomic.at, extended_misc.at, cyclotomicMat.at, bracket.at

printPoly 2 overloads

L450printPoly (i_poly v) = void
nice printing of a polynomial
L451printPoly (i_poly v,string q) = void

show

L453show(i_poly v) = void
synonym

also defined in modules.at, K_Nilpotent.at, good_W_representatives.at, arthur_parameters.at, sub_cells.at, associated_variety_annihilator.at, geck_generic.at, L_packet.at, ratmat.at, Levi_subgroups.at, nilpotent_orbits.at, subgroups.at, poset.at, cyclotomic.at, character_tables.at, springer_tables.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, weak_packets.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, exceptional.at, nilpotent_posets.at, lazy_lists.at

M=poly_mat is a polynomial matrix; e.g.
expr> set M= poly_mat: [[ [0,1], [0,0,1]], [[0], [1]]]
expr> printPolyMatrix (M)
 +q +q^2
 0 +1
L455

printPolyMatrix 4 overloads

L462printPolyMatrix (i_poly_mat M,int space_size, string X_name) = void
L472printPolyMatrix (i_poly_mat M,int space_size) = void
L474printPolyMatrix (i_poly_mat M,string char) = void
L475printPolyMatrix (i_poly_mat M) = void

poly_plus

L478poly_plus = +@(i_poly,i_poly)
this provides maybe more meaningful names for |flex_add| and friends
this binding will remain exported

poly_minus

L479poly_minus = -@(i_poly,i_poly)
this binding will remain exported

poly_product

L480poly_product = *@(i_poly,i_poly)
this binding will remain exported
restore normal vector arithmetic
L482

+

L486+ = fix_add@(vec,vec)

also in this file at line 31, line 78, line 129, line 155, line 157, line 164, line 166, line 317, line 355; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, lazy_lists.at

-

L487- = fix_sub@(vec,vec)

also in this file at line 32, line 77, line 90, line 128, line 141, line 156, line 158, line 165, line 167, line 314, line 321, line 357; also defined in basic.at, extParamPol.at, modules.at, ratmat.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomicMat.at, hodge_functions.at, lazy_lists.at

*

L488* = dot_product@(vec,vec)

also in this file at line 33, line 102, line 159, line 160, line 168, line 169, line 174, line 186, line 300, line 330, line 333; also defined in basic.at, extParamPol.at, complex.at, modules.at, hodge_tensor.at, tits_centralizer.at, stable.at, synthetic.at, Weylgroup.at, group_operations.at, ratmat.at, tits.at, twisted_root_datum.at, cyclotomic.at, hodgeParamLaurentPol.at, hodgeParamPol.at, laurentPolynomial.at, cyclotomic_Lie_algebra.at, cyclotomicMat.at, bracket.at, hodge_functions.at, sparse.at, lazy_lists.at

sgn_poly

L490sgn_poly (int k) = i_poly

divide_by

L493divide_by (int k,i_poly v) = i_poly

also defined in basic.at, lazy_lists.at

is_non_negative

L496is_non_negative = (i_poly->bool)
whether an |i_poly| has only non-negative coefficients
same condition as "dominance"

also defined in bigMatrices.at

top_left_square_block

L498top_left_square_block (i_poly_mat M,int size) = i_poly_mat

also defined in matrix.at

vee

L501vee = i_poly
polynomial v

v_power

L502v_power(int k) = i_poly

vshow

L503vshow(i_poly v) = void

at_v_squared

L506at_v_squared(i_poly f) = i_poly
write f(q) as a polynomial in v^2=q

Generated from atlas-scripts at commit 648506c (2026-10-13).