Moser-Barkatou Rank Reduction 

MoserUnivariate computes an equivalent system to that of the input matrix, which has the lowest possible Poincare rank and algebraic rank for the leading coefficient. The output is the equivalent system, the transformation, and computation time.  

> A := `+`(`/`(`*`(Matrix(4, 4, [0, 0, 0, 0, 4, 0, 0, 0, -2, 0, 0, 0, 0, 2, 0, 0])), `*`(`^`(x, 3))), `/`(`*`(Matrix(4, 4, [1, -8, 3, 0, 0, 2, 0, -4, 0, 0, 0, 2, 0, 0, 0, 1])), `*`(`^`(x, 2)))); 1; B, T...
A := `+`(`/`(`*`(Matrix(4, 4, [0, 0, 0, 0, 4, 0, 0, 0, -2, 0, 0, 0, 0, 2, 0, 0])), `*`(`^`(x, 3))), `/`(`*`(Matrix(4, 4, [1, -8, 3, 0, 0, 2, 0, -4, 0, 0, 0, 2, 0, 0, 0, 1])), `*`(`^`(x, 2)))); 1; B, T...
 

 

Matrix(%id = 18446744078217398262)
Matrix(%id = 18446744078210067262), Matrix(%id = 18446744078210067742), 0.52e-1 (2.1)
 

> A := Matrix(4, 4, [`+`(`/`(`*`(4), `*`(x))), `*`(`^`(x, 2)), `+`(`-`(`*`(2, `*`(`^`(x, 5))))), `+`(`-`(`*`(`^`(x, 5)))), 0, `+`(`-`(`/`(1, `*`(x))), `-`(`/`(1, `*`(`^`(x, 2))))), `/`(1, `*`(`^`(x, 2))...
A := Matrix(4, 4, [`+`(`/`(`*`(4), `*`(x))), `*`(`^`(x, 2)), `+`(`-`(`*`(2, `*`(`^`(x, 5))))), `+`(`-`(`*`(`^`(x, 5)))), 0, `+`(`-`(`/`(1, `*`(x))), `-`(`/`(1, `*`(`^`(x, 2))))), `/`(1, `*`(`^`(x, 2))...
 

 

Matrix(%id = 18446744078216211022)
Matrix(%id = 18446744078215803838), Matrix(%id = 18446744078215804318), .184 (2.2)
 

> A := Matrix(%id = 18446744078213262742); 1; B, T, ttime := MoserUnivariate(A, x, 10); 1
 

 

Matrix(%id = 18446744078213262742)
Matrix(%id = 18446744078200333366), Matrix(%id = 18446744078200333846), .142 (2.3)
 

> A := `/`(`*`(Matrix(3, 3, [`+`(`-`(`*`(4, `*`(`^`(x, 4))))), `+`(`-`(`*`(`/`(15, 2), `*`(`^`(x, 3)))), x), `+`(`-`(`*`(`/`(5, 2), `*`(`^`(x, 4))))), 0, 0, `*`(`^`(x, 5)), `+`(`*`(2, `*`(`^`(x, 3))), `...
A := `/`(`*`(Matrix(3, 3, [`+`(`-`(`*`(4, `*`(`^`(x, 4))))), `+`(`-`(`*`(`/`(15, 2), `*`(`^`(x, 3)))), x), `+`(`-`(`*`(`/`(5, 2), `*`(`^`(x, 4))))), 0, 0, `*`(`^`(x, 5)), `+`(`*`(2, `*`(`^`(x, 3))), `...
 

 

Matrix(%id = 18446744078222416942)
Matrix(%id = 18446744078222219974), Matrix(%id = 18446744078222220214), 0.51e-1 (2.4)
 

>
 

>
 

> A := `/`(`*`(Matrix(3, 3, [0, `*`(`^`(x, 9)), 0, 0, 0, `*`(`^`(x, 9)), `+`(`*`(2, `*`(`^`(x, 3))), `*`(6, `*`(`^`(x, 2))), `*`(2, `*`(x)), 2), `+`(`-`(`*`(6, `*`(`^`(x, 7)))), `*`(2, `*`(`^`(x, 6))), ...
A := `/`(`*`(Matrix(3, 3, [0, `*`(`^`(x, 9)), 0, 0, 0, `*`(`^`(x, 9)), `+`(`*`(2, `*`(`^`(x, 3))), `*`(6, `*`(`^`(x, 2))), `*`(2, `*`(x)), 2), `+`(`-`(`*`(6, `*`(`^`(x, 7)))), `*`(2, `*`(`^`(x, 6))), ...
 

 

Matrix(%id = 18446744078216958070)
Matrix(%id = 18446744078200335646), Matrix(%id = 18446744078200336126), .112 (2.5)
 

>