Ignore:
Timestamp:
Jan 6, 2019 2:43:06 PM (4 months ago)
Author:
unxusr
Message:

formatting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Clp/src/ClpHelperFunctions.cpp

    r1817 r2385  
    1818
    1919double
    20 maximumAbsElement(const double * region, int size)
    21 {
    22      int i;
    23      double maxValue = 0.0;
    24      for (i = 0; i < size; i++)
    25           maxValue = CoinMax(maxValue, fabs(region[i]));
    26      return maxValue;
    27 }
    28 void
    29 setElements(double * region, int size, double value)
    30 {
    31      int i;
    32      for (i = 0; i < size; i++)
    33           region[i] = value;
    34 }
    35 void
    36 multiplyAdd(const double * region1, int size, double multiplier1,
    37             double * region2, double multiplier2)
    38 {
    39      int i;
    40      if (multiplier1 == 1.0) {
    41           if (multiplier2 == 1.0) {
    42                for (i = 0; i < size; i++)
    43                     region2[i] = region1[i] + region2[i];
    44           } else if (multiplier2 == -1.0) {
    45                for (i = 0; i < size; i++)
    46                     region2[i] = region1[i] - region2[i];
    47           } else if (multiplier2 == 0.0) {
    48                for (i = 0; i < size; i++)
    49                     region2[i] = region1[i] ;
    50           } else {
    51                for (i = 0; i < size; i++)
    52                     region2[i] = region1[i] + multiplier2 * region2[i];
    53           }
    54      } else if (multiplier1 == -1.0) {
    55           if (multiplier2 == 1.0) {
    56                for (i = 0; i < size; i++)
    57                     region2[i] = -region1[i] + region2[i];
    58           } else if (multiplier2 == -1.0) {
    59                for (i = 0; i < size; i++)
    60                     region2[i] = -region1[i] - region2[i];
    61           } else if (multiplier2 == 0.0) {
    62                for (i = 0; i < size; i++)
    63                     region2[i] = -region1[i] ;
    64           } else {
    65                for (i = 0; i < size; i++)
    66                     region2[i] = -region1[i] + multiplier2 * region2[i];
    67           }
    68      } else if (multiplier1 == 0.0) {
    69           if (multiplier2 == 1.0) {
    70                // nothing to do
    71           } else if (multiplier2 == -1.0) {
    72                for (i = 0; i < size; i++)
    73                     region2[i] =  -region2[i];
    74           } else if (multiplier2 == 0.0) {
    75                for (i = 0; i < size; i++)
    76                     region2[i] =  0.0;
    77           } else {
    78                for (i = 0; i < size; i++)
    79                     region2[i] =  multiplier2 * region2[i];
    80           }
    81      } else {
    82           if (multiplier2 == 1.0) {
    83                for (i = 0; i < size; i++)
    84                     region2[i] = multiplier1 * region1[i] + region2[i];
    85           } else if (multiplier2 == -1.0) {
    86                for (i = 0; i < size; i++)
    87                     region2[i] = multiplier1 * region1[i] - region2[i];
    88           } else if (multiplier2 == 0.0) {
    89                for (i = 0; i < size; i++)
    90                     region2[i] = multiplier1 * region1[i] ;
    91           } else {
    92                for (i = 0; i < size; i++)
    93                     region2[i] = multiplier1 * region1[i] + multiplier2 * region2[i];
    94           }
    95      }
     20maximumAbsElement(const double *region, int size)
     21{
     22  int i;
     23  double maxValue = 0.0;
     24  for (i = 0; i < size; i++)
     25    maxValue = CoinMax(maxValue, fabs(region[i]));
     26  return maxValue;
     27}
     28void setElements(double *region, int size, double value)
     29{
     30  int i;
     31  for (i = 0; i < size; i++)
     32    region[i] = value;
     33}
     34void multiplyAdd(const double *region1, int size, double multiplier1,
     35  double *region2, double multiplier2)
     36{
     37  int i;
     38  if (multiplier1 == 1.0) {
     39    if (multiplier2 == 1.0) {
     40      for (i = 0; i < size; i++)
     41        region2[i] = region1[i] + region2[i];
     42    } else if (multiplier2 == -1.0) {
     43      for (i = 0; i < size; i++)
     44        region2[i] = region1[i] - region2[i];
     45    } else if (multiplier2 == 0.0) {
     46      for (i = 0; i < size; i++)
     47        region2[i] = region1[i];
     48    } else {
     49      for (i = 0; i < size; i++)
     50        region2[i] = region1[i] + multiplier2 * region2[i];
     51    }
     52  } else if (multiplier1 == -1.0) {
     53    if (multiplier2 == 1.0) {
     54      for (i = 0; i < size; i++)
     55        region2[i] = -region1[i] + region2[i];
     56    } else if (multiplier2 == -1.0) {
     57      for (i = 0; i < size; i++)
     58        region2[i] = -region1[i] - region2[i];
     59    } else if (multiplier2 == 0.0) {
     60      for (i = 0; i < size; i++)
     61        region2[i] = -region1[i];
     62    } else {
     63      for (i = 0; i < size; i++)
     64        region2[i] = -region1[i] + multiplier2 * region2[i];
     65    }
     66  } else if (multiplier1 == 0.0) {
     67    if (multiplier2 == 1.0) {
     68      // nothing to do
     69    } else if (multiplier2 == -1.0) {
     70      for (i = 0; i < size; i++)
     71        region2[i] = -region2[i];
     72    } else if (multiplier2 == 0.0) {
     73      for (i = 0; i < size; i++)
     74        region2[i] = 0.0;
     75    } else {
     76      for (i = 0; i < size; i++)
     77        region2[i] = multiplier2 * region2[i];
     78    }
     79  } else {
     80    if (multiplier2 == 1.0) {
     81      for (i = 0; i < size; i++)
     82        region2[i] = multiplier1 * region1[i] + region2[i];
     83    } else if (multiplier2 == -1.0) {
     84      for (i = 0; i < size; i++)
     85        region2[i] = multiplier1 * region1[i] - region2[i];
     86    } else if (multiplier2 == 0.0) {
     87      for (i = 0; i < size; i++)
     88        region2[i] = multiplier1 * region1[i];
     89    } else {
     90      for (i = 0; i < size; i++)
     91        region2[i] = multiplier1 * region1[i] + multiplier2 * region2[i];
     92    }
     93  }
    9694}
    9795double
    98 innerProduct(const double * region1, int size, const double * region2)
    99 {
    100      int i;
    101      double value = 0.0;
    102      for (i = 0; i < size; i++)
    103           value += region1[i] * region2[i];
    104      return value;
    105 }
    106 void
    107 getNorms(const double * region, int size, double & norm1, double & norm2)
    108 {
    109      norm1 = 0.0;
    110      norm2 = 0.0;
    111      int i;
    112      for (i = 0; i < size; i++) {
    113           norm2 += region[i] * region[i];
    114           norm1 = CoinMax(norm1, fabs(region[i]));
    115      }
     96innerProduct(const double *region1, int size, const double *region2)
     97{
     98  int i;
     99  double value = 0.0;
     100  for (i = 0; i < size; i++)
     101    value += region1[i] * region2[i];
     102  return value;
     103}
     104void getNorms(const double *region, int size, double &norm1, double &norm2)
     105{
     106  norm1 = 0.0;
     107  norm2 = 0.0;
     108  int i;
     109  for (i = 0; i < size; i++) {
     110    norm2 += region[i] * region[i];
     111    norm1 = CoinMax(norm1, fabs(region[i]));
     112  }
    116113}
    117114#ifndef NDEBUG
    118115#include "ClpModel.hpp"
    119116#include "ClpMessage.hpp"
    120 ClpModel * clpTraceModel=NULL; // Set to trap messages
     117ClpModel *clpTraceModel = NULL; // Set to trap messages
    121118void ClpTracePrint(std::string fileName, std::string message, int lineNumber)
    122119{
    123120  if (!clpTraceModel) {
    124     std::cout<<fileName<<":"<<lineNumber<<" : \'"
    125              <<message<<"\' failed."<<std::endl;       
     121    std::cout << fileName << ":" << lineNumber << " : \'"
     122              << message << "\' failed." << std::endl;
    126123  } else {
    127124    char line[1000];
    128     sprintf(line,"%s: %d : \'%s\' failed.",fileName.c_str(),lineNumber,message.c_str());
     125    sprintf(line, "%s: %d : \'%s\' failed.", fileName.c_str(), lineNumber, message.c_str());
    129126    clpTraceModel->messageHandler()->message(CLP_GENERAL_WARNING, clpTraceModel->messages())
    130127      << line
     
    136133// For long double versions
    137134CoinWorkDouble
    138 maximumAbsElement(const CoinWorkDouble * region, int size)
    139 {
    140      int i;
    141      CoinWorkDouble maxValue = 0.0;
    142      for (i = 0; i < size; i++)
    143           maxValue = CoinMax(maxValue, CoinAbs(region[i]));
    144      return maxValue;
    145 }
    146 void
    147 setElements(CoinWorkDouble * region, int size, CoinWorkDouble value)
    148 {
    149      int i;
    150      for (i = 0; i < size; i++)
    151           region[i] = value;
    152 }
    153 void
    154 multiplyAdd(const CoinWorkDouble * region1, int size, CoinWorkDouble multiplier1,
    155             CoinWorkDouble * region2, CoinWorkDouble multiplier2)
    156 {
    157      int i;
    158      if (multiplier1 == 1.0) {
    159           if (multiplier2 == 1.0) {
    160                for (i = 0; i < size; i++)
    161                     region2[i] = region1[i] + region2[i];
    162           } else if (multiplier2 == -1.0) {
    163                for (i = 0; i < size; i++)
    164                     region2[i] = region1[i] - region2[i];
    165           } else if (multiplier2 == 0.0) {
    166                for (i = 0; i < size; i++)
    167                     region2[i] = region1[i] ;
    168           } else {
    169                for (i = 0; i < size; i++)
    170                     region2[i] = region1[i] + multiplier2 * region2[i];
    171           }
    172      } else if (multiplier1 == -1.0) {
    173           if (multiplier2 == 1.0) {
    174                for (i = 0; i < size; i++)
    175                     region2[i] = -region1[i] + region2[i];
    176           } else if (multiplier2 == -1.0) {
    177                for (i = 0; i < size; i++)
    178                     region2[i] = -region1[i] - region2[i];
    179           } else if (multiplier2 == 0.0) {
    180                for (i = 0; i < size; i++)
    181                     region2[i] = -region1[i] ;
    182           } else {
    183                for (i = 0; i < size; i++)
    184                     region2[i] = -region1[i] + multiplier2 * region2[i];
    185           }
    186      } else if (multiplier1 == 0.0) {
    187           if (multiplier2 == 1.0) {
    188                // nothing to do
    189           } else if (multiplier2 == -1.0) {
    190                for (i = 0; i < size; i++)
    191                     region2[i] =  -region2[i];
    192           } else if (multiplier2 == 0.0) {
    193                for (i = 0; i < size; i++)
    194                     region2[i] =  0.0;
    195           } else {
    196                for (i = 0; i < size; i++)
    197                     region2[i] =  multiplier2 * region2[i];
    198           }
    199      } else {
    200           if (multiplier2 == 1.0) {
    201                for (i = 0; i < size; i++)
    202                     region2[i] = multiplier1 * region1[i] + region2[i];
    203           } else if (multiplier2 == -1.0) {
    204                for (i = 0; i < size; i++)
    205                     region2[i] = multiplier1 * region1[i] - region2[i];
    206           } else if (multiplier2 == 0.0) {
    207                for (i = 0; i < size; i++)
    208                     region2[i] = multiplier1 * region1[i] ;
    209           } else {
    210                for (i = 0; i < size; i++)
    211                     region2[i] = multiplier1 * region1[i] + multiplier2 * region2[i];
    212           }
    213      }
     135maximumAbsElement(const CoinWorkDouble *region, int size)
     136{
     137  int i;
     138  CoinWorkDouble maxValue = 0.0;
     139  for (i = 0; i < size; i++)
     140    maxValue = CoinMax(maxValue, CoinAbs(region[i]));
     141  return maxValue;
     142}
     143void setElements(CoinWorkDouble *region, int size, CoinWorkDouble value)
     144{
     145  int i;
     146  for (i = 0; i < size; i++)
     147    region[i] = value;
     148}
     149void multiplyAdd(const CoinWorkDouble *region1, int size, CoinWorkDouble multiplier1,
     150  CoinWorkDouble *region2, CoinWorkDouble multiplier2)
     151{
     152  int i;
     153  if (multiplier1 == 1.0) {
     154    if (multiplier2 == 1.0) {
     155      for (i = 0; i < size; i++)
     156        region2[i] = region1[i] + region2[i];
     157    } else if (multiplier2 == -1.0) {
     158      for (i = 0; i < size; i++)
     159        region2[i] = region1[i] - region2[i];
     160    } else if (multiplier2 == 0.0) {
     161      for (i = 0; i < size; i++)
     162        region2[i] = region1[i];
     163    } else {
     164      for (i = 0; i < size; i++)
     165        region2[i] = region1[i] + multiplier2 * region2[i];
     166    }
     167  } else if (multiplier1 == -1.0) {
     168    if (multiplier2 == 1.0) {
     169      for (i = 0; i < size; i++)
     170        region2[i] = -region1[i] + region2[i];
     171    } else if (multiplier2 == -1.0) {
     172      for (i = 0; i < size; i++)
     173        region2[i] = -region1[i] - region2[i];
     174    } else if (multiplier2 == 0.0) {
     175      for (i = 0; i < size; i++)
     176        region2[i] = -region1[i];
     177    } else {
     178      for (i = 0; i < size; i++)
     179        region2[i] = -region1[i] + multiplier2 * region2[i];
     180    }
     181  } else if (multiplier1 == 0.0) {
     182    if (multiplier2 == 1.0) {
     183      // nothing to do
     184    } else if (multiplier2 == -1.0) {
     185      for (i = 0; i < size; i++)
     186        region2[i] = -region2[i];
     187    } else if (multiplier2 == 0.0) {
     188      for (i = 0; i < size; i++)
     189        region2[i] = 0.0;
     190    } else {
     191      for (i = 0; i < size; i++)
     192        region2[i] = multiplier2 * region2[i];
     193    }
     194  } else {
     195    if (multiplier2 == 1.0) {
     196      for (i = 0; i < size; i++)
     197        region2[i] = multiplier1 * region1[i] + region2[i];
     198    } else if (multiplier2 == -1.0) {
     199      for (i = 0; i < size; i++)
     200        region2[i] = multiplier1 * region1[i] - region2[i];
     201    } else if (multiplier2 == 0.0) {
     202      for (i = 0; i < size; i++)
     203        region2[i] = multiplier1 * region1[i];
     204    } else {
     205      for (i = 0; i < size; i++)
     206        region2[i] = multiplier1 * region1[i] + multiplier2 * region2[i];
     207    }
     208  }
    214209}
    215210CoinWorkDouble
    216 innerProduct(const CoinWorkDouble * region1, int size, const CoinWorkDouble * region2)
    217 {
    218      int i;
    219      CoinWorkDouble value = 0.0;
    220      for (i = 0; i < size; i++)
    221           value += region1[i] * region2[i];
    222      return value;
    223 }
    224 void
    225 getNorms(const CoinWorkDouble * region, int size, CoinWorkDouble & norm1, CoinWorkDouble & norm2)
    226 {
    227      norm1 = 0.0;
    228      norm2 = 0.0;
    229      int i;
    230      for (i = 0; i < size; i++) {
    231           norm2 += region[i] * region[i];
    232           norm1 = CoinMax(norm1, CoinAbs(region[i]));
    233      }
     211innerProduct(const CoinWorkDouble *region1, int size, const CoinWorkDouble *region2)
     212{
     213  int i;
     214  CoinWorkDouble value = 0.0;
     215  for (i = 0; i < size; i++)
     216    value += region1[i] * region2[i];
     217  return value;
     218}
     219void getNorms(const CoinWorkDouble *region, int size, CoinWorkDouble &norm1, CoinWorkDouble &norm2)
     220{
     221  norm1 = 0.0;
     222  norm2 = 0.0;
     223  int i;
     224  for (i = 0; i < size; i++) {
     225    norm2 += region[i] * region[i];
     226    norm1 = CoinMax(norm1, CoinAbs(region[i]));
     227  }
    234228}
    235229#endif
     
    240234
    241235typedef void (*NEW_HANDLER)();
    242 static NEW_HANDLER new_handler;                        // function to call if `new' fails (cf. ARM p. 281)
     236static NEW_HANDLER new_handler; // function to call if `new' fails (cf. ARM p. 281)
    243237
    244238// Allocate storage.
     
    246240operator new(size_t size)
    247241{
    248      void * p;
    249      for (;;) {
    250           p = malloc(size);
    251           if      (p)           break;        // success
    252           else if (new_handler) new_handler();   // failure - try again (allow user to release some storage first)
    253           else                  break;        // failure - no retry
    254      }
    255      if (size > 1000000)
    256           printf("Allocating memory of size %d\n", size);
    257      return p;
     242  void *p;
     243  for (;;) {
     244    p = malloc(size);
     245    if (p)
     246      break; // success
     247    else if (new_handler)
     248      new_handler(); // failure - try again (allow user to release some storage first)
     249    else
     250      break; // failure - no retry
     251  }
     252  if (size > 1000000)
     253    printf("Allocating memory of size %d\n", size);
     254  return p;
    258255}
    259256
    260257// Deallocate storage.
    261 void
    262 operator delete(void *p)
    263 {
    264      free(p);
    265      return;
    266 }
    267 void
    268 operator delete [] (void *p)
    269 {
    270      free(p);
    271      return;
     258void operator delete(void *p)
     259{
     260  free(p);
     261  return;
     262}
     263void operator delete[](void *p)
     264{
     265  free(p);
     266  return;
    272267}
    273268#endif
     269
     270/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
     271*/
Note: See TracChangeset for help on using the changeset viewer.