[BACK]Return to uldet.rr CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / packages / src

File: [local] / OpenXM / src / asir-contrib / packages / src / uldet.rr (download)

Revision 1.1, Fri Apr 8 06:25:12 2005 UTC (19 years, 1 month ago) by takayama
Branch: MAIN
CVS Tags: R_1_3_1-2, RELEASE_1_3_1_13b, RELEASE_1_2_3_12, KNOPPIX_2006, HEAD, DEB_REL_1_2_3-9

Renaming:
 bench-1 --> bench-1.rr
 beta    --> beta.rr
 fourier-0 --> edu_fourier_0.rr
 hg21 --> taka_hg21.rr
 igraph --> igraph.rr
 sets --> oh_sets.rr
 uldet --> uldet.rr

/* -*- mode: C -*- */
/* $OpenXM: OpenXM/src/asir-contrib/packages/src/uldet.rr,v 1.1 2005/04/08 06:25:12 takayama Exp $ */
/* Old, uldet, see Attic */

/* 
The function "uldet_det" computes the determinant of a given square
matrix M of rational functions and needs O(n^3) times multiplication.
Here, ULDET is the initial word of "Ultra Loose DETerminant" function:-).
*/

def uldet_det(M) {
    Row    = size(M)[0];
    Column = size(M)[1];
    NewM   = newmat(Row, Column);
    Coef   = 1;
    for(I=0; I<Row; I++) {
        for(J=0; J<Column; J++) {
            Coef *= dn(M[I][J]);
            NewM[I][J] = nm(M[I][J]);
            for(K=0; K<Column; K++) {
                if (K!=J) {
                    NewM[I][J] *= dn(M[I][K]);
                }            
            }
        }
    }
    return red(det(NewM)/Coef);
}