From functions's declaration:
UpTriBddDenomInv: (M,R) -> M
++ UpTriBddDenomInv(B,d) returns M, where
++ B is a non-singular upper triangular matrix and d is an
++ element of R such that \spad{M = d * inv(B)} has entries in R.
Here, it's false, but may be use another error message
(1) -> a:=matrix ([[1,2], [0, 9]])
inverse(a)
)expose TriangularMatrixOperations
TriangularMatrixOperations is now explicitly exposed in frame initial UpTriBddDenomInv(a,9)
UpTriBddDenomInv(a,7)
>> Error detected within library code: "failed" of mode Union(Integer,"failed") cannot be coerced to mode Integer
a:=matrix ([[1,2], [0, 9]])
a:=transpose(a)
inverse(a)
LowTriBddDenomInv(a,9)
LowTriBddDenomInv(a,7)
>> Error detected within library code: "failed" of mode Union(Integer,"failed") cannot be coerced to mode Integer
++ This package provides functions that compute "fraction-free" ++ inverses of upper and lower triangular matrices over a integral ++ domain. By "fraction-free inverse" we mean the following: ++ given a matrix B with entries in R and an element d of R such that ++ d* inv(B) also has entries in R, we return d * inv(B).
So if you enter B and d such that d * inv(B) does not have entries in R, it is an error. The package is for internal use (that why it is not exposed) where d is always divisible by the determinant of B.
computer error. I prefer some mathematical message for example:
d is not an element of R such that \spad{M = d * inv(B)} has entries in R.