Ejemplo n.º 1
0
TEST(MetaTraits, DoubleVectorView_true_false) {
  using std::vector;
  using stan::DoubleVectorView;
  using Eigen::Matrix;
  using Eigen::Dynamic;

  double a_double(1);
  std::vector<double> a_std_vector(3);
  Matrix<double,Dynamic,1> a_vector(4);
  Matrix<double,1,Dynamic> a_row_vector(5);

  DoubleVectorView<true,false> dvv1(length(a_double));
  EXPECT_FLOAT_EQ(0.0, dvv1[0]);
  EXPECT_FLOAT_EQ(0.0, dvv1[1]);
  EXPECT_FLOAT_EQ(0.0, dvv1[100]);

  DoubleVectorView<true,false> dvv2(length(a_std_vector));
  EXPECT_FLOAT_EQ(0.0, dvv2[0]);
  EXPECT_FLOAT_EQ(0.0, dvv2[1]);
  EXPECT_FLOAT_EQ(0.0, dvv2[2]);  
  
  DoubleVectorView<true,false> dvv3(length(a_vector));
  EXPECT_FLOAT_EQ(0.0, dvv3[0]);
  EXPECT_FLOAT_EQ(0.0, dvv3[1]);
  EXPECT_FLOAT_EQ(0.0, dvv3[2]);  
  
  DoubleVectorView<true,false> dvv4(length(a_row_vector));
  EXPECT_FLOAT_EQ(0.0, dvv4[0]);
  EXPECT_FLOAT_EQ(0.0, dvv4[1]);
  EXPECT_FLOAT_EQ(0.0, dvv4[2]);
}
Ejemplo n.º 2
0
TEST(MetaTraits, VectorBuilderHelper_true_false) {
  using stan::VectorBuilderHelper;
  using stan::length;
  using Eigen::Matrix;
  using Eigen::Dynamic;

  Matrix<double,Dynamic,1> a_vector(4);
  Matrix<double,1,Dynamic> a_row_vector(5);

  VectorBuilderHelper<double,true,false> dvv3(length(a_vector));
  EXPECT_FLOAT_EQ(0.0, dvv3[0]);
  EXPECT_FLOAT_EQ(0.0, dvv3[1]);
  EXPECT_FLOAT_EQ(0.0, dvv3[2]);
  double data3 = 0;
  EXPECT_NO_THROW(data3 = dvv3.data());
  EXPECT_FLOAT_EQ(0.0, data3);
  
  VectorBuilderHelper<double,true,false> dvv4(length(a_row_vector));
  EXPECT_FLOAT_EQ(0.0, dvv4[0]);
  EXPECT_FLOAT_EQ(0.0, dvv4[1]);
  EXPECT_FLOAT_EQ(0.0, dvv4[2]);
  double data4 = 0;
  EXPECT_NO_THROW(data4 = dvv4.data());
  EXPECT_FLOAT_EQ(0.0, data4);
}
Ejemplo n.º 3
0
TEST(MetaTraits, VectorBuilder_true_true) {
  using std::vector;
  using stan::VectorBuilder;
  using stan::math::var;
  using stan::length;

  var a_var(1);
  std::vector<var> a_std_vector(3);

  VectorBuilder<true,double,std::vector<var> > dvv1(length(a_var));
  dvv1[0] = 0.0;
  EXPECT_FLOAT_EQ(0.0, dvv1[0]);
  std::vector<double> data1;
  EXPECT_NO_THROW(data1 = dvv1.data());
  EXPECT_EQ(length(a_var), data1.size());
  
  VectorBuilder<true,double,std::vector<var> > dvv2(length(a_std_vector));
  dvv2[0] = 0.0;
  dvv2[1] = 1.0;
  dvv2[2] = 2.0;
  EXPECT_FLOAT_EQ(0.0, dvv2[0]);
  EXPECT_FLOAT_EQ(1.0, dvv2[1]);
  EXPECT_FLOAT_EQ(2.0, dvv2[2]);  
  std::vector<double> data2;
  EXPECT_NO_THROW(data2 = dvv2.data());
  EXPECT_EQ(length(a_std_vector), data2.size());
}
Ejemplo n.º 4
0
TEST(MetaTraits, VectorBuilder_true_true) {
    using stan::VectorBuilder;
    using Eigen::Matrix;
    using Eigen::Dynamic;
    using stan::math::var;
    using stan::length;

    Matrix<var,Dynamic,1> a_vector(4);
    Matrix<var,1,Dynamic> a_row_vector(5);

    VectorBuilder<true,double,Matrix<var,Dynamic,1> > dvv3(length(a_vector));
    dvv3[0] = 0.0;
    dvv3[1] = 1.0;
    dvv3[2] = 2.0;
    EXPECT_FLOAT_EQ(0.0, dvv3[0]);
    EXPECT_FLOAT_EQ(1.0, dvv3[1]);
    EXPECT_FLOAT_EQ(2.0, dvv3[2]);
    std::vector<double> data3;
    EXPECT_NO_THROW(data3 = dvv3.data());
    EXPECT_EQ(length(a_vector), data3.size());

    VectorBuilder<true,double,Matrix<var,1,Dynamic> > dvv4(length(a_row_vector));
    dvv4[0] = 0.0;
    dvv4[1] = 1.0;
    dvv4[2] = 2.0;
    EXPECT_FLOAT_EQ(0.0, dvv4[0]);
    EXPECT_FLOAT_EQ(1.0, dvv4[1]);
    EXPECT_FLOAT_EQ(2.0, dvv4[2]);
    std::vector<double> data4;
    EXPECT_NO_THROW(data4 = dvv4.data());
    EXPECT_EQ(length(a_row_vector), data4.size());
}
Ejemplo n.º 5
0
TEST(MetaTraits, get) {
  using stan::get;

  EXPECT_FLOAT_EQ(2.0, get(2.0,1));

  std::vector<double> x(3);
  x[1] = 5.0;
  EXPECT_EQ(5.0, get(x,1));

  Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> m(2,3);
  m << 1, 3, 5, 
       2, 4, 6;
  EXPECT_EQ(1.0, get(m,0));
  EXPECT_EQ(3.0, get(m,2));
  EXPECT_EQ(6.0, get(m,5));

  Eigen::Matrix<double,Eigen::Dynamic,1> rv(2);
  rv << 1, 2;
  EXPECT_EQ(1.0, get(rv,0));
  EXPECT_EQ(2.0, get(rv,1));

  Eigen::Matrix<double,1,Eigen::Dynamic> v(2);
  v << 1, 2;
  EXPECT_EQ(1.0, get(v,0));
  EXPECT_EQ(2.0, get(v,1));
}
Ejemplo n.º 6
0
TEST(MetaTraits, length) {
  using stan::length;

  Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> m(2,3);
  m << 1, 2, 3, 4, 5, 6;
  EXPECT_EQ(6U, length(m));

  Eigen::Matrix<double,Eigen::Dynamic,1> rv(2);
  rv << 1, 2;
  EXPECT_EQ(2U, length(rv));

  Eigen::Matrix<double,1,Eigen::Dynamic> v(2);
  v << 1, 2;
  EXPECT_EQ(2U, length(v));
}
Ejemplo n.º 7
0
TEST(ErrorHandlingScalar, checkConsistentSize_EigenVector) {
  using Eigen::Matrix;
  using Eigen::Dynamic;
  using stan::math::check_consistent_size;
  using stan::size_of;

  const char* function = "checkConsistentSize";
  const char* name1 = "name1";
  

  Matrix<double,Dynamic,1> x(4);
  EXPECT_EQ(4U, size_of(x));
  EXPECT_TRUE(check_consistent_size(function, name1, x, 4U));
  EXPECT_THROW_MSG(check_consistent_size(function, name1, x, 2U), 
                   std::invalid_argument,
                   "name1 has dimension = 4, expecting dimension = 2");

  x.resize(1);
  EXPECT_TRUE(check_consistent_size(function, name1, x, 1U));
  EXPECT_THROW_MSG(check_consistent_size(function, name1, x, 2U), 
                   std::invalid_argument,
                   "name1 has dimension = 1, expecting dimension = 2");

  x.resize(0);
  EXPECT_TRUE(check_consistent_size(function, name1, x, 0U));
  EXPECT_THROW_MSG(check_consistent_size(function, name1, x, 1U), 
                   std::invalid_argument,
                   "name1 has dimension = 0, expecting dimension = 1");
}
Ejemplo n.º 8
0
TEST(MetaTraits, VectorBuilder_false_true) {
  using std::vector;
  using stan::VectorBuilder;
  using stan::math::var;
  using stan::length;

  var a_var(1);
  std::vector<var> a_std_vector(3);

  VectorBuilder<false,double,std::vector<var> > dvv1(length(a_var));
  EXPECT_THROW(dvv1[0], std::logic_error);
  EXPECT_THROW(dvv1.data(), std::logic_error);

  VectorBuilder<false,double,std::vector<var> > dvv2(length(a_std_vector));
  EXPECT_THROW(dvv2[0], std::logic_error);
  EXPECT_THROW(dvv2.data(), std::logic_error);
}
Ejemplo n.º 9
0
TEST(MetaTraits, VectorBuilderHelper_false_false) {
  using stan::VectorBuilderHelper;
  using stan::length;
  using Eigen::Matrix;
  using Eigen::Dynamic;


  Matrix<double,Dynamic,1> a_vector(4);
  Matrix<double,1,Dynamic> a_row_vector(5);

  VectorBuilderHelper<double,false,false> dvv3(length(a_vector));
  EXPECT_THROW(dvv3[0], std::logic_error);
  EXPECT_THROW(dvv3.data(), std::logic_error);
  
  VectorBuilderHelper<double,false,false> dvv4(length(a_row_vector));
  EXPECT_THROW(dvv4[0], std::logic_error);
  EXPECT_THROW(dvv4.data(), std::logic_error);
}
Ejemplo n.º 10
0
TEST(MetaTraits, VectorBuilder_false_true) {
    using stan::VectorBuilder;
    using Eigen::Matrix;
    using Eigen::Dynamic;
    using stan::math::var;
    using stan::length;

    Matrix<var,Dynamic,1> a_vector(4);
    Matrix<var,1,Dynamic> a_row_vector(5);

    VectorBuilder<false,double,Matrix<var,Dynamic,1> > dvv3(length(a_vector));
    EXPECT_THROW(dvv3[0], std::logic_error);
    EXPECT_THROW(dvv3.data(), std::logic_error);

    VectorBuilder<false,double,Matrix<var,1,Dynamic> > dvv4(length(a_row_vector));
    EXPECT_THROW(dvv4[0], std::logic_error);
    EXPECT_THROW(dvv4.data(), std::logic_error);
}
Ejemplo n.º 11
0
TEST(MetaTraits, DoubleVectorView_true_true) {
  using std::vector;
  using stan::DoubleVectorView;
  using Eigen::Matrix;
  using Eigen::Dynamic;
  using stan::agrad::var;

  var a_var(1);
  std::vector<var> a_std_vector(3);
  Matrix<var,Dynamic,1> a_vector(4);
  Matrix<var,1,Dynamic> a_row_vector(5);

  DoubleVectorView<true,true> dvv1(length(a_var));
  dvv1[0] = 0.0;
  dvv1[1] = 1.0;
  dvv1[2] = 2.0;
  EXPECT_FLOAT_EQ(0.0, dvv1[0]);
  EXPECT_FLOAT_EQ(1.0, dvv1[1]);
  EXPECT_FLOAT_EQ(2.0, dvv1[2]);

  DoubleVectorView<true,true> dvv2(length(a_std_vector));
  dvv2[0] = 0.0;
  dvv2[1] = 1.0;
  dvv2[2] = 2.0;
  EXPECT_FLOAT_EQ(0.0, dvv2[0]);
  EXPECT_FLOAT_EQ(1.0, dvv2[1]);
  EXPECT_FLOAT_EQ(2.0, dvv2[2]);  
  
  DoubleVectorView<true,true> dvv3(length(a_vector));
  dvv3[0] = 0.0;
  dvv3[1] = 1.0;
  dvv3[2] = 2.0;
  EXPECT_FLOAT_EQ(0.0, dvv3[0]);
  EXPECT_FLOAT_EQ(1.0, dvv3[1]);
  EXPECT_FLOAT_EQ(2.0, dvv3[2]);  
  
  DoubleVectorView<true,true> dvv4(length(a_row_vector));
  dvv4[0] = 0.0;
  dvv4[1] = 1.0;
  dvv4[2] = 2.0;
  EXPECT_FLOAT_EQ(0.0, dvv4[0]);
  EXPECT_FLOAT_EQ(1.0, dvv4[1]);
  EXPECT_FLOAT_EQ(2.0, dvv4[2]);
}
Ejemplo n.º 12
0
TEST(MetaTraits, VectorBuilderHelper_false_false) {
  using std::vector;
  using stan::VectorBuilderHelper;
  using stan::length;

  std::vector<double> a_std_vector(3);

  VectorBuilderHelper<double,false,false> dvv2(length(a_std_vector));
  EXPECT_THROW(dvv2[0], std::logic_error);
  EXPECT_THROW(dvv2.data(), std::logic_error);
}
Ejemplo n.º 13
0
        static bool check(const char* function,
                          const char* name,
                          const T_y& y,
                          const T_low& low,
                          const T_high& high) {
          using stan::length;
          using stan::get;

          VectorView<const T_low> low_vec(low);
          VectorView<const T_high> high_vec(high);
          for (size_t n = 0; n < length(y); n++) {
            if (!(low_vec[n] <= get(y, n) && get(y, n) <= high_vec[n])) {
              std::stringstream msg;
              msg << ", but must be between ";
              msg << "(" << low_vec[n] << ", " << high_vec[n] << ")";
              std::string msg_str(msg.str());
              domain_error_vec(function, name, y, n,
                               "is ", msg_str.c_str());
            }
          }
          return true;
        }
