Example #1
0
MAPM MAPM::operator--()
{
//     m_apm_enter();
    MAPM ret;
    m_apm_subtract_mt(ret.val(),cval(),MM_One);
    *this = ret;
//     m_apm_leave();
    return *this;
}
Example #2
0
MAPM MAPM::operator++()
{
//     m_apm_enter();
    MAPM ret;
    m_apm_add_mt(ret.val(),cval(),MM_One);
    *this = ret;
//     m_apm_leave();
    return *this;
}
Example #3
0
score() {
    int scor, maxsco, obj, i;

    scor=maxsco=0;
    for(obj=treasr; obj<=objt; ++obj) {
	if( place(obj)>0 ) {
	    maxsco=maxsco+20;
	    if( place(obj)==3 && prop(obj)==0 ) {    /* сокровище b доме */
		scor=scor+20;
	    } else if( (prop(obj)&0377)!=inipro ) {   /* сокровище видел */
		scor=scor+5;
	    }
	}
    }
    rspeak(32);
    mscore(scor,maxsco);

    obj = 1;
    for(i=1; i<=plcl; ++i)  if( cval(i) && scor>=cval(i) ) obj = i;
    mes(ctext(obj));
}
Example #4
0
void strget(const char *str,Type& numeric_val,size_t num_chars)
{
  std::string cval(str,num_chars);
  char *chr=const_cast<char *>(cval.c_str());
  trim(cval);
  size_t decimal;
  num_chars=decimal=cval.length();
  numeric_val=0;
  int exp=0;
  bool neg_val=false,neg_exp=false,reading_exponent=false;
  for (size_t n=0; n < num_chars; ++n) {
    if (chr[n] == '.') {
	numeric_val*=0.1;
	decimal=n;
    }
    else if (chr[n] == 'E') {
	reading_exponent=true;
    }
    else {
	if (chr[n] == ' ' || chr[n] == '+' || chr[n] == '-') {
	  if (chr[n] == '-') {
	    if (!reading_exponent) {
		neg_val=true;
	    }
	    else {
		neg_exp=true;
	    }
	  }
	  chr[n]='0';
	}
	if (!reading_exponent) {
	  numeric_val+=static_cast<Type>((chr[n]-48)*std::pow(10.,num_chars-n-1));
	}
	else {
	  exp+=static_cast<int>((chr[n]-48)*std::pow(10.,num_chars-n-1));
	}
    }
  }
  if (neg_val) {
    numeric_val=-numeric_val;
  }
  if (decimal != num_chars) {
    auto mult=pow(0.1,num_chars-decimal-1);
    numeric_val*=static_cast<Type>(mult);
  }
  if (reading_exponent) {
    if (neg_exp) {
	exp=-exp;
    }
    numeric_val*=static_cast<Type>(pow(10.,exp));
  }
}
Example #5
0
int MAPM::myDigits(void) const 
{
	int maxd=m_apm_significant_digits_mt(cval());
	if (maxd<MM_cpp_min_precision) maxd=MM_cpp_min_precision;
	return maxd;
}
Example #6
0
MAPM MAPM::integer_divide(const MAPM &denom) const
{
    MAPM ret;
    m_apm_integer_divide_mt(ret.val(),cval(),denom.cval());
    return ret;
}
Example #7
0
MAPM MAPM::ipow_nr(int p) const
{
    MAPM ret;
    m_apm_integer_pow_nr_mt(ret.val(),cval(),p);
    return ret;
}
Example #8
0
MAPM MAPM::ceil(void) const
{
    MAPM ret;
    m_apm_ceil_mt(ret.val(),cval());
    return ret;
}
Example #9
0
MAPM MAPM::lcm(const MAPM &m) const
{
    MAPM ret;
    m_apm_lcm_mt(ret.val(),cval(),m.cval());
    return ret;
}
Example #10
0
MAPM MAPM::atan2(const MAPM &x,int toDigits) const
{
    MAPM ret;
    m_apm_arctan2_mt(ret.val(),toDigits,cval(),x.cval());
    return ret;
}
Example #11
0
int MAPM::exponent(void) const 
{
    return m_apm_exponent(cval());
}
Example #12
0
int MAPM::sign(void) const
{
    return m_apm_sign(cval());
}
Example #13
0
MAPM MAPM::divide(const MAPM &m,int toDigits) const
{
    MAPM ret;
    m_apm_divide_mt(ret.val(),toDigits,cval(),m.cval());
    return ret;
}
Example #14
0
int MAPM::compare(const MAPM &m) const
{
    return m_apm_compare(cval(),m.cval());
}
Example #15
0
bool MAPM::operator>=(const MAPM &m) const
{
    return m_apm_compare(cval(),m.cval())>=0;
}
Example #16
0
void MAPM::sincos(MAPM &sinR,MAPM &cosR,int toDigits)
{
    m_apm_sin_cos_mt(sinR.val(),cosR.val(),toDigits,cval());
}
Example #17
0
MAPM MAPM::pow(const MAPM &m,int toDigits) const
{
    MAPM ret;
    m_apm_pow_mt(ret.val(),toDigits,cval(), m.cval());
    return ret;
}
Example #18
0
int MAPM::significant_digits(void) const 
{
    return m_apm_significant_digits_mt(cval());
}
Example #19
0
MAPM MAPM::gcd(const MAPM &m) const
{
    MAPM ret;
    m_apm_gcd_mt(ret.val(),cval(),m.cval());
    return ret;
}
Example #20
0
int MAPM::is_integer(void) const 
{
    return m_apm_is_integer(cval());
}
Example #21
0
MAPM MAPM::floor(void) const
{
    MAPM ret;
    m_apm_floor_mt(ret.val(),cval());
    return ret;
}
Example #22
0
int MAPM::is_even(void) const 
{
    return m_apm_is_even(cval());
}
Example #23
0
MAPM MAPM::factorial(void) const
{
    MAPM ret;
    m_apm_factorial_mt(ret.val(),cval());
    return ret;
}
Example #24
0
int MAPM::is_odd(void) const 
{
    return m_apm_is_odd(cval());
}
Example #25
0
MAPM MAPM::ipow(int p,int toDigits) const
{
    MAPM ret;
    m_apm_integer_pow_mt(ret.val(),toDigits,cval(),p);
    return ret;
}
Example #26
0
MAPM MAPM::abs(void) const
{
    MAPM ret;
    m_apm_absolute_value(ret.val(),cval());
    return ret;
}
Example #27
0
void MAPM::integer_div_rem(const MAPM &denom,MAPM &quot,MAPM &rem) const
{
    m_apm_integer_div_rem_mt(quot.val(),rem.val(),cval(),denom.cval());
}
Example #28
0
MAPM MAPM::neg(void) const
{
    MAPM ret;
    m_apm_negate(ret.val(),cval());
    return ret;
}
Example #29
0
TEST(MiniTensor_ROL, NLLS01)
{
  bool const
  print_output = ::testing::GTEST_FLAG(print_time);

  // outputs nothing
  Teuchos::oblackholestream
  bhs;

  std::ostream &
  os = (print_output == true) ? std::cout : bhs;

  constexpr Intrepid2::Index
  NUM_CONSTR{3};

  constexpr Intrepid2::Index
  NUM_VAR{5};

  using MSEC = Intrepid2::Nonlinear01<Real, NUM_CONSTR>;

  MSEC
  msec;

  ROL::MiniTensor_EqualityConstraint<MSEC, Real, NUM_CONSTR, NUM_VAR>
  constr(msec);

  Intrepid2::Vector<Real, NUM_VAR>
  xval(Intrepid2::ZEROS);

  Intrepid2::Vector<Real, NUM_CONSTR>
  cval(Intrepid2::ZEROS);

  Intrepid2::Vector<Real, NUM_VAR>
  solval(Intrepid2::ZEROS);

  // Set initial guess.
  xval(0) = -1.8;
  xval(1) =  1.7;
  xval(2) =  1.9;
  xval(3) = -0.8;
  xval(4) = -0.8;

  // Set solution.
  solval(0) = -1.717143570394391e+00;
  solval(1) =  1.595709690183565e+00;
  solval(2) =  1.827245752927178e+00;
  solval(3) = -7.636430781841294e-01;
  solval(4) = -7.636430781841294e-01;

  Real const
  error_full_hess{2.3621708067012991e-02};

  Real const
  error_gn_hess{2.3669791103726853e-02};

  Real const
  tol{1.0e-08};

  ROL::MiniTensorVector<Real, NUM_VAR>
  x(xval);

  ROL::MiniTensorVector<Real, NUM_CONSTR>
  c(cval);

  ROL::MiniTensorVector<Real, NUM_VAR>
  sol(solval);

  Teuchos::RCP<ROL::EqualityConstraint<Real>>
  pconstr = Teuchos::rcp(&constr, false);

  // Define algorithm.
  Teuchos::ParameterList
  params;

  std::string
  step{"Trust Region"};

  params.sublist("Step").sublist(step).set("Subproblem Solver", "Truncated CG");
  params.sublist("Status Test").set("Gradient Tolerance", 1.0e-10);
  params.sublist("Status Test").set("Constraint Tolerance", 1.0e-10);
  params.sublist("Status Test").set("Step Tolerance", 1.0e-18);
  params.sublist("Status Test").set("Iteration Limit", 128);

  ROL::Algorithm<Real>
  algo(step, params);

  ROL::NonlinearLeastSquaresObjective<Real>
  nlls(pconstr, x, c, false);

  os << "\nSOLVE USING FULL HESSIAN\n";

  algo.run(x, nlls, true, os);

  Intrepid2::Vector<Real, NUM_VAR>
  xfinal = ROL::MTfromROL<Real, NUM_VAR>(x);

  os << "\nfinal x : " << xfinal << "\n";

  Real
  error = std::abs(Intrepid2::norm(xfinal - solval) - error_full_hess);

  os << "\nerror : " << error << "\n";

  ASSERT_LE(error, tol);

  algo.reset();
  x.set(xval);

  ROL::NonlinearLeastSquaresObjective<Real>
  gnnlls(pconstr, x, c, true);

  os << "\nSOLVE USING GAUSS-NEWTON HESSIAN\n";

  algo.run(x, gnnlls, true, os);

  xfinal = ROL::MTfromROL<Real, NUM_VAR>(x);

  os << "\nfinal x : " << xfinal << "\n";

  error = std::abs(Intrepid2::norm(xfinal - solval) - error_gn_hess);

  os << "\nerror : " << error << "\n";

  ASSERT_LE(error, tol);
}
Example #30
0
MAPM MAPM::round(int toDigits) const
{
    MAPM ret;
    m_apm_round_mt(ret.val(),toDigits,cval());
    return ret;
}