Documentation contents

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.
Source
atlas-scripts/cyclotomic_Gaussian_elim.at (139 lines)
Definitions
17
Loads
Loaded by
good_W_representatives.at tits_centralizer.at cyclotomic_Lie_algebra.at

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

L16cyclotomic_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

L41greedy ([CyclotomicFieldElement] choices) = int
the simplest strategy is to select the first nonzero coefficient as pivot

also defined in Gaussian_elim.at

step

L43step = cyclotomic_pivot_step(greedy@[CyclotomicFieldElement])

also defined in Gaussian_elim.at

get_data

L45get_data ([[CyclotomicFieldElement]] M) = [Cyclotomic_Pivot_info]

also defined in all_finite_order.at, Gaussian_elim.at

split_data

L53split_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

L73det (CyclotomicMat A) = CyclotomicFieldElement

also defined in basic.at, ratmat.at, Gaussian_elim.at

apply 2 overloads

L81apply (int i, int k, [CyclotomicFieldElement] coefs) = ([CyclotomicFieldElement]->[CyclotomicFieldElement])
Perform row operations from encoded pivot datum, and new pivot row index |i|
L93apply ([int,[CyclotomicFieldElement]] pivots) = ([CyclotomicFieldElement]->[CyclotomicFieldElement])
Compose those functions for all pivot data (obtained from |split_data|)

also defined in Gaussian_elim.at

full_solve

L98full_solve (CyclotomicMat A, CyclotomicVec b) = CF_lin_solution
Put the above together for solving a rational linear system |A*x=b|

also defined in Gaussian_elim.at

a_solution 3 overloads

L106a_solution ((CyclotomicMat,CyclotomicVec)system) = CyclotomicVec
When we need one solution, pick particular solution or throw error if none
L112a_solution ((CyclotomicMat A,ratvec v)) = CyclotomicVec
L116a_solution(CF_lin_solution sol) = CyclotomicVec
extract single solution from CF_lin_solution

also defined in Gaussian_elim.at, cyclotomic_Lie_algebra.at

all_solutions

L121all_solutions ((CyclotomicMat,CyclotomicVec)system)

kernel

L127kernel(CyclotomicMat M) = [[CyclotomicFieldElement]]

also defined in ratmat.at

make_inverse

L130make_inverse ([(int,[CyclotomicFieldElement])] data) = CyclotomicMat
For inverse of a matrix, apply row operations to columns of identity matrix

also defined in Gaussian_elim.at

inverse

L134inverse (CyclotomicMat M) = CyclotomicMat

also 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).