You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							128 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
	
	
							128 lines
						
					
					
						
							2.8 KiB
						
					
					
				// Copyright (C) 2004, 2009 International Business Machines and others.
 | 
						|
// All Rights Reserved.
 | 
						|
// This code is published under the Eclipse Public License.
 | 
						|
//
 | 
						|
// $Id: IpUtils.hpp 2167 2013-03-08 11:15:38Z stefan $
 | 
						|
//
 | 
						|
// Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
 | 
						|
 | 
						|
#ifndef __IPUTILS_HPP__
 | 
						|
#define __IPUTILS_HPP__
 | 
						|
 | 
						|
// Standard Ip Include Files
 | 
						|
#include "IpTypes.hpp"
 | 
						|
#include "IpDebug.hpp"
 | 
						|
 | 
						|
namespace Ipopt
 | 
						|
{
 | 
						|
 | 
						|
  inline Index Max(Index a, Index b)
 | 
						|
  {
 | 
						|
    return ((a) > (b) ? (a) : (b));
 | 
						|
  }
 | 
						|
 | 
						|
  inline Index Max(Index a, Index b, Index c)
 | 
						|
  {
 | 
						|
    Index max = Max(a,b);
 | 
						|
    max = Max(max, c);
 | 
						|
    return max;
 | 
						|
  }
 | 
						|
 | 
						|
  inline Index Max(Index a, Index b, Index c, Index d)
 | 
						|
  {
 | 
						|
    Index max = Max(a, b, c);
 | 
						|
    max = Max(max, d);
 | 
						|
    return max;
 | 
						|
  }
 | 
						|
 | 
						|
  inline Index Min(Index a, Index b)
 | 
						|
  {
 | 
						|
    return ((a) < (b) ? (a) : (b));
 | 
						|
  }
 | 
						|
 | 
						|
  inline Index Min(Index a, Index b, Index c)
 | 
						|
  {
 | 
						|
    Index min = Min(a,b);
 | 
						|
    min = Min(min, c);
 | 
						|
    return min;
 | 
						|
  }
 | 
						|
 | 
						|
  inline Index Min(Index a, Index b, Index c, Index d)
 | 
						|
  {
 | 
						|
    Index min = Min(a, b, c);
 | 
						|
    min = Min(min, d);
 | 
						|
    return min;
 | 
						|
  }
 | 
						|
 | 
						|
  ///////////////////////////////////////////
 | 
						|
 | 
						|
  inline Number Max(Number a, Number b)
 | 
						|
  {
 | 
						|
    return ((a) > (b) ? (a) : (b));
 | 
						|
  }
 | 
						|
 | 
						|
  inline Number Max(Number a, Number b, Number c)
 | 
						|
  {
 | 
						|
    Number max = Max(a,b);
 | 
						|
    max = Max(max, c);
 | 
						|
    return max;
 | 
						|
  }
 | 
						|
 | 
						|
  inline Number Max(Number a, Number b, Number c, Number d)
 | 
						|
  {
 | 
						|
    Number max = Max(a, b, c);
 | 
						|
    max = Max(max, d);
 | 
						|
    return max;
 | 
						|
  }
 | 
						|
 | 
						|
  inline Number Min(Number a, Number b)
 | 
						|
  {
 | 
						|
    return ((a) < (b) ? (a) : (b));
 | 
						|
  }
 | 
						|
 | 
						|
  inline Number Min(Number a, Number b, Number c)
 | 
						|
  {
 | 
						|
    Number min = Min(a,b);
 | 
						|
    min = Min(min, c);
 | 
						|
    return min;
 | 
						|
  }
 | 
						|
 | 
						|
  inline Number Min(Number a, Number b, Number c, Number d)
 | 
						|
  {
 | 
						|
    Number min = Min(a, b, c);
 | 
						|
    min = Min(min, d);
 | 
						|
    return min;
 | 
						|
  }
 | 
						|
 | 
						|
  /** Function returning true iff the argument is a valid double number
 | 
						|
   *  (not NaN or Inf). */
 | 
						|
  bool IsFiniteNumber(Number val);
 | 
						|
 | 
						|
  /** Function returning a random number between 0 and 1 */
 | 
						|
  Number IpRandom01();
 | 
						|
 | 
						|
  /** Function resetting the random number generator */
 | 
						|
  void IpResetRandom01();
 | 
						|
 | 
						|
  /** method determining CPU time */
 | 
						|
  Number CpuTime();
 | 
						|
 | 
						|
  /** method determining system time */
 | 
						|
  Number SysTime();
 | 
						|
 | 
						|
  /** method determining wallclock time since first call */
 | 
						|
  Number WallclockTime();
 | 
						|
 | 
						|
  /** Method for comparing two numbers within machine precision.  The
 | 
						|
   *  return value is true if lhs is less or equal the rhs, relaxing
 | 
						|
   *  this inequality by something a little larger than machine
 | 
						|
   *  precision relative to the absolute value of BasVal. */
 | 
						|
  bool Compare_le(Number lhs, Number rhs, Number BasVal);
 | 
						|
 | 
						|
  /** Method for printing a formatted output to a string with given size.
 | 
						|
  */
 | 
						|
  int Snprintf(char* str, long size, const char* format, ...);
 | 
						|
 | 
						|
} //namespace Ipopt
 | 
						|
 | 
						|
#endif
 | 
						|
 |