[1X5 Internal Function Reference[0X These are functions that are used internally in the [5XLinBox[0m package. They should not be needed by users of the package, but may be useful to developers and are provided for completeness [1X5.1 Kernel Module Functions[0X These functions are implemented directly in C or C++ in the kernel module. [1X5.1-1 LinBox.DETERMINANT[0m [2X> LinBox.DETERMINANT( [0X[3XM, field-id[0X[2X ) ________________________________[0Xfunction Kernel module function to calculate the determinant of a matrix. Called by the wrapper [2XLinBox.DeterminantMat[0m ([14X3.1-1[0m). The [3Xfield-id[0m parameter should be 0 for a matrix of integers, or the size of the field if the matrix is over a finite field. [1X5.1-2 LinBox.RANK[0m [2X> LinBox.RANK( [0X[3XM, field-id[0X[2X ) _______________________________________[0Xfunction Kernel module function to calculate the rank of a matrix. Called by the wrapper [2XLinBox.RankMat[0m ([14X3.1-2[0m). The [3Xfield-id[0m parameter should be 0 for a matrix of integers, or the size of the field if the matrix is over a finite field. [1X5.1-3 LinBox.TRACE[0m [2X> LinBox.TRACE( [0X[3XM, field-id[0X[2X ) ______________________________________[0Xfunction Kernel module function to calculate the determinant of a matrix. Called by the wrapper [2XLinBox.TraceMat[0m ([14X3.1-3[0m). The [3Xfield-id[0m parameter should be 0 for a matrix of integers, or the size of the field if the matrix is over a finite field. [1X5.1-4 LinBox.SOLVE[0m [2X> LinBox.SOLVE( [0X[3XM, b, field-id[0X[2X ) ___________________________________[0Xfunction Kernel module function to calculate the solution of a matrix. Called by the wrapper [2XLinBox.SolutionMat[0m ([14X3.1-4[0m). The [3Xfield-id[0m parameter should be 0 when the matrix and vector contains integers, or the size of the field if the matrix and vector are over a finite field (which must naturally be the same for both). [1X5.1-5 LinBox.TEST_INT_CONVERSION_INTERNAL[0m [2X> LinBox.TEST_INT_CONVERSION_INTERNAL( [0X[3Xz[0X[2X ) _________________________[0Xfunction Tests the GAP-LinBox and LinBox-GAP integer conversion. Returns the integer [3Xz[0m (which may be large) after it has been converted into LinBox format and then back. [1X5.1-6 LinBox.TEST_VECTOR_CONVERSION_INTERNAL[0m [2X> LinBox.TEST_VECTOR_CONVERSION_INTERNAL( [0X[3Xv, field-id[0X[2X ) ____________[0Xfunction Tests the GAP-LinBox and LinBox-GAP vector conversion. Returns the vector [3Xv[0m after it has been converted into LinBox format and then back. The [3Xfield-id[0m parameter should be 0 for a vector of integers, or the size of the field if the vector is over a finite field. This function is called by [2XLinBox.TEST_VECTOR_CONVERSION[0m ([14X5.1-11[0m). [1X5.1-7 LinBox.TEST_MATRIX_CONVERSION_INTERNAL[0m [2X> LinBox.TEST_MATRIX_CONVERSION_INTERNAL( [0X[3XM, field-id[0X[2X ) ____________[0Xfunction Tests the GAP-LinBox and LinBox-GAP matrix conversion. Returns the matrix [3Xv[0m after it has been converted into LinBox format and then back. The [3Xfield-id[0m parameter should be 0 for a matrix of integers, or the size of the field if the matrix is over a finite field. This function is called by [2XLinBox.TEST_MATRIX_CONVERSION[0m ([14X5.1-12[0m). [1X5.1-8 LinBox.MAX_GAP_SMALL_INT[0m [2X> LinBox.MAX_GAP_SMALL_INT( [0X[3X[0X[2X ) _____________________________________[0Xfunction Kernel module function which returns the size of the largest integer that the [5XLinBox[0m kernel module thinks can be represented as a [5XGAP[0m small integer. This number is different on 32- or 64-bit machines, but [5XLinBox[0m tries to check with [5XGAP[0m when it compiles to find out which value to use. [4X--------------------------- Example ----------------------------[0X [4X gap> z := LinBox.MAX_GAP_SMALL_INT();[0X [4X 1152921504606846975[0X [4X gap> IsSmallIntRep(z);[0X [4X true[0X [4X gap> IsSmallIntRep(z+1);[0X [4X [0X [4X------------------------------------------------------------------[0X [1X5.1-9 LinBox.FIELD_DATA[0m [2X> LinBox.FIELD_DATA( [0X[3XM[0X[2X ) ___________________________________________[0Xfunction Checks that the field of the matrix [3XM[0m is one that is accepted by the kernel module, and if so returns data on the field for the kernel module to use. if the field is not compatible, then an error is thrown. The field data is a plain record with three elements: [10X.field[0m is the field of the matrix (using [2XDefaultFieldOfMatrix[0m ([14XReference: DefaultFieldOfMatrix[0m)); [10Xid[0m is the field id read by the kernel module, which is zero for an integer (or rationals) matrix, or the fieldsize otherwise; the last element [10Xone[0m is the one of the field. If the matrix is over the integers or the rationals, then zero is returned. It is assumed that the matrix is over the integers (since we can't cope with rationals), but we check that each element is an integer when we convert it in the kernel module and throw an error if it is not. [1X5.1-10 LinBox.TEST_INT_CONVERSION[0m [2X> LinBox.TEST_INT_CONVERSION( [0X[3Xz[0X[2X ) __________________________________[0Xfunction Convert the integer [3Xz[0m into the internal LinBox format and back again, returning the result. [1X5.1-11 LinBox.TEST_VECTOR_CONVERSION[0m [2X> LinBox.TEST_VECTOR_CONVERSION( [0X[3Xv[0X[2X ) _______________________________[0Xfunction Convert the vector [3Xv[0m into the internal LinBox format and back again, returning the result. [1X5.1-12 LinBox.TEST_MATRIX_CONVERSION[0m [2X> LinBox.TEST_MATRIX_CONVERSION( [0X[3XM[0X[2X ) _______________________________[0Xfunction Convert the matrix [3XM[0m into the internal LinBox format and back again, returning the result.