Changeset 7780


Ignore:
Timestamp:
09/30/11 18:29:18 (8 years ago)
Author:
aivar
Message:

Tidied up.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/projects/slim-curve/src/main/c/EcfUtil.c

    r7779 r7780  
    2222int ECF_debug = 0; 
    2323 
    24 //TODO ARG 
    25 //#define SPEEDUP1 1 
    26 //#define SPEEDUP2 1 
    27 //#define SPEEDUP3 1 
    28  
    2924/******************************************************************** 
    3025 
     
    4641    float *pivotInverse = (float *)malloc(n * sizeof(float)); 
    4742    int i, j, k, m; 
    48     /*int q, w; 
    49     printf("----------\n"); 
    50     for (q = 0; q < n; ++q) { 
    51         for (w = 0; w < n; ++w) { 
    52             printf("%f ", a[q][w]); 
    53         } 
    54         printf("  %f\n", b[q]); 
    55     } */ 
    5643 
    5744    // base row of matrix 
     
    8269        if (0.0 == a[k][k]) 
    8370        { 
    84                         free(pivotInverse); 
     71            free(pivotInverse); 
    8572            return -2; // singular matrix 
    8673        } 
     
    11198    } 
    11299 
    113     /*printf("====>\n"); 
    114     for (q = 0; q < n; ++q) { 
    115         for (w = 0; w < n; ++w) { 
    116             printf("%f ", a[q][w]); 
    117         } 
    118         printf("  %f\n", b[q]); 
    119     }*/ 
    120  
    121         free(pivotInverse); 
     100    free(pivotInverse); 
    122101    return 0; 
    123102} 
     
    183162    } 
    184163 
    185     #ifdef SPEEDUP1 
    186     //TODO ARG this is actually slower! 
    187     // swap rows 
    188     float *ptr1; 
    189     float *ptr2; 
    190     if (pivotRow != col) { 
    191         // swap elements in a matrix 
    192         ptr1 = &a[col][0]; 
    193         ptr2 = &a[pivotRow][0]; 
    194         for (i = 0; i < n; ++i) { 
    195             float temp; 
    196             SWAP(*ptr1, *ptr2); 
    197             ++ptr1; 
    198             ++ptr2; 
    199         } 
    200  
    201         // swap elements in order vector 
    202         { 
    203             int temp; 
    204             SWAP(order[col], order[pivotRow]); 
    205         } 
    206     } 
    207     #else 
    208164    // swap rows 
    209165    if (pivotRow != col) { 
     
    220176        } 
    221177    } 
    222     #endif 
    223178} 
    224179 
     
    243198 
    244199    // initialize ordering vector 
    245     #ifdef SPEEDUP2 
    246     //TODO ARG this is *slightly* slower 
    247     int *order_ptr = order; 
    248     for (i = 0; i < n; ++i) 
    249     { 
    250         *order_ptr++ = i; 
    251     } 
    252     #else 
    253200    for (i = 0; i < n; ++i) 
    254201    { 
    255202        order[i] = i; 
    256203    } 
    257     #endif 
    258204 
    259205    // pivot first column 
     
    268214    // compute first row of upper 
    269215    inverse = 1.0 / a[0][0]; 
    270     #ifdef SPEEDUP3 
    271     //TODO ARG this is *much* slower!!! 
    272     //  Note compiler probably realizes a[0] is a constant anyway 
    273     float *a_0_ptr = a[0]; 
    274     for (i = 1; i < n; ++i) { 
    275         *a_0_ptr++ *= inverse; 
    276     } 
    277     #else 
    278216    for (i = 1; i < n; ++i) { 
    279217        a[0][i] *= inverse; 
    280218    } 
    281     #endif 
    282219 
    283220    // continue computing columns of lowers then rows of uppers 
     
    417354    } 
    418355 
    419         free(order); 
     356    free(order); 
    420357    GCI_ecf_free_matrix(identity); 
    421358    return returnValue; 
Note: See TracChangeset for help on using the changeset viewer.