///////////////////////////////////////////////////////////////////////////
//    Copyright (C) 2011 Wizardry and Steamworks - License: GNU GPLv3    //
///////////////////////////////////////////////////////////////////////////
list wasMatrixAdjugate(list m, integer ord) {
    list result = [];
    integer i = 0;
    do {
        integer j = 0;
        integer o = -1;
        if(i % 2 == 0) jump compute;
        o = 0;
@compute;
        do {
            list cof = wasMatrixCofactor(m, i, j, ord);
            if(o = ~o) {
                result += -wasDeterminant(cof, ord-1);
                jump next;
            }
            result += wasDeterminant(cof, ord-1);      
@next;
        } while(++j<ord);
    } while(++i<ord);
    return wasMatrixTranspose(result, ord);
}