Changeset 262 for trunk/ADOL-C


Ignore:
Timestamp:
Jul 4, 2011 10:39:24 AM (9 years ago)
Author:
awalther
Message:

nlfs up and running, next task: speed up, first step

Location:
trunk/ADOL-C/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/ADOL-C/src/adouble.cpp

    r257 r262  
    573573      {
    574574        upd = upd_resloc_inc_prod(a_loc,location,eq_plus_prod);
     575        ++ADOLC_CURRENT_TAPE_INFOS.num_eq_prod;
    575576      }
    576577    if (upd) {
  • trunk/ADOL-C/src/taping.c

    r257 r262  
    10751075    ADOLC_CURRENT_TAPE_INFOS.stats[NUM_MAX_LIVES] =
    10761076        ADOLC_GLOBAL_TAPE_VARS.storeSize;
    1077 
     1077    ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD] =
     1078        ADOLC_CURRENT_TAPE_INFOS.num_eq_prod;
    10781079    taylor_close(ADOLC_CURRENT_TAPE_INFOS.stats[TAY_BUFFER_SIZE]);
    10791080
  • trunk/ADOL-C/src/taping.h

    r257 r262  
    3636    VAL_BUFFER_SIZE,      /* # of values per buffer == CBUFSIZE (usrparms.h) */
    3737    TAY_BUFFER_SIZE,     /* # of taylors per buffer <= TBUFSIZE (usrparms.h) */
     38    NUM_EQ_PROD,                       /* # of eq_*_prod for nlf computation */
    3839    STAT_SIZE                     /* represents the size of the stats vector */
    3940};
  • trunk/ADOL-C/src/taping_p.h

    r251 r262  
    208208    unsigned char *lastOpP1;    /* pointer to element following the buffer */
    209209    uint numOps_Tape;           /* overall number of opcodes */
    210     uint num_eq_prod;           /* overall number of eq_prod_* for nlf */
     210    uint num_eq_prod;           /* overall number of eq_*_prod for nlf */
    211211
    212212    /* values (real) tape */
  • trunk/ADOL-C/src/uni5_for.c

    r261 r262  
    142142
    143143#if defined(_NLF_)
    144 void copy_fod(int res, int arg, locint **fod);
    145 void append_fod(int res, int arg, locint **fod);
    146 void copy_index_domain_2_fod(int res, locint **fod, locint **ind_dom);
    147 void append_index_domain_2_fod(int res, int offset, int arg1, int arg2,locint **fod, locint **ind_dom);
    148 void combine_2_fod(int res, int arg1, int arg2, locint **fod);
     144
     145void combine_2_domains(int res, int arg1, int arg2, locint **ind_dom);
     146
    149147#if defined(_TIGHT_)
    150148#define GENERATED_FILENAME "nlf_forward_t"
     
    788786    IndexElement*  temp;
    789787    IndexElement*  temp1;
     788    locint entry;
    790789    int opind;
    791790    int index;
    792791    int index1;
     792    int offset;
    793793    int num;
    794     int num_eq_op = 0;
    795     int offset;
    796     locint entry;
    797794    int ii;
    798795    int jj;
     
    10321029        ind_dom = (locint **)  malloc(sizeof(locint*) * ADOLC_CURRENT_TAPE_INFOS.stats[NUM_MAX_LIVES]);
    10331030        max_ind_dom = ADOLC_CURRENT_TAPE_INFOS.stats[NUM_MAX_LIVES];
    1034 #else
    1035         ind_dom = (locint **)  malloc(sizeof(locint*) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]));
    1036         nlf = (locint **)  malloc(sizeof(locint*) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]));   
     1031        for(i=0;i<max_ind_dom;i++)
     1032          {
     1033            // structure of ind_dom[i]:
     1034            // ind_dom[i][0] = number of entries
     1035            // ind_dom[i][1] = length of array-2  = place for entries
     1036            ind_dom[i] = (locint *)  malloc(sizeof(locint) * (NUMNNZ+2));
     1037            ind_dom[i][0] = 0;
     1038            ind_dom[i][1] = NUMNNZ;
     1039          }
     1040#else
     1041        ind_dom = (locint **)  malloc(sizeof(locint*) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]+ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD]));
     1042        nlf = (locint **)  malloc(sizeof(locint*) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]+ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD]));   
    10371043        arg_index = (locint *)  malloc(sizeof(locint) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_MAX_LIVES]));   
    1038 
    10391044        opind = 0;
    1040         max_ind_dom = ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS];
     1045        max_ind_dom = ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]+ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD];
    10411046        csod = (struct IndexElement**) malloc(sizeof(struct IndexElement*) * indcheck);
    10421047        for(i=0;i<indcheck;i++)
     
    10471052          }
    10481053#endif
    1049     for(i=0;i<max_ind_dom;i++)
    1050     {
    1051       // structure of ind_dom[i]:
    1052       // ind_dom[i][0] = number of entries
    1053       // ind_dom[i][1] = length of array-2  = place for entries
    1054       ind_dom[i] = (locint *)  malloc(sizeof(locint) * (NUMNNZ+2));
    1055       ind_dom[i][0] = 0;
    1056       ind_dom[i][1] = NUMNNZ;
    1057 #if defined(_NLF_)
    1058       // structure of nlf
    1059       // same as ind_dom
    1060       nlf[i] = (locint *)  malloc(sizeof(locint) * (NUMNNZ));
    1061       nlf[i][0] = 0;
    1062       nlf[i][1] = NUMNNZ;
    1063 #endif
    1064     }
     1054
    10651055#if defined(_NONLIND_)
    10661056
     
    11341124#endif /* ADOLC_DEBUG */
    11351125    while (operation !=end_of_tape) {
    1136 
     1126 
     1127#if defined(_NLF_)
     1128      printf(" op %d \n",operation);
     1129#endif
    11371130      switch (operation) {
    11381131
     
    13001293                copy_index_domain(res, arg, ind_dom);
    13011294#else
    1302                 arg_index[res] = opind++;               
    1303                 copy_index_domain(arg_index[res],arg_index[arg], ind_dom);
    1304                 copy_index_domain(arg_index[res],arg_index[arg], nlf);
     1295/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     1296/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     1297                arg_index[res] = arg_index[arg];               
    13051298#endif
    13061299#else
     
    13281321
    13291322#if defined(_INDO_)
     1323#if !defined(_NLF_)
    13301324                ind_dom[res][0]=0;
    1331 #if defined(_NLF_)
     1325#else
    13321326                arg_index[res] = opind++;               
     1327                ind_dom[arg_index[res]][0] = 0;
    13331328                nlf[arg_index[res]][0] = 0;
    13341329                nlf[arg_index[res]][2] = 0;
     
    13561351
    13571352#if defined(_INDO_)
     1353#if !defined(_NLF_)
    13581354                ind_dom[res][0]=0;
    1359 #if defined(_NLF_)
     1355#else
     1356                arg_index[res] = opind++;               
     1357                ind_dom[arg_index[res]][0] = 0;
    13601358                nlf[arg_index[res]][0] = 0;
    13611359                nlf[arg_index[res]][2] = 0;
     
    13831381
    13841382#if defined(_INDO_)
     1383#if !defined(_NLF_)
    13851384                ind_dom[res][0]=0;
    1386 #if defined(_NLF_)
    1387                 nlf[res][0] = 0;
    1388                 nlf[res][2] = 0;
     1385#else
     1386                arg_index[res] = opind++;               
     1387                ind_dom[arg_index[res]][0] = 0;
     1388                nlf[arg_index[res]][0] = 0;
     1389                nlf[arg_index[res]][2] = 0;
    13891390#endif
    13901391#else
     
    14151416                ind_dom[res][2] = indexi;
    14161417#else
     1418                ind_dom[opind] = (locint *)  malloc(sizeof(locint) * 2);
     1419                ind_dom[opind][0] = 1;
     1420                ind_dom[opind][2] = opind;
     1421                nlf[opind] = (locint *)  malloc(sizeof(locint) * 1);
     1422                ind_dom[arg_index[res]][0] = 0;
    14171423                arg_index[res] = opind++;               
    1418                 ind_dom[arg_index[res]][0] = 1;
    1419                 ind_dom[arg_index[res]][2] = arg_index[res];
    14201424#endif         
    14211425#else
     
    15641568
    15651569#if defined(_INDO_)
     1570#if !defined(_NLF_)
    15661571                merge_2_index_domains(res, arg, ind_dom);
    1567 #if defined(_NLF_)
    1568                 /* append_fod(res,arg,fod); */
     1572#else
     1573                combine_2_index_domains(opind, arg_index[res], arg_index[arg], ind_dom);
     1574                combine_2_index_domains(opind, arg_index[res], arg_index[arg], nlf);
     1575                arg_index[res] = opind++;               
    15691576#endif
    15701577#else
     
    16101617
    16111618#if defined(_INDO_)
     1619#if !defined(_NLF_)
    16121620                merge_2_index_domains(res, arg, ind_dom);
    1613 #if defined(_NLF_)
    1614                 /* append_fod(res,arg,fod); */
     1621#else
     1622                combine_2_index_domains(opind, arg_index[res], arg_index[arg], ind_dom);
     1623                combine_2_index_domains(opind, arg_index[res], arg_index[arg], nlf);
     1624                arg_index[res] = opind++;               
    16151625#endif
    16161626#else
     
    16651675
    16661676#if defined(_INDO_)
     1677#if !defined(_NLF_)
    16671678                merge_2_index_domains(res, arg, ind_dom);
    1668 #if defined(_NLF_)
    1669                 /* copy_index_domain_2_fod(res,fod,ind_dom); */
     1679#else
     1680                combine_2_index_domains(opind, arg_index[res], arg_index[arg], ind_dom);
     1681                nlf[opind][0] = 1;
     1682                nlf[opind][2] = opind;
     1683                arg_index[res] = opind++;               
    16701684#endif
    16711685#if defined(_NONLIND_)
     
    17481762                combine_2_index_domains(res, arg1, arg2, ind_dom);
    17491763#else     
     1764                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     1765                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], nlf);
    17501766                arg_index[res] = opind++;               
    1751                 combine_2_index_domains(arg_index[res], arg_index[arg1], arg_index[arg2], ind_dom);
    1752                 combine_2_index_domains(arg_index[res], arg_index[arg1], arg_index[arg2], nlf);
    17531767#endif
    17541768#else
     
    17861800                copy_index_domain(res, arg, ind_dom);
    17871801#else
    1788                 arg_index[res] = opind++;               
    1789                 copy_index_domain(arg_index[res],arg_index[arg], ind_dom);
    1790                 copy_index_domain(arg_index[res],arg_index[arg], nlf);
     1802/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     1803/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     1804                arg_index[res] = arg_index[arg];
    17911805#endif
    17921806#else
     
    18171831
    18181832#if defined(_INDO_)
     1833#if !defined(_NLF_)
    18191834                combine_2_index_domains(res, arg1, arg2, ind_dom);
    1820 #if defined(_NLF_)
    1821                 /* combine_2_fod(res, arg1, arg2, fod); */
     1835#else
     1836                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     1837                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], nlf);
     1838                arg_index[res] = opind++;               
    18221839#endif
    18231840#else
     
    18521869
    18531870#if defined(_INDO_)
     1871#if !defined(_NLF_)
    18541872                copy_index_domain(res, arg, ind_dom);
    1855 #if defined(_NLF_)
    1856                 /* copy_fod(res, arg, fod); */
     1873#else
     1874/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     1875/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     1876                arg_index[res] = arg_index[arg];               
    18571877#endif
    18581878#else
     
    18841904                combine_2_index_domains(res, arg1, arg2, ind_dom);
    18851905#else
     1906                combine_2_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     1907                nlf[opind][0] = 1;
     1908                nlf[opind][2] = opind;
    18861909                arg_index[res] = opind++;               
    1887                 combine_2_index_domains(arg_index[res], arg_index[arg1], arg_index[arg2], ind_dom);
    1888                 nlf[arg_index[res]][0] = 1;
    1889                 nlf[arg_index[res]][2] = arg_index[res];
    18901910#endif
    18911911#if defined(_NONLIND_)
     
    19431963                merge_3_index_domains(res, arg1, arg2, ind_dom);
    19441964#else
    1945                 /* arg_index[res] = opind++;             */
    1946                 /* combine_2_index_domains(arg_index[res], arg_index[arg1], arg_index[arg2], ind_dom); */
    1947                 /* merge_3_index_domains(res, arg1, arg2, ind_dom); */
    1948                 /* append_index_domain_2_fod(res, offset, arg1, arg2, fod, ind_dom); */
     1965                // operation: v = v+u*w
     1966                // first step: z = u*w, index domains
     1967                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     1968                // first step: z = u*w, nlf
     1969                nlf[opind][0] = 1;
     1970                nlf[opind][2] = opind++;
     1971                // second step: v = v+z, index domains
     1972                combine_2_index_domains(opind, arg_index[res], opind-1,ind_dom);
     1973                // second step: v = v+z, nlf
     1974                combine_2_index_domains(opind, arg_index[res], opind-1,nlf);
     1975                arg_index[res] = opind++;               
    19491976#endif
    19501977#if defined(_NONLIND_)
     
    19982025
    19992026#if defined(_INDO_)
     2027#if !defined(_NLF_)
    20002028                merge_3_index_domains(res, arg1, arg2, ind_dom);
    2001 #if defined(_NLF_)
    2002                 /* append_index_domain_2_fod(res, offset, arg1, arg2, fod, ind_dom); */
     2029#else
     2030                // operation: v = v+u*w
     2031                // first step: z = u*w, index domains
     2032                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     2033                // first step: z = u*w, nlf
     2034                nlf[opind][0] = 1;
     2035                nlf[opind][2] = opind;
     2036                // second step: v = v+z, index domains
     2037                merge_2_index_domains(opind, arg_index[res], ind_dom);
     2038                // second step: v = v+z, nlf
     2039                merge_2_index_domains(opind, arg_index[res], nlf);
     2040                arg_index[res] = opind++;               
    20032041#endif
    20042042#if defined(_NONLIND_)
     
    20582096
    20592097#if defined(_INDO_)
     2098#if !defined(_NLF_)
    20602099                copy_index_domain(res, arg, ind_dom);
    2061 #if defined(_NLF_)
    2062                 /* copy_fod(res, arg, fod); */
     2100#else
     2101/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     2102/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     2103                arg_index[res] = arg_index[arg];               
    20632104#endif
    20642105#else
     
    20972138
    20982139#if defined(_INDO_)
     2140#if !defined(_NLF_)
    20992141                combine_2_index_domains(res, arg1, arg2, ind_dom);
    2100 #if defined(_NLF_)
    2101                 /* copy_index_domain_2_fod(res,fod,ind_dom); */
     2142#else
     2143                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     2144                nlf[opind][0] = 1;
     2145                nlf[opind][2] = opind;
     2146                arg_index[res] = opind++;               
    21022147#endif
    21032148#if defined(_NONLIND_)
     
    21612206
    21622207#if defined(_INDO_)
     2208#if !defined(_NLF_)
    21632209                copy_index_domain(res, arg, ind_dom);
    2164 #if defined(_NLF_)
    2165                 /* copy_fod(res, arg, fod); */
     2210#else
     2211/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     2212/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     2213                arg_index[res] = arg_index[arg];               
    21662214#endif
    21672215#if defined(_NONLIND_)
     
    22162264
    22172265#if defined(_INDO_)
     2266#if !defined(_NLF_)
    22182267                copy_index_domain(res, arg, ind_dom);
    2219 #if defined(_NLF_)
    2220                 /* copy_fod(res, arg, fod); */
     2268#else
     2269/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     2270/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     2271                arg_index[res] = arg_index[arg];                           
    22212272#endif
    22222273#else
     
    22432294
    22442295#if defined(_INDO_)
     2296#if !defined(_NLF_)
    22452297                copy_index_domain(res, arg, ind_dom);
    2246 #if defined(_NLF_)
    2247                 /* copy_fod(res, arg, fod); */
     2298#else
     2299/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     2300/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     2301                arg_index[res] = arg_index[arg];               
    22482302#endif
    22492303#else
     
    22812335
    22822336#if defined(_INDO_)
     2337#if !defined(_NLF_)
    22832338                copy_index_domain(res, arg, ind_dom);
    2284 #if defined(_NLF_)
    2285                 /* copy_fod(res, arg, fod); */
     2339#else
     2340/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     2341/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     2342                arg_index[res] = arg_index[arg];               
    22862343#endif
    22872344#if defined(_NONLIND_)
     
    23242381            /*--------------------------------------------------------------------------*/
    23252382        case sin_op:                              /* sine operation    sin_op */
    2326             arg1 = get_locint_f();
     2383                arg1 = get_locint_f();
    23272384                arg2 = get_locint_f();
    23282385                res  = get_locint_f();
     
    23402397
    23412398#if defined(_INDO_)
     2399#if !defined(_NLF_)
    23422400                copy_index_domain(res, arg1, ind_dom);
    2343 #if defined(_NLF_)
    2344                 /* copy_fod(res, arg1, fod); */
     2401#else
     2402/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     2403/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     2404                arg_index[res] = arg_index[arg1];               
    23452405#endif
    23462406#if defined(_NONLIND_)
     
    24092469
    24102470#if defined(_INDO_)
     2471#if !defined(_NLF_)
    24112472                copy_index_domain(res, arg1, ind_dom);
    2412 #if defined(_NLF_)
    2413                 /* copy_fod(res, arg1, fod); */
     2473#else
     2474/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     2475/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     2476                arg_index[res] = arg_index[arg1];               
    24142477#endif
    24152478#if defined(_NONLIND_)
     
    24752538
    24762539#if defined(_INDO_)
     2540#if !defined(_NLF_)
    24772541                copy_index_domain(res, arg1, ind_dom);
    2478 #if defined(_NLF_)
    2479                 /* copy_fod(res, arg1, fod); */
     2542#else
     2543/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     2544/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     2545                arg_index[res] = arg_index[arg1];               
    24802546#endif
    24812547#if defined(_NONLIND_)
     
    25202586            /*--------------------------------------------------------------------------*/
    25212587        case asin_op:                                              /* asin_op */
    2522             arg1 = get_locint_f();
     2588                arg1 = get_locint_f();
    25232589                arg2 = get_locint_f();
    25242590                res  = get_locint_f();
     
    25332599
    25342600#if defined(_INDO_)
     2601#if !defined(_NLF_)
    25352602                copy_index_domain(res, arg1, ind_dom);
    2536 #if defined(_NLF_)
    2537                 /* copy_fod(res, arg1, fod); */
     2603#else
     2604/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     2605/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     2606                arg_index[res] = arg_index[arg1];               
    25382607#endif
    25392608#if defined(_NONLIND_)
     
    26162685            /*--------------------------------------------------------------------------*/
    26172686        case acos_op:                                              /* acos_op */
    2618             arg1 = get_locint_f();
     2687                arg1 = get_locint_f();
    26192688                arg2 = get_locint_f();
    26202689                res  = get_locint_f();
     
    26292698
    26302699#if defined(_INDO_)
     2700#if !defined(_NLF_)
    26312701                copy_index_domain(res, arg1, ind_dom);
    2632 #if defined(_NLF_)
    2633                 /* copy_fod(res, arg1, fod); */
     2702#else
     2703/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     2704/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     2705                arg_index[res] = arg_index[arg1];               
    26342706#endif
    26352707#if defined(_NONLIND_)
     
    27142786            /*--------------------------------------------------------------------------*/
    27152787        case asinh_op:                                            /* asinh_op */
    2716             arg1 = get_locint_f();
     2788                arg1 = get_locint_f();
    27172789                arg2 = get_locint_f();
    27182790                res  = get_locint_f();
     
    27272799
    27282800#if defined(_INDO_)
     2801#if !defined(_NLF_)
    27292802                copy_index_domain(res, arg1, ind_dom);
    2730 #if defined(_NLF_)
    2731                 /* copy_fod(res, arg1, fod); */
     2803#else
     2804/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     2805/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     2806                arg_index[res] = arg_index[arg1];               
    27322807#endif
    27332808#if defined(_NONLIND_)
     
    27722847            /*--------------------------------------------------------------------------*/
    27732848        case acosh_op:                                           /* acosh_op */
    2774             arg1 = get_locint_f();
     2849                arg1 = get_locint_f();
    27752850                arg2 = get_locint_f();
    27762851                res  = get_locint_f();
     
    27852860
    27862861#if defined(_INDO_)
     2862#if !defined(_NLF_)
    27872863                copy_index_domain(res, arg1, ind_dom);
    2788 #if defined(_NLF_)
    2789                 /* copy_fod(res, arg1, fod); */
     2864#else
     2865/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     2866/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     2867                arg_index[res] = arg_index[arg1];               
    27902868#endif
    27912869#if defined(_NONLIND_)
     
    28652943
    28662944#if defined(_INDO_)
     2945#if !defined(_NLF_)
    28672946                copy_index_domain(res, arg1, ind_dom);
    2868 #if defined(_NLF_)
    2869                 /* copy_fod(res, arg1, fod); */
     2947#else
     2948/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     2949/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     2950                arg_index[res] = arg_index[arg1];               
    28702951#endif
    28712952#if defined(_NONLIND_)
     
    29543035            /*--------------------------------------------------------------------------*/
    29553036        case erf_op:                                                /* erf_op */
    2956             arg1 = get_locint_f();
     3037                arg1 = get_locint_f();
    29573038                arg2 = get_locint_f();
    29583039                res  = get_locint_f();
     
    29663047                ADOLC_OPENMP_RESTORE_THREAD_NUMBER;
    29673048#if defined(_INDO_)
     3049#if !defined(_NLF_)
    29683050                copy_index_domain(res, arg1, ind_dom);
    2969 #if defined(_NLF_)
    2970                 /* copy_fod(res, arg1, fod); */
     3051#else
     3052/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     3053/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     3054                arg_index[res] = arg_index[arg1];               
    29713055#endif
    29723056#else
     
    30163100
    30173101#if defined(_INDO_)
     3102#if !defined(_NLF_)
    30183103                copy_index_domain(res, arg, ind_dom);
    3019 #if defined(_NLF_)
    3020                 /* copy_fod(res, arg, fod); */
     3104#else
     3105/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     3106/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     3107                arg_index[res] = arg_index[arg];               
    30213108#endif
    30223109#if defined(_NONLIND_)
     
    30973184                ADOLC_OPENMP_RESTORE_THREAD_NUMBER;
    30983185#if defined(_INDO_)
     3186#if !defined(_NLF_)
    30993187                copy_index_domain(res, arg, ind_dom);
    3100 #if defined(_NLF_)
    3101                 /* copy_fod(res, arg, fod); */
     3188#else
     3189/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     3190/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     3191                arg_index[res] = arg_index[arg];               
    31023192#endif
    31033193#if defined(_NONLIND_)
     
    32353325
    32363326#if defined(_INDO_)
     3327#if !defined(_NLF_)
    32373328                copy_index_domain(res, arg, ind_dom);
    3238 #if defined(_NLF_)
    3239                 /* copy_fod(res, arg, fod); */
     3329#else
     3330/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     3331/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     3332                arg_index[res] = arg_index[arg];               
    32403333#endif
    32413334#if defined(_NONLIND_)
     
    33893482
    33903483#if defined(_INDO_)
     3484#if !defined(_NLF_)
    33913485#ifdef _TIGHT_
    33923486                    if (dp_T0[arg1] < dp_T0[arg2])
     
    34013495                    combine_2_index_domains(res, arg1, arg2, ind_dom);
    34023496#endif
    3403 #if defined(_NLF_)
     3497#else
    34043498#ifdef _TIGHT_
    3405 /*                     if (dp_T0[arg1] < dp_T0[arg2]) */
    3406 /*                    copy_fod(res, arg1, fod); */
    3407 /*                     else { */
    3408 /*                         if (dp_T0[arg1] > dp_T0[arg2]) */
    3409 /*                        copy_fod(res, arg2, fod); */
    3410 /*                         else  */
    3411 /*                        combine_2_fod(res, arg1, arg2, fod); */
    3412 /*                     } */
    3413 /* #else */
    3414 /*                  combine_2_fod(res, arg1, arg2, fod); */
    3415 #endif
     3499                    if (dp_T0[arg1] < dp_T0[arg2])
     3500                      {
     3501/*                      copy_index_domain(opind,arg_index[arg1], ind_dom); */
     3502/*                      copy_index_domain(opind,arg_index[arg1], nlf); */
     3503                        arg_index[res] = arg_index[arg1];
     3504                      }           
     3505                    else {
     3506                        if (dp_T0[arg1] > dp_T0[arg2])
     3507                          {
     3508/*                          copy_index_domain(opind,arg_index[arg2], ind_dom); */
     3509/*                          copy_index_domain(opind,arg_index[arg2], nlf); */
     3510                            arg_index[res] = arg_index[arg2];
     3511                          }               
     3512                        else
     3513                          {
     3514                            combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     3515                            combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], nlf);
     3516                          }
     3517                    }
     3518#else
     3519                            combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     3520                            combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], nlf);
     3521#endif
     3522                arg_index[res] = opind++;               
    34163523#endif
    34173524
     
    35323639
    35333640#if defined(_INDO_)
     3641#if !defined(_NLF_)
    35343642                copy_index_domain(res, arg, ind_dom);
    3535 #if defined(_NLF_)
    3536                 /* copy_fod(res, arg, fod); */
     3643#else
     3644/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     3645/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     3646                arg_index[res] = arg_index[arg];               
    35373647#endif
    35383648#else
     
    36093719
    36103720#if defined(_INDO_)
     3721#if !defined(_NLF_)
    36113722                copy_index_domain(res, arg, ind_dom);
    3612 #if defined(_NLF_)
    3613                 /* copy_fod(res, arg, fod); */
     3723#else
     3724/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     3725/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     3726                arg_index[res] = arg_index[arg];               
    36143727#endif
    36153728#else
     
    36393752
    36403753#if defined(_INDO_)
     3754#if !defined(_NLF_)
    36413755                copy_index_domain(res, arg, ind_dom);
    3642 #if defined(_NLF_)
    3643                 /* copy_fod(res, arg, fod); */
     3756#else
     3757/*                 copy_index_domain(opind,arg_index[arg], ind_dom); */
     3758/*                 copy_index_domain(opind,arg_index[arg], nlf); */
     3759                arg_index[res] = arg_index[arg];               
    36443760#endif
    36453761#else
     
    36693785                /* olvo 980924 changed order to allow reflexive ops */
    36703786#if defined(_INDO_)
     3787#if !defined(_NLF_)
    36713788#ifdef _TIGHT_
    36723789                if (dp_T0[arg] > 0) {
     
    36773794                    copy_index_domain(res, arg1, ind_dom);
    36783795
    3679 #if defined(_NLF_)
    36803796                    /* copy_fod(res, arg1, fod); */
    3681 #endif
    36823797                } else {
    36833798                    if (coval > 0.0)
     
    36873802                    dp_T0[res] = dp_T0[arg2];
    36883803                    copy_index_domain(res, arg2, ind_dom);
    3689 #if defined(_NLF_)
    3690                     /* copy_fod(res, arg2, fod); */
    3691 #endif
    36923804                }
    36933805
    36943806#else
    36953807                    combine_2_index_domains(res, arg1, arg2, ind_dom);
    3696 #if defined(_NLF_)
    3697                     /* combine_2_fod(res, arg1, arg2, fod); */
     3808#endif
     3809#else
     3810#ifdef _TIGHT_
     3811                if (dp_T0[arg] > 0) {
     3812                    if (coval <= 0.0)
     3813                        MINDEC(ret_c,2);
     3814                    dp_T0[res] = dp_T0[arg1];
     3815
     3816/*                  copy_index_domain(opind,arg_index[arg1], ind_dom); */
     3817/*                  copy_index_domain(opind,arg_index[arg1], nlf); */
     3818                    arg_index[res] = arg_index[arg1];           
     3819
     3820                } else {
     3821                    if (coval > 0.0)
     3822                        MINDEC(ret_c,2);
     3823                    if (dp_T0[arg] == 0)
     3824                        MINDEC(ret_c,0);
     3825                    dp_T0[res] = dp_T0[arg2];
     3826/*                  copy_index_domain(opind,arg_index[arg2], ind_dom); */
     3827/*                  copy_index_domain(opind,arg_index[arg2], nlf); */
     3828                    arg_index[res] = arg_index[arg2];           
     3829                }
     3830
     3831#else
     3832                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], ind_dom);
     3833                combine_2_index_domains(opind, arg_index[arg1], arg_index[arg2], nlf);
     3834                arg_index[res] = opind++;               
    36983835#endif
    36993836#endif
     
    37683905                /* olvo 980924 changed order to allow reflexive ops */
    37693906#if defined(_INDO_)
     3907#if !defined(_NLF_)
    37703908                copy_index_domain(res, arg1, ind_dom);
    3771 #if defined(_NLF_)
    3772                 /* copy_fod(res, arg1, fod); */
     3909#else
     3910/*                 copy_index_domain(opind,arg_index[arg1], ind_dom); */
     3911/*                 copy_index_domain(opind,arg_index[arg1], nlf); */
     3912                arg_index[res] = arg_index[arg1];               
    37733913#endif
    37743914#else
     
    39444084
    39454085        } /* endswitch */
     4086
    39464087
    39474088        /* Read the next operation */
     
    40154156      }
    40164157    free(nlf);
     4158    free(arg_index);
    40174159#endif
    40184160
     
    42414383/****************************************************************************/
    42424384
     4385
     4386/****************************************************************************/
     4387
     4388#if defined(_NLF_)
     4389
     4390/****************************************************************************/
     4391/* set operations for propagation of index domains                          */
     4392
     4393/*--------------------------------------------------------------------------*/
     4394/* operations on index domains                                              */
     4395
     4396#if defined(_TIGHT_)
     4397
     4398void combine_2_domains(int res, int arg1, int arg2, locint **dom) {
     4399/*   int num,num1,num2, i,j,k,l; */
     4400/*   locint *temp_array, *arg_ind_dom, *res_ind_dom; */
     4401
     4402/*   if (ind_dom[res][0] == 0) */
     4403/*     copy_index_domain(res,arg,ind_dom); */
     4404/*   else */
     4405/*     { */
     4406/*       if (res != arg) */
     4407/*      { */
     4408/*        arg_ind_dom = ind_dom[arg]; */
     4409/*        res_ind_dom = ind_dom[res]; */
     4410
     4411/*        num  = ind_dom[res][0]; */
     4412/*        num1 = arg_ind_dom[0]; */
     4413/*        num2 = ind_dom[res][1]; */
     4414
     4415/*        if (num2 < num1+num) */
     4416/*          num2 = num1+num; */
     4417         
     4418/*        temp_array = (locint *)  malloc(sizeof(locint)* (num2+2)); */
     4419/*        temp_array[1] = num2; */
     4420
     4421/*        i = 2; */
     4422/*        j = 2; */
     4423/*        k = 2; */
     4424/*        num += 2; */
     4425/*        num1 += 2; */
     4426/*        while ((i< num) && (j < num1)) */
     4427/*          { */
     4428/*            if (res_ind_dom[i] < arg_ind_dom[j]) */
     4429/*              { */
     4430/*                temp_array[k] = res_ind_dom[i]; */
     4431/*                i++; k++; */
     4432/*              } */
     4433/*            else */
     4434/*              { */
     4435/*                if (res_ind_dom[i] == arg_ind_dom[j]) */
     4436/*                  { */
     4437/*                    temp_array[k] = arg_ind_dom[j]; */
     4438/*                    i++;j++;k++; */
     4439/*                  } */
     4440/*                else */
     4441/*                  { */
     4442/*                    temp_array[k] = arg_ind_dom[j]; */
     4443/*                    j++;k++;                 */
     4444/*                  } */
     4445/*              } */
     4446/*          } */
     4447/*        for(l = i;l<num;l++) */
     4448/*          { */
     4449/*            temp_array[k] = res_ind_dom[l]; */
     4450/*            k++; */
     4451/*          } */
     4452/*        for(l = j;l<num1;l++) */
     4453/*          { */
     4454/*            temp_array[k] = arg_ind_dom[l]; */
     4455/*            k++; */
     4456/*          } */
     4457/*        temp_array[0] = k-2; */
     4458/*        free(ind_dom[res]); */
     4459/*        ind_dom[res]=temp_array; */
     4460/*      } */
     4461/*     } */
     4462
     4463}
     4464
     4465#endif
     4466#endif
    42434467END_C_DECLS
Note: See TracChangeset for help on using the changeset viewer.