本文整理汇总了C++中AVAR::val方法的典型用法代码示例。如果您正苦于以下问题:C++ AVAR::val方法的具体用法?C++ AVAR::val怎么用?C++ AVAR::val使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AVAR
的用法示例。
在下文中一共展示了AVAR::val方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: a
TEST(AgradRev,pow_var_double) {
AVAR a(3.0);
double b = 4.0;
AVAR f = pow(a,b);
EXPECT_FLOAT_EQ(81.0,f.val());
AVEC x = createAVEC(a);
VEC g;
f.grad(x,g);
EXPECT_FLOAT_EQ(4.0 * pow(3.0,4.0-1.0), g[0]);
}
示例2: fmin
TEST(AgradRev,fmin_vd) {
AVAR a = 1.3;
double b = 2.0;
AVAR f = fmin(a,b);
EXPECT_FLOAT_EQ(1.3,f.val());
AVEC x = createAVEC(a);
VEC grad_f;
f.grad(x,grad_f);
EXPECT_FLOAT_EQ(1.0,grad_f[0]);
}
示例3: tanh
TEST(AgradRev,sinh_inf) {
double inf = std::numeric_limits<double>::infinity();
AVAR a = inf;
AVAR f = tanh(a);
EXPECT_FLOAT_EQ(1.0,f.val());
AVEC x = createAVEC(a);
VEC g;
f.grad(x,g);
EXPECT_FLOAT_EQ(1.0/(cosh(inf) * cosh(inf)), g[0]);
}
示例4: createAVEC
TEST(AgradRev,lmgamma) {
using stan::math::lmgamma;
AVAR a = 3.2;
AVAR f = stan::agrad::lmgamma(3,a);
EXPECT_FLOAT_EQ(lmgamma(3,3.2),f.val());
AVEC x = createAVEC(a);
VEC grad_f;
f.grad(x,grad_f);
EXPECT_FLOAT_EQ(4.9138227 / 2.1,grad_f[0]);
}
示例5: v
TEST(AgradRevMatrix,log_determinant_spd) {
using stan::math::matrix_v;
using stan::math::log_determinant_spd;
matrix_v v(2,2);
v << 1, 0, 0, 3;
AVAR det;
det = log_determinant_spd(v);
EXPECT_FLOAT_EQ(std::log(3.0), det.val());
}
示例6: a
TEST(AgradRev, log_falling_factorial_double_var) {
double a(5);
AVAR b(4.0);
AVAR f = stan::agrad::log_falling_factorial(a,b);
EXPECT_FLOAT_EQ(std::log(5.0), f.val());
AVEC x = createAVEC(a,b);
VEC g;
f.grad(x,g);
EXPECT_FLOAT_EQ(0, g[0]);
EXPECT_FLOAT_EQ(-boost::math::digamma(5), g[1]);
}
示例7: abs
TEST(AgradRev,abs_var_3) {
AVAR a = 0.0;
AVAR f = abs(a);
EXPECT_FLOAT_EQ(0.0, f.val());
AVEC x = createAVEC(a);
VEC g;
f.grad(x,g);
EXPECT_EQ(1U,g.size());
EXPECT_FLOAT_EQ(0.0, g[0]);
}
示例8: b
TEST(AgradRev,pow_double_var) {
double a = 3.0;
AVAR b(4.0);
AVAR f = pow(a,b);
EXPECT_FLOAT_EQ(81.0,f.val());
AVEC x = createAVEC(b);
VEC g;
f.grad(x,g);
EXPECT_FLOAT_EQ(log(3.0) * pow(3.0,4.0), g[0]);
}
示例9: b
TEST(AgradRev, log_falling_factorial_var_var) {
AVAR b(4.0);
AVAR c(4.0);
AVAR f = stan::agrad::log_falling_factorial(b,c);
EXPECT_FLOAT_EQ(0.0, f.val());
AVEC x = createAVEC(b,c);
VEC g;
f.grad(x,g);
EXPECT_FLOAT_EQ(boost::math::digamma(5), g[0]);
EXPECT_FLOAT_EQ(-boost::math::digamma(5), g[1]);
}
示例10: a
TEST(AgradRev,a_pluseq_bd) {
AVAR a(5.0);
double b = -1.0;
AVEC x = createAVEC(a);
AVAR f = (a += b);
EXPECT_FLOAT_EQ(4.0,f.val());
EXPECT_FLOAT_EQ(4.0,a.val());
VEC g;
f.grad(x,g);
EXPECT_FLOAT_EQ(1.0,g[0]);
}
示例11: a
TEST(AgradRev, falling_factorial_var_var) {
AVAR a(4.0);
AVAR b(4.0);
AVAR f = stan::math::falling_factorial(a,b);
EXPECT_FLOAT_EQ(1.0, f.val());
AVEC x = createAVEC(a,b);
VEC g;
f.grad(x,g);
EXPECT_FLOAT_EQ(1.0 * boost::math::digamma(5), g[0]);
EXPECT_FLOAT_EQ(boost::math::digamma(5) * -1.0, g[1]);
}
示例12: hypot
TEST(AgradRev,hypot_dv) {
double a = 3.0;
AVAR b = 4.0;
AVAR f = hypot(a,b);
EXPECT_FLOAT_EQ(5.0,f.val());
AVEC x = createAVEC(b);
VEC grad_f;
f.grad(x,grad_f);
// arbitrary, but doc this way
EXPECT_FLOAT_EQ(4.0/5.0,grad_f[0]);
}
示例13: createAVEC
TEST(AgradRev,a_times_b) {
AVAR a = 2.0;
AVAR b = -3.0;
AVAR f = a * b;
EXPECT_FLOAT_EQ(-6.0,f.val());
AVEC x = createAVEC(a,b);
VEC grad_f;
f.grad(x,grad_f);
EXPECT_FLOAT_EQ(-3.0,grad_f[0]);
EXPECT_FLOAT_EQ(2.0,grad_f[1]);
}
示例14: abs
TEST(AgradRev,abs_NaN) {
AVAR a = std::numeric_limits<double>::quiet_NaN();
AVAR f = abs(a);
AVEC x = createAVEC(a);
VEC g;
f.grad(x,g);
EXPECT_TRUE(boost::math::isnan(f.val()));
ASSERT_EQ(1,g.size());
EXPECT_TRUE(boost::math::isnan(g[0]));
}
示例15: createAVEC
TEST(AgradRev,multiply_log_double_var){
double a = 2.2;
AVAR b = 3.3;
AVAR f = multiply_log(a,b);
EXPECT_FLOAT_EQ(2.2*std::log(3.3),f.val()) << "Reasonable values";
AVEC x = createAVEC(b);
VEC g;
f.grad(x,g);
EXPECT_FLOAT_EQ(a/b.val(),g[0]);
a = 0.0;
b = 0.0;
f = multiply_log(a,b);
EXPECT_FLOAT_EQ(0.0,f.val()) << "a and b both 0";
x = createAVEC(b);
g.resize(0);
f.grad(x,g);
EXPECT_FLOAT_EQ(std::numeric_limits<double>::infinity(),g[0]);
}