Beispiel #1
0
 void param_stddev_number::set_dependent_variables(void)
 {
   #ifndef __ZTC__
   dvariable(*this) << dvariable(*this);
   #else
   *this << *this;
   #endif
 }
Beispiel #2
0
TEST_F(test_move, independents2x_async_gradcalc)
{
  independent_variables independents(1, 2);
  independents(1) = 1.5;
  independents(2) = 3.5;

  gradient_structure gs;

  ASSERT_EQ(0, gradient_structure::GRAD_STACK1->total());
  ASSERT_EQ(1750, gradient_structure::GRAD_LIST->total_addresses());

  dvar_vector variables(independents);

  auto sum = [&variables](const double lhs, const double rhs)
  {
    dvariable a(variables(1));
    dvariable b(variables(2));
    return dvariable(lhs * a + rhs * b);
  };

  std::future<dvariable> a(std::async(sum, 2, -5));
  std::future<dvariable> b(std::async(sum, -4, 6));

  dvariable result = a.get() + b.get(); 

  ASSERT_EQ(18, gradient_structure::GRAD_STACK1->total());
  ASSERT_EQ(1754, gradient_structure::GRAD_LIST->total_addresses());

  ASSERT_DOUBLE_EQ(value(result), 0.5);
}
Beispiel #3
0
TEST_F(test_move, independents2x_gradcalc)
{
  independent_variables independents(1, 2);
  independents(1) = 1.5;
  independents(2) = 3.5;

  gradient_structure gs;

  ASSERT_EQ(0, gradient_structure::GRAD_STACK1->total());
  ASSERT_EQ(1750, gradient_structure::GRAD_LIST->total_addresses());

  dvar_vector variables(independents);

  auto sum = [&variables](const double lhs, const double rhs)
  {
    dvariable a(variables(1));
    dvariable b(variables(2));
    return dvariable(lhs * a + rhs * b);
  };

  dvariable a = sum(2, -5);
  dvariable b = sum(-4, 6);
  dvariable result = a + b; 

  ASSERT_EQ(14, gradient_structure::GRAD_STACK1->total());
  ASSERT_EQ(1754, gradient_structure::GRAD_LIST->total_addresses());

  ASSERT_DOUBLE_EQ(value(result), 0.5);
}