atlas Library · Script File
cyclotomic_Gaussian_elim.at
Gaussian elimination over cyclotomic fields This file was largely copied from Gaussian_elim.at, which does the same thing over the rationals. See that file for details on the algorithms implemented here.
Definitions in source order
Cyclotomic_Pivot_info, CF_lin_solution type
L10
set_type [ Cyclotomic_Pivot_info = ( (int,[CyclotomicFieldElement]) pivot | [CyclotomicFieldElement] no_pivot ) , CF_lin_solution = ( void no_Cyclotomic_solution | (CyclotomicVec,CyclotomicMat) affine_space ) ]
Fields: pivot, no_pivot, no_Cyclotomic_solution, affine_space
cyclotomic_pivot_step
L16
cyclotomic_pivot_step (([CyclotomicFieldElement]->int) choose_pivot) = ([[CyclotomicFieldElement]] M, int i) (Cyclotomic_Pivot_info,[[CyclotomicFieldElement]])the |pivot_step| takes as argument the choice function for the pivot
and produces a function that takes a matrix and a count of previous pivots
greedy
L41
greedy ([CyclotomicFieldElement] choices) = intthe simplest strategy is to select the first nonzero coefficient as pivot
also defined in Gaussian_elim.at
step
L43
step = cyclotomic_pivot_step(greedy@[CyclotomicFieldElement])also defined in Gaussian_elim.at
get_data
L45
get_data ([[CyclotomicFieldElement]] M) = [Cyclotomic_Pivot_info]also defined in all_finite_order.at, Gaussian_elim.at
split_data
L53
split_data ([Cyclotomic_Pivot_info] data,CyclotomicField F) = ([int,[CyclotomicFieldElement]] , [[CyclotomicFieldElement]] , ([CyclotomicFieldElement]->[CyclotomicFieldElement]) )need to specify F:
also defined in Gaussian_elim.at
From the pivot data we can aso directly compute the determinant, basically the product of the inverses of the main diagonal entries of the row operations.L69
det
L73
det (CyclotomicMat A) = CyclotomicFieldElementalso defined in basic.at, ratmat.at, Gaussian_elim.at
apply 2 overloads
L81
apply (int i, int k, [CyclotomicFieldElement] coefs) = ([CyclotomicFieldElement]->[CyclotomicFieldElement])Perform row operations from encoded pivot datum, and new pivot row index |i|
L93
apply ([int,[CyclotomicFieldElement]] pivots) = ([CyclotomicFieldElement]->[CyclotomicFieldElement])Compose those functions for all pivot data (obtained from |split_data|)
also defined in Gaussian_elim.at
full_solve
L98
full_solve (CyclotomicMat A, CyclotomicVec b) = CF_lin_solutionPut the above together for solving a rational linear system |A*x=b|
also defined in Gaussian_elim.at
a_solution 3 overloads
L106
a_solution ((CyclotomicMat,CyclotomicVec)system) = CyclotomicVecWhen we need one solution, pick particular solution or throw error if none
L112
a_solution ((CyclotomicMat A,ratvec v)) = CyclotomicVecL116
a_solution(CF_lin_solution sol) = CyclotomicVecextract single solution from CF_lin_solution
also defined in Gaussian_elim.at, cyclotomic_Lie_algebra.at
all_solutions
L121
all_solutions ((CyclotomicMat,CyclotomicVec)system)kernel
L127
kernel(CyclotomicMat M) = [[CyclotomicFieldElement]]also defined in ratmat.at
make_inverse
L130
make_inverse ([(int,[CyclotomicFieldElement])] data) = CyclotomicMatFor inverse of a matrix, apply row operations to columns of identity matrix
also defined in Gaussian_elim.at
inverse
L134
inverse (CyclotomicMat M) = CyclotomicMatalso defined in basic.at, combinatorics.at, ratmat.at, parameters.at, tits.at, affine.at, cyclotomic.at, Gaussian_elim.at, lazy_lists.at
Generated from atlas-scripts at commit 648506c (2026-10-13).