Method: NuLin::Native.sgeev

Defined in:
ext/nulin_native.c

.sgeev(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'ext/nulin_native.c', line 42

static VALUE nulin_sgeev(VALUE self,VALUE jobvl,VALUE jobvr,VALUE n,VALUE a,VALUE lda,VALUE wr,VALUE wi,VALUE vl,VALUE ldvl,VALUE vr,VALUE ldvr,VALUE work,VALUE lwork,VALUE info)
{
  char JOBVL = StringValueCStr(jobvl)[0];
  char JOBVR = StringValueCStr(jobvr)[0];
  integer N = NUM2INT(n);
  real* A = NA_PTR_TYPE((nulin_check_narray(a),a), real*);
  integer LDA = NUM2INT(lda);
  real* WR = NA_PTR_TYPE((nulin_check_narray(wr),wr), real*);
  real* WI = NA_PTR_TYPE((nulin_check_narray(wi),wi), real*);
  real* VL = NA_PTR_TYPE((nulin_check_narray(vl),vl), real*);
  integer LDVL = NUM2INT(ldvl);
  real* VR = NA_PTR_TYPE((nulin_check_narray(vr),vr), real*);
  integer LDVR = NUM2INT(ldvr);
  real* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), real*);
  integer LWORK = NUM2INT(lwork);
  integer INFO = NUM2INT(info);
  sgeev_(&JOBVL,&JOBVR,&N,A,&LDA,WR,WI,VL,&LDVL,VR,&LDVR,WORK,&LWORK,&INFO);
  return rb_ary_new3(1, INT2NUM(INFO));
}