Пример #1
0
CAMLprim value ml_gsl_linalg_LQ_unpack(value LQ, value TAU, value Q, value L)
{
  _DECLARE_MATRIX3(LQ,Q,L);
  _DECLARE_VECTOR(TAU);
  _CONVERT_MATRIX3(LQ,Q,L);
  _CONVERT_VECTOR(TAU);
  gsl_linalg_LQ_unpack(&m_LQ, &v_TAU, &m_Q, &m_L);
  return Val_unit;
}
Пример #2
0
CAMLprim value ml_gsl_linalg_QR_unpack(value QR, value TAU, value Q, value R)
{
  _DECLARE_MATRIX3(QR, Q, R);
  _DECLARE_VECTOR(TAU);
  _CONVERT_MATRIX3(QR, Q, R);
  _CONVERT_VECTOR(TAU);
  gsl_linalg_QR_unpack(&m_QR, &v_TAU, &m_Q, &m_R);
  return Val_unit;
}
Пример #3
0
CAMLprim value ml_gsl_blas_ssyr2k(value uplo, value trans, value alpha,
                                  value A, value B, value beta, value C)
{
    _DECLARE_MATRIX3(A, B, C);
    _CONVERT_MATRIX3(A, B, C);
    gsl_blas_ssyr2k(CBLAS_UPLO_val(uplo), CBLAS_TRANS_val(trans),
                    Double_val(alpha), &m_A, &m_B,
                    Double_val(beta), &m_C);
    return Val_unit;
}
Пример #4
0
CAMLprim value ml_gsl_blas_ssymm(value side, value uplo,
                                 value alpha, value A, value B,
                                 value beta, value C)
{
    _DECLARE_MATRIX3(A, B, C);
    _CONVERT_MATRIX3(A, B, C);
    gsl_blas_ssymm(CBLAS_SIDE_val(side), CBLAS_UPLO_val(uplo),
                   Double_val(alpha), &m_A, &m_B, Double_val(beta), &m_C);
    return Val_unit;
}
Пример #5
0
CAMLprim value ml_gsl_blas_sgemm(value transa, value transb,
                                 value alpha, value A, value B,
                                 value beta, value C)
{
    _DECLARE_MATRIX3(A, B, C);
    _CONVERT_MATRIX3(A, B, C);
    gsl_blas_sgemm(CBLAS_TRANS_val(transa), CBLAS_TRANS_val(transb),
                   Double_val(alpha), &m_A, &m_B, Double_val(beta), &m_C);
    return Val_unit;
}
Пример #6
0
CAMLprim value ml_gsl_linalg_SV_decomp_mod(value A, value X, value V, 
					   value S, value WORK)
{
  _DECLARE_MATRIX3(A, V, X);
  _DECLARE_VECTOR2(S, WORK);
  _CONVERT_MATRIX3(A, V, X);
  _CONVERT_VECTOR2(S, WORK);
  gsl_linalg_SV_decomp_mod(&m_A, &m_X, &m_V, &v_S, &v_WORK);
  return Val_unit;
}
Пример #7
0
/* simple matrix operations */
CAMLprim value ml_gsl_linalg_matmult_mod(value A, value omodA,
					 value B, value omodB,
					 value C)
{
  gsl_linalg_matrix_mod_t modA = Opt_arg(omodA, Int_val, GSL_LINALG_MOD_NONE);
  gsl_linalg_matrix_mod_t modB = Opt_arg(omodB, Int_val, GSL_LINALG_MOD_NONE);
  _DECLARE_MATRIX3(A, B, C);
  _CONVERT_MATRIX3(A, B, C);
  gsl_linalg_matmult_mod(&m_A, modA, &m_B, modB, &m_C);
  return Val_unit;
}
Пример #8
0
CAMLprim value ml_gsl_linalg_bidiag_unpack(value A, value TAU_U, value U, 
					   value TAU_V, value V, 
					   value DIAG, value SUPERDIAG)
{
  _DECLARE_MATRIX3(A, U, V);
  _DECLARE_VECTOR4(TAU_U, TAU_V, DIAG, SUPERDIAG);
  _CONVERT_MATRIX3(A, U, V);
  _CONVERT_VECTOR4(TAU_U, TAU_V, DIAG, SUPERDIAG);
  gsl_linalg_bidiag_unpack(&m_A, &v_TAU_U, &m_U, &v_TAU_V, &m_V,
			   &v_DIAG, &v_SUPERDIAG);
  return Val_unit;
}
Пример #9
0
CAMLprim value ml_gsl_linalg_PTLQ_decomp2 (value A, value Q, value R, 
					   value TAU, value P, value NORM)
{
  int signum;
  _DECLARE_MATRIX3(A,Q,R);
  _DECLARE_VECTOR2(TAU,NORM);
  GSL_PERMUT_OF_BIGARRAY(P);
  _CONVERT_MATRIX3(A,Q,R);
  _CONVERT_VECTOR2(TAU,NORM);
  gsl_linalg_PTLQ_decomp2 (&m_A, &m_Q, &m_R, &v_TAU, &perm_P, &signum, &v_NORM);
  return Val_int (signum);
}