Ejemplo n.º 14
0
TEST(MetaTraits, VectorBuilder_false_false) {
  using std::vector;
  using stan::VectorBuilder;
  using Eigen::Matrix;
  using Eigen::Dynamic;

  double a_double(1);
  std::vector<double> a_std_vector(3);
  Matrix<double,Dynamic,1> a_vector(4);
  Matrix<double,1,Dynamic> a_row_vector(5);

  VectorBuilder<false,double,double> dvv1(length(a_double));
  EXPECT_THROW(dvv1[0], std::logic_error);

  VectorBuilder<false,double,double> dvv2(length(a_std_vector));
  EXPECT_THROW(dvv2[0], std::logic_error);
  
  VectorBuilder<false,double,double> dvv3(length(a_vector));
  EXPECT_THROW(dvv3[0], std::logic_error);
  
  VectorBuilder<false,double,double> dvv4(length(a_row_vector));
  EXPECT_THROW(dvv4[0], std::logic_error);
}
Ejemplo n.º 15
0
TEST(MetaTraits, DoubleVectorView_false_true) {
  using std::vector;
  using stan::DoubleVectorView;
  using Eigen::Matrix;
  using Eigen::Dynamic;
  using stan::agrad::var;

  var a_var(1);
  std::vector<var> a_std_vector(3);
  Matrix<var,Dynamic,1> a_vector(4);
  Matrix<var,1,Dynamic> a_row_vector(5);

  DoubleVectorView<false,true> dvv1(length(a_var));
  EXPECT_THROW(dvv1[0], std::runtime_error);

  DoubleVectorView<false,true> dvv2(length(a_std_vector));
  EXPECT_THROW(dvv2[0], std::runtime_error);
  
  DoubleVectorView<false,true> dvv3(length(a_vector));
  EXPECT_THROW(dvv3[0], std::runtime_error);
  
  DoubleVectorView<false,true> dvv4(length(a_row_vector));
  EXPECT_THROW(dvv4[0], std::runtime_error);
}
Ejemplo n.º 16
0
TEST(MetaTraits, VectorBuilderHelper_true_false) {
  using std::vector;
  using stan::VectorBuilderHelper;
  using stan::length;

  std::vector<double> a_std_vector(3);

  VectorBuilderHelper<double,true,false> dvv2(length(a_std_vector));
  EXPECT_FLOAT_EQ(0.0, dvv2[0]);
  EXPECT_FLOAT_EQ(0.0, dvv2[1]);
  EXPECT_FLOAT_EQ(0.0, dvv2[2]);  
  double data2(10);
  EXPECT_NO_THROW(data2 = dvv2.data());
  EXPECT_FLOAT_EQ(0.0, data2);
}
Ejemplo n.º 17
0
TEST(ErrorHandlingScalar, checkConsistentSize_nan) {
  using Eigen::Matrix;
  using Eigen::Dynamic;
  using stan::math::check_consistent_size;
  using stan::size_of;

  const char* function = "checkConsistentSize";
  const char* name1 = "name1";
  
  double nan = std::numeric_limits<double>::quiet_NaN();

  Matrix<double,Dynamic,1> v1(4);
  v1 << nan,nan,4,nan;
  EXPECT_EQ(4U, size_of(v1));
  EXPECT_TRUE(check_consistent_size(function, name1, v1, 4U));
  EXPECT_THROW(check_consistent_size(function, name1, v1, 2U), 
               std::invalid_argument);
}
Ejemplo n.º 18
0
TEST(AgradRevErrorHandlingScalar, checkConsistentSize) {
  using Eigen::Matrix;
  using Eigen::Dynamic;
  using stan::math::check_consistent_size;
  using stan::size_of;
  using stan::agrad::var;

  const char* function = "check_consistent_size";
  const char* name1 = "name1";
  

  Matrix<var,Dynamic,1> v1(4);
  v1 << 4.0,5.0,6.0,7.0;
  EXPECT_EQ(4U, size_of(v1));
  EXPECT_TRUE(check_consistent_size(function, name1, v1, 4U));
  EXPECT_THROW(check_consistent_size(function, name1, v1, 2U), std::invalid_argument);
  stan::agrad::recover_memory();
}
Ejemplo n.º 19
0
TEST(MetaTraits, length) {
  using stan::length;
  EXPECT_EQ(1U, length(27.0));
  EXPECT_EQ(1U, length(3));
  std::vector<double> x(10);
  EXPECT_EQ(10U, length(x));

  Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> m(2,3);
  m << 1, 2, 3, 4, 5, 6;
  EXPECT_EQ(6U, length(m));

  Eigen::Matrix<double,Eigen::Dynamic,1> rv(2);
  rv << 1, 2;
  EXPECT_EQ(2U, length(rv));

  Eigen::Matrix<double,1,Eigen::Dynamic> v(2);
  v << 1, 2;
  EXPECT_EQ(2U, length(v));
}