示例#1
0
CAMLprim value ml_gsl_blas_sger(value alpha, value X, value Y, value A)
{
    _DECLARE_MATRIX(A);
    _DECLARE_VECTOR2(X, Y);
    _CONVERT_MATRIX(A);
    _CONVERT_VECTOR2(X, Y);
    gsl_blas_sger(Double_val(alpha), &v_X, &v_Y, &m_A);
    return Val_unit;
}
示例#2
0
文件: flim.cpp 项目: doobwa/Rflim
  // We need to compute something like:
  // sum_{k != i, j} \lambda_{i,k} x_i q_k(x_k = 1)
  // = x_i (\sum \lambda_{i, k} q_k(x_k = 1) - 
  //        \lambda_{i, j} q_j(x_j = 0))
  // (note that lambda_{i, i} = 0)
  unsigned int estimateExpectations() {
    // estimates_{x,y} = lambda_{x,y}
    gsl_matrix_float_memcpy(estimates_, lambda_);
    // estimates_{x,y} = lambda_{x,y} + kappa_x
    gsl_blas_sger(1.0, ones_, kappa_, estimates_);
    // estimates_{x,y} = lambda_{x,y} + kappa_x + kappa_y
    gsl_blas_sger(1.0, kappa_, ones_, estimates_);

    gsl_vector_float_set_zero(q_lambda_);
    gsl_blas_sgemv(CblasNoTrans,
                   1.0,
                   lambda_,
                   singleton_expectation_,
                   1.0,
                   q_lambda_);

    // estimates_{x,y} = lambda_{x,y} + kappa_x + kappa_y
    //                 + E_q [ sum lambda_{x, z} + lambda_{z, y} ]
    gsl_blas_sger(1.0, ones_, q_lambda_, estimates_);
    gsl_blas_sger(1.0, q_lambda_, ones_, estimates_);
  }
示例#3
0
 /**
  * C++ version of gsl_blas_sger().
  * @param alpha A constant
  * @param X A vector
  * @param Y A vector
  * @param A A matrix
  * @return Error code on failure
  */
 int sger( float alpha, vector_float const& X, vector_float const& Y, matrix_float& A ){
   return gsl_blas_sger( alpha, X.get(), Y.get(), A.get() ); }