Module: NuLin::Native
- Defined in:
- lib/nulin.rb,
ext/nulin_native.c
Class Method Summary collapse
- .call(typecode, name, *args) ⇒ Object
- .cgeev(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info) ⇒ Object
- .cgelqf(m, n, a, lda, tau, work, lwork, info) ⇒ Object
- .cgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info) ⇒ Object
- .cgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, rwork, info) ⇒ Object
- .cgemm(transa, transb, n, m, k, alpha, a, lda, b, ldb, beta, c, ldc) ⇒ Object
- .cgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info) ⇒ Object
- .cpotrf(uplo, n, a, lda, info) ⇒ Object
- .cunglq(m, n, k, a, lda, tau, work, lwork, info) ⇒ Object
- .dgeev(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info) ⇒ Object
- .dgelqf(m, n, a, lda, tau, work, lwork, info) ⇒ Object
- .dgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info) ⇒ Object
- .dgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, info) ⇒ Object
- .dgemm(transa, transb, n, m, k, alpha, a, lda, b, ldb, beta, c, ldc) ⇒ Object
- .dgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info) ⇒ Object
- .dorglq(m, n, k, a, lda, tau, work, lwork, info) ⇒ Object
- .dpotrf(uplo, n, a, lda, info) ⇒ Object
- .sgeev(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info) ⇒ Object
- .sgelqf(m, n, a, lda, tau, work, lwork, info) ⇒ Object
- .sgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info) ⇒ Object
- .sgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, info) ⇒ Object
- .sgemm(transa, transb, n, m, k, alpha, a, lda, b, ldb, beta, c, ldc) ⇒ Object
- .sgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info) ⇒ Object
- .sorglq(m, n, k, a, lda, tau, work, lwork, info) ⇒ Object
- .spotrf(uplo, n, a, lda, info) ⇒ Object
- .zgeev(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info) ⇒ Object
- .zgelqf(m, n, a, lda, tau, work, lwork, info) ⇒ Object
- .zgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info) ⇒ Object
- .zgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, rwork, info) ⇒ Object
- .zgemm(transa, transb, n, m, k, alpha, a, lda, b, ldb, beta, c, ldc) ⇒ Object
- .zgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info) ⇒ Object
- .zpotrf(uplo, n, a, lda, info) ⇒ Object
- .zunglq(m, n, k, a, lda, tau, work, lwork, info) ⇒ Object
Class Method Details
.call(typecode, name, *args) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/nulin.rb', line 34 def call(typecode, name, *args) fun_name = LAPACK_PREFIX[typecode] + name retvals = __send__(fun_name, *args) info = retvals ? retvals.last : 0 raise LinalgError, "#{fun_name}: errno #{info}" if info != 0 return retvals end |
.cgeev(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'ext/nulin_native.c', line 84 static VALUE nulin_cgeev(VALUE self,VALUE jobvl,VALUE jobvr,VALUE n,VALUE a,VALUE lda,VALUE w,VALUE vl,VALUE ldvl,VALUE vr,VALUE ldvr,VALUE work,VALUE lwork,VALUE rwork,VALUE info) { char JOBVL = StringValueCStr(jobvl)[0]; char JOBVR = StringValueCStr(jobvr)[0]; integer N = NUM2INT(n); complex* A = NA_PTR_TYPE((nulin_check_narray(a),a), complex*); integer LDA = NUM2INT(lda); complex* W = NA_PTR_TYPE((nulin_check_narray(w),w), complex*); complex* VL = NA_PTR_TYPE((nulin_check_narray(vl),vl), complex*); integer LDVL = NUM2INT(ldvl); complex* VR = NA_PTR_TYPE((nulin_check_narray(vr),vr), complex*); integer LDVR = NUM2INT(ldvr); complex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), complex*); integer LWORK = NUM2INT(lwork); real* RWORK = NA_PTR_TYPE((nulin_check_narray(rwork),rwork), real*); integer INFO = NUM2INT(info); cgeev_(&JOBVL,&JOBVR,&N,A,&LDA,W,VL,&LDVL,VR,&LDVR,WORK,&LWORK,RWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.cgelqf(m, n, a, lda, tau, work, lwork, info) ⇒ Object
236 237 238 239 240 241 242 243 244 245 246 247 248 |
# File 'ext/nulin_native.c', line 236 static VALUE nulin_cgelqf(VALUE self,VALUE m,VALUE n,VALUE a,VALUE lda,VALUE tau,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); complex* A = NA_PTR_TYPE((nulin_check_narray(a),a), complex*); integer LDA = NUM2INT(lda); complex* TAU = NA_PTR_TYPE((nulin_check_narray(tau),tau), complex*); complex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), complex*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); cgelqf_(&M,&N,A,&LDA,TAU,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.cgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info) ⇒ Object
369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 |
# File 'ext/nulin_native.c', line 369 static VALUE nulin_cgels(VALUE self,VALUE trans,VALUE m,VALUE n,VALUE nrhs,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE work,VALUE lwork,VALUE info) { char TRANS = StringValueCStr(trans)[0]; integer M = NUM2INT(m); integer N = NUM2INT(n); integer NRHS = NUM2INT(nrhs); complex* A = NA_PTR_TYPE((nulin_check_narray(a),a), complex*); integer LDA = NUM2INT(lda); complex* B = NA_PTR_TYPE((nulin_check_narray(b),b), complex*); integer LDB = NUM2INT(ldb); complex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), complex*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); cgels_(&TRANS,&M,&N,&NRHS,A,&LDA,B,&LDB,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.cgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, rwork, info) ⇒ Object
448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 |
# File 'ext/nulin_native.c', line 448 static VALUE nulin_cgelss(VALUE self,VALUE m,VALUE n,VALUE nrhs,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE s,VALUE rcond,VALUE rank,VALUE work,VALUE lwork,VALUE rwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); integer NRHS = NUM2INT(nrhs); complex* A = NA_PTR_TYPE((nulin_check_narray(a),a), complex*); integer LDA = NUM2INT(lda); complex* B = NA_PTR_TYPE((nulin_check_narray(b),b), complex*); integer LDB = NUM2INT(ldb); real* S = NA_PTR_TYPE((nulin_check_narray(s),s), real*); real RCOND = NUM2DBL(rcond); integer RANK = NUM2INT(rank); complex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), complex*); integer LWORK = NUM2INT(lwork); real* RWORK = NA_PTR_TYPE((nulin_check_narray(rwork),rwork), real*); integer INFO = NUM2INT(info); cgelss_(&M,&N,&NRHS,A,&LDA,B,&LDB,S,&RCOND,&RANK,WORK,&LWORK,RWORK,&INFO); return rb_ary_new3(2, INT2NUM(RANK),INT2NUM(INFO)); } |
.cgemm(transa, transb, n, m, k, alpha, a, lda, b, ldb, beta, c, ldc) ⇒ Object
577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 |
# File 'ext/nulin_native.c', line 577 static VALUE nulin_cgemm(VALUE self,VALUE transa,VALUE transb,VALUE n,VALUE m,VALUE k,VALUE alpha,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE beta,VALUE c,VALUE ldc) { char TRANSA = StringValueCStr(transa)[0]; char TRANSB = StringValueCStr(transb)[0]; integer N = NUM2INT(n); integer M = NUM2INT(m); integer K = NUM2INT(k); complex ALPHA = COMPLEX_STRUCT(alpha); complex* A = NA_PTR_TYPE((nulin_check_narray(a),a), complex*); integer LDA = NUM2INT(lda); complex* B = NA_PTR_TYPE((nulin_check_narray(b),b), complex*); integer LDB = NUM2INT(ldb); complex BETA = COMPLEX_STRUCT(beta); complex* C = NA_PTR_TYPE((nulin_check_narray(c),c), complex*); integer LDC = NUM2INT(ldc); cgemm_(&TRANSA,&TRANSB,&N,&M,&K,&ALPHA,A,&LDA,B,&LDB,&BETA,C,&LDC); return Qnil; } |
.cgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'ext/nulin_native.c', line 169 static VALUE nulin_cgesvd(VALUE self,VALUE jobu,VALUE jobvt,VALUE m,VALUE n,VALUE a,VALUE lda,VALUE s,VALUE u,VALUE ldu,VALUE vt,VALUE ldvt,VALUE work,VALUE lwork,VALUE rwork,VALUE info) { char JOBU = StringValueCStr(jobu)[0]; char JOBVT = StringValueCStr(jobvt)[0]; integer M = NUM2INT(m); integer N = NUM2INT(n); complex* A = NA_PTR_TYPE((nulin_check_narray(a),a), complex*); integer LDA = NUM2INT(lda); real* S = NA_PTR_TYPE((nulin_check_narray(s),s), real*); complex* U = NA_PTR_TYPE((nulin_check_narray(u),u), complex*); integer LDU = NUM2INT(ldu); complex* VT = NA_PTR_TYPE((nulin_check_narray(vt),vt), complex*); integer LDVT = NUM2INT(ldvt); complex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), complex*); integer LWORK = NUM2INT(lwork); real* RWORK = NA_PTR_TYPE((nulin_check_narray(rwork),rwork), real*); integer INFO = NUM2INT(info); cgesvd_(&JOBU,&JOBVT,&M,&N,A,&LDA,S,U,&LDU,VT,&LDVT,WORK,&LWORK,RWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.cpotrf(uplo, n, a, lda, info) ⇒ Object
505 506 507 508 509 510 511 512 513 514 |
# File 'ext/nulin_native.c', line 505 static VALUE nulin_cpotrf(VALUE self,VALUE uplo,VALUE n,VALUE a,VALUE lda,VALUE info) { char UPLO = StringValueCStr(uplo)[0]; integer N = NUM2INT(n); complex* A = NA_PTR_TYPE((nulin_check_narray(a),a), complex*); integer LDA = NUM2INT(lda); integer INFO = NUM2INT(info); cpotrf_(&UPLO,&N,A,&LDA,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.cunglq(m, n, k, a, lda, tau, work, lwork, info) ⇒ Object
299 300 301 302 303 304 305 306 307 308 309 310 311 312 |
# File 'ext/nulin_native.c', line 299 static VALUE nulin_cunglq(VALUE self,VALUE m,VALUE n,VALUE k,VALUE a,VALUE lda,VALUE tau,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); integer K = NUM2INT(k); complex* A = NA_PTR_TYPE((nulin_check_narray(a),a), complex*); integer LDA = NUM2INT(lda); complex* TAU = NA_PTR_TYPE((nulin_check_narray(tau),tau), complex*); complex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), complex*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); cunglq_(&M,&N,&K,A,&LDA,TAU,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.dgeev(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'ext/nulin_native.c', line 21 static VALUE nulin_dgeev(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); doublereal* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublereal*); integer LDA = NUM2INT(lda); doublereal* WR = NA_PTR_TYPE((nulin_check_narray(wr),wr), doublereal*); doublereal* WI = NA_PTR_TYPE((nulin_check_narray(wi),wi), doublereal*); doublereal* VL = NA_PTR_TYPE((nulin_check_narray(vl),vl), doublereal*); integer LDVL = NUM2INT(ldvl); doublereal* VR = NA_PTR_TYPE((nulin_check_narray(vr),vr), doublereal*); integer LDVR = NUM2INT(ldvr); doublereal* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublereal*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); dgeev_(&JOBVL,&JOBVR,&N,A,&LDA,WR,WI,VL,&LDVL,VR,&LDVR,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.dgelqf(m, n, a, lda, tau, work, lwork, info) ⇒ Object
191 192 193 194 195 196 197 198 199 200 201 202 203 |
# File 'ext/nulin_native.c', line 191 static VALUE nulin_dgelqf(VALUE self,VALUE m,VALUE n,VALUE a,VALUE lda,VALUE tau,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); doublereal* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublereal*); integer LDA = NUM2INT(lda); doublereal* TAU = NA_PTR_TYPE((nulin_check_narray(tau),tau), doublereal*); doublereal* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublereal*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); dgelqf_(&M,&N,A,&LDA,TAU,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.dgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info) ⇒ Object
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 |
# File 'ext/nulin_native.c', line 315 static VALUE nulin_dgels(VALUE self,VALUE trans,VALUE m,VALUE n,VALUE nrhs,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE work,VALUE lwork,VALUE info) { char TRANS = StringValueCStr(trans)[0]; integer M = NUM2INT(m); integer N = NUM2INT(n); integer NRHS = NUM2INT(nrhs); doublereal* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublereal*); integer LDA = NUM2INT(lda); doublereal* B = NA_PTR_TYPE((nulin_check_narray(b),b), doublereal*); integer LDB = NUM2INT(ldb); doublereal* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublereal*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); dgels_(&TRANS,&M,&N,&NRHS,A,&LDA,B,&LDB,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.dgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, info) ⇒ Object
387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 |
# File 'ext/nulin_native.c', line 387 static VALUE nulin_dgelss(VALUE self,VALUE m,VALUE n,VALUE nrhs,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE s,VALUE rcond,VALUE rank,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); integer NRHS = NUM2INT(nrhs); doublereal* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublereal*); integer LDA = NUM2INT(lda); doublereal* B = NA_PTR_TYPE((nulin_check_narray(b),b), doublereal*); integer LDB = NUM2INT(ldb); doublereal* S = NA_PTR_TYPE((nulin_check_narray(s),s), doublereal*); doublereal RCOND = NUM2DBL(rcond); integer RANK = NUM2INT(rank); doublereal* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublereal*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); dgelss_(&M,&N,&NRHS,A,&LDA,B,&LDB,S,&RCOND,&RANK,WORK,&LWORK,&INFO); return rb_ary_new3(2, INT2NUM(RANK),INT2NUM(INFO)); } |
.dgemm(transa, transb, n, m, k, alpha, a, lda, b, ldb, beta, c, ldc) ⇒ Object
517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 |
# File 'ext/nulin_native.c', line 517 static VALUE nulin_dgemm(VALUE self,VALUE transa,VALUE transb,VALUE n,VALUE m,VALUE k,VALUE alpha,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE beta,VALUE c,VALUE ldc) { char TRANSA = StringValueCStr(transa)[0]; char TRANSB = StringValueCStr(transb)[0]; integer N = NUM2INT(n); integer M = NUM2INT(m); integer K = NUM2INT(k); doublereal ALPHA = NUM2DBL(alpha); doublereal* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublereal*); integer LDA = NUM2INT(lda); doublereal* B = NA_PTR_TYPE((nulin_check_narray(b),b), doublereal*); integer LDB = NUM2INT(ldb); doublereal BETA = NUM2DBL(beta); doublereal* C = NA_PTR_TYPE((nulin_check_narray(c),c), doublereal*); integer LDC = NUM2INT(ldc); dgemm_(&TRANSA,&TRANSB,&N,&M,&K,&ALPHA,A,&LDA,B,&LDB,&BETA,C,&LDC); return Qnil; } |
.dgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'ext/nulin_native.c', line 105 static VALUE nulin_dgesvd(VALUE self,VALUE jobu,VALUE jobvt,VALUE m,VALUE n,VALUE a,VALUE lda,VALUE s,VALUE u,VALUE ldu,VALUE vt,VALUE ldvt,VALUE work,VALUE lwork,VALUE info) { char JOBU = StringValueCStr(jobu)[0]; char JOBVT = StringValueCStr(jobvt)[0]; integer M = NUM2INT(m); integer N = NUM2INT(n); doublereal* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublereal*); integer LDA = NUM2INT(lda); doublereal* S = NA_PTR_TYPE((nulin_check_narray(s),s), doublereal*); doublereal* U = NA_PTR_TYPE((nulin_check_narray(u),u), doublereal*); integer LDU = NUM2INT(ldu); doublereal* VT = NA_PTR_TYPE((nulin_check_narray(vt),vt), doublereal*); integer LDVT = NUM2INT(ldvt); doublereal* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublereal*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); dgesvd_(&JOBU,&JOBVT,&M,&N,A,&LDA,S,U,&LDU,VT,&LDVT,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.dorglq(m, n, k, a, lda, tau, work, lwork, info) ⇒ Object
251 252 253 254 255 256 257 258 259 260 261 262 263 264 |
# File 'ext/nulin_native.c', line 251 static VALUE nulin_dorglq(VALUE self,VALUE m,VALUE n,VALUE k,VALUE a,VALUE lda,VALUE tau,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); integer K = NUM2INT(k); doublereal* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublereal*); integer LDA = NUM2INT(lda); doublereal* TAU = NA_PTR_TYPE((nulin_check_narray(tau),tau), doublereal*); doublereal* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublereal*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); dorglq_(&M,&N,&K,A,&LDA,TAU,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.dpotrf(uplo, n, a, lda, info) ⇒ Object
469 470 471 472 473 474 475 476 477 478 |
# File 'ext/nulin_native.c', line 469 static VALUE nulin_dpotrf(VALUE self,VALUE uplo,VALUE n,VALUE a,VALUE lda,VALUE info) { char UPLO = StringValueCStr(uplo)[0]; integer N = NUM2INT(n); doublereal* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublereal*); integer LDA = NUM2INT(lda); integer INFO = NUM2INT(info); dpotrf_(&UPLO,&N,A,&LDA,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.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)); } |
.sgelqf(m, n, a, lda, tau, work, lwork, info) ⇒ Object
206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'ext/nulin_native.c', line 206 static VALUE nulin_sgelqf(VALUE self,VALUE m,VALUE n,VALUE a,VALUE lda,VALUE tau,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); real* A = NA_PTR_TYPE((nulin_check_narray(a),a), real*); integer LDA = NUM2INT(lda); real* TAU = NA_PTR_TYPE((nulin_check_narray(tau),tau), real*); real* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), real*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); sgelqf_(&M,&N,A,&LDA,TAU,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.sgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info) ⇒ Object
333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 |
# File 'ext/nulin_native.c', line 333 static VALUE nulin_sgels(VALUE self,VALUE trans,VALUE m,VALUE n,VALUE nrhs,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE work,VALUE lwork,VALUE info) { char TRANS = StringValueCStr(trans)[0]; integer M = NUM2INT(m); integer N = NUM2INT(n); integer NRHS = NUM2INT(nrhs); real* A = NA_PTR_TYPE((nulin_check_narray(a),a), real*); integer LDA = NUM2INT(lda); real* B = NA_PTR_TYPE((nulin_check_narray(b),b), real*); integer LDB = NUM2INT(ldb); real* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), real*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); sgels_(&TRANS,&M,&N,&NRHS,A,&LDA,B,&LDB,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.sgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, info) ⇒ Object
407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 |
# File 'ext/nulin_native.c', line 407 static VALUE nulin_sgelss(VALUE self,VALUE m,VALUE n,VALUE nrhs,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE s,VALUE rcond,VALUE rank,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); integer NRHS = NUM2INT(nrhs); real* A = NA_PTR_TYPE((nulin_check_narray(a),a), real*); integer LDA = NUM2INT(lda); real* B = NA_PTR_TYPE((nulin_check_narray(b),b), real*); integer LDB = NUM2INT(ldb); real* S = NA_PTR_TYPE((nulin_check_narray(s),s), real*); real RCOND = NUM2DBL(rcond); integer RANK = NUM2INT(rank); real* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), real*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); sgelss_(&M,&N,&NRHS,A,&LDA,B,&LDB,S,&RCOND,&RANK,WORK,&LWORK,&INFO); return rb_ary_new3(2, INT2NUM(RANK),INT2NUM(INFO)); } |
.sgemm(transa, transb, n, m, k, alpha, a, lda, b, ldb, beta, c, ldc) ⇒ Object
537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 |
# File 'ext/nulin_native.c', line 537 static VALUE nulin_sgemm(VALUE self,VALUE transa,VALUE transb,VALUE n,VALUE m,VALUE k,VALUE alpha,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE beta,VALUE c,VALUE ldc) { char TRANSA = StringValueCStr(transa)[0]; char TRANSB = StringValueCStr(transb)[0]; integer N = NUM2INT(n); integer M = NUM2INT(m); integer K = NUM2INT(k); real ALPHA = NUM2DBL(alpha); real* A = NA_PTR_TYPE((nulin_check_narray(a),a), real*); integer LDA = NUM2INT(lda); real* B = NA_PTR_TYPE((nulin_check_narray(b),b), real*); integer LDB = NUM2INT(ldb); real BETA = NUM2DBL(beta); real* C = NA_PTR_TYPE((nulin_check_narray(c),c), real*); integer LDC = NUM2INT(ldc); sgemm_(&TRANSA,&TRANSB,&N,&M,&K,&ALPHA,A,&LDA,B,&LDB,&BETA,C,&LDC); return Qnil; } |
.sgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info) ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'ext/nulin_native.c', line 126 static VALUE nulin_sgesvd(VALUE self,VALUE jobu,VALUE jobvt,VALUE m,VALUE n,VALUE a,VALUE lda,VALUE s,VALUE u,VALUE ldu,VALUE vt,VALUE ldvt,VALUE work,VALUE lwork,VALUE info) { char JOBU = StringValueCStr(jobu)[0]; char JOBVT = StringValueCStr(jobvt)[0]; integer M = NUM2INT(m); integer N = NUM2INT(n); real* A = NA_PTR_TYPE((nulin_check_narray(a),a), real*); integer LDA = NUM2INT(lda); real* S = NA_PTR_TYPE((nulin_check_narray(s),s), real*); real* U = NA_PTR_TYPE((nulin_check_narray(u),u), real*); integer LDU = NUM2INT(ldu); real* VT = NA_PTR_TYPE((nulin_check_narray(vt),vt), real*); integer LDVT = NUM2INT(ldvt); real* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), real*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); sgesvd_(&JOBU,&JOBVT,&M,&N,A,&LDA,S,U,&LDU,VT,&LDVT,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.sorglq(m, n, k, a, lda, tau, work, lwork, info) ⇒ Object
267 268 269 270 271 272 273 274 275 276 277 278 279 280 |
# File 'ext/nulin_native.c', line 267 static VALUE nulin_sorglq(VALUE self,VALUE m,VALUE n,VALUE k,VALUE a,VALUE lda,VALUE tau,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); integer K = NUM2INT(k); real* A = NA_PTR_TYPE((nulin_check_narray(a),a), real*); integer LDA = NUM2INT(lda); real* TAU = NA_PTR_TYPE((nulin_check_narray(tau),tau), real*); real* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), real*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); sorglq_(&M,&N,&K,A,&LDA,TAU,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.spotrf(uplo, n, a, lda, info) ⇒ Object
481 482 483 484 485 486 487 488 489 490 |
# File 'ext/nulin_native.c', line 481 static VALUE nulin_spotrf(VALUE self,VALUE uplo,VALUE n,VALUE a,VALUE lda,VALUE info) { char UPLO = StringValueCStr(uplo)[0]; integer N = NUM2INT(n); real* A = NA_PTR_TYPE((nulin_check_narray(a),a), real*); integer LDA = NUM2INT(lda); integer INFO = NUM2INT(info); spotrf_(&UPLO,&N,A,&LDA,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.zgeev(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'ext/nulin_native.c', line 63 static VALUE nulin_zgeev(VALUE self,VALUE jobvl,VALUE jobvr,VALUE n,VALUE a,VALUE lda,VALUE w,VALUE vl,VALUE ldvl,VALUE vr,VALUE ldvr,VALUE work,VALUE lwork,VALUE rwork,VALUE info) { char JOBVL = StringValueCStr(jobvl)[0]; char JOBVR = StringValueCStr(jobvr)[0]; integer N = NUM2INT(n); doublecomplex* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublecomplex*); integer LDA = NUM2INT(lda); doublecomplex* W = NA_PTR_TYPE((nulin_check_narray(w),w), doublecomplex*); doublecomplex* VL = NA_PTR_TYPE((nulin_check_narray(vl),vl), doublecomplex*); integer LDVL = NUM2INT(ldvl); doublecomplex* VR = NA_PTR_TYPE((nulin_check_narray(vr),vr), doublecomplex*); integer LDVR = NUM2INT(ldvr); doublecomplex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublecomplex*); integer LWORK = NUM2INT(lwork); doublereal* RWORK = NA_PTR_TYPE((nulin_check_narray(rwork),rwork), doublereal*); integer INFO = NUM2INT(info); zgeev_(&JOBVL,&JOBVR,&N,A,&LDA,W,VL,&LDVL,VR,&LDVR,WORK,&LWORK,RWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.zgelqf(m, n, a, lda, tau, work, lwork, info) ⇒ Object
221 222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'ext/nulin_native.c', line 221 static VALUE nulin_zgelqf(VALUE self,VALUE m,VALUE n,VALUE a,VALUE lda,VALUE tau,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); doublecomplex* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublecomplex*); integer LDA = NUM2INT(lda); doublecomplex* TAU = NA_PTR_TYPE((nulin_check_narray(tau),tau), doublecomplex*); doublecomplex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublecomplex*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); zgelqf_(&M,&N,A,&LDA,TAU,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.zgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info) ⇒ Object
351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 |
# File 'ext/nulin_native.c', line 351 static VALUE nulin_zgels(VALUE self,VALUE trans,VALUE m,VALUE n,VALUE nrhs,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE work,VALUE lwork,VALUE info) { char TRANS = StringValueCStr(trans)[0]; integer M = NUM2INT(m); integer N = NUM2INT(n); integer NRHS = NUM2INT(nrhs); doublecomplex* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublecomplex*); integer LDA = NUM2INT(lda); doublecomplex* B = NA_PTR_TYPE((nulin_check_narray(b),b), doublecomplex*); integer LDB = NUM2INT(ldb); doublecomplex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublecomplex*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); zgels_(&TRANS,&M,&N,&NRHS,A,&LDA,B,&LDB,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.zgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, rwork, info) ⇒ Object
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 |
# File 'ext/nulin_native.c', line 427 static VALUE nulin_zgelss(VALUE self,VALUE m,VALUE n,VALUE nrhs,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE s,VALUE rcond,VALUE rank,VALUE work,VALUE lwork,VALUE rwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); integer NRHS = NUM2INT(nrhs); doublecomplex* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublecomplex*); integer LDA = NUM2INT(lda); doublecomplex* B = NA_PTR_TYPE((nulin_check_narray(b),b), doublecomplex*); integer LDB = NUM2INT(ldb); doublereal* S = NA_PTR_TYPE((nulin_check_narray(s),s), doublereal*); doublereal RCOND = NUM2DBL(rcond); integer RANK = NUM2INT(rank); doublecomplex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublecomplex*); integer LWORK = NUM2INT(lwork); doublereal* RWORK = NA_PTR_TYPE((nulin_check_narray(rwork),rwork), doublereal*); integer INFO = NUM2INT(info); zgelss_(&M,&N,&NRHS,A,&LDA,B,&LDB,S,&RCOND,&RANK,WORK,&LWORK,RWORK,&INFO); return rb_ary_new3(2, INT2NUM(RANK),INT2NUM(INFO)); } |
.zgemm(transa, transb, n, m, k, alpha, a, lda, b, ldb, beta, c, ldc) ⇒ Object
557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 |
# File 'ext/nulin_native.c', line 557 static VALUE nulin_zgemm(VALUE self,VALUE transa,VALUE transb,VALUE n,VALUE m,VALUE k,VALUE alpha,VALUE a,VALUE lda,VALUE b,VALUE ldb,VALUE beta,VALUE c,VALUE ldc) { char TRANSA = StringValueCStr(transa)[0]; char TRANSB = StringValueCStr(transb)[0]; integer N = NUM2INT(n); integer M = NUM2INT(m); integer K = NUM2INT(k); doublecomplex ALPHA = COMPLEX_STRUCT(alpha); doublecomplex* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublecomplex*); integer LDA = NUM2INT(lda); doublecomplex* B = NA_PTR_TYPE((nulin_check_narray(b),b), doublecomplex*); integer LDB = NUM2INT(ldb); doublecomplex BETA = COMPLEX_STRUCT(beta); doublecomplex* C = NA_PTR_TYPE((nulin_check_narray(c),c), doublecomplex*); integer LDC = NUM2INT(ldc); zgemm_(&TRANSA,&TRANSB,&N,&M,&K,&ALPHA,A,&LDA,B,&LDB,&BETA,C,&LDC); return Qnil; } |
.zgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'ext/nulin_native.c', line 147 static VALUE nulin_zgesvd(VALUE self,VALUE jobu,VALUE jobvt,VALUE m,VALUE n,VALUE a,VALUE lda,VALUE s,VALUE u,VALUE ldu,VALUE vt,VALUE ldvt,VALUE work,VALUE lwork,VALUE rwork,VALUE info) { char JOBU = StringValueCStr(jobu)[0]; char JOBVT = StringValueCStr(jobvt)[0]; integer M = NUM2INT(m); integer N = NUM2INT(n); doublecomplex* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublecomplex*); integer LDA = NUM2INT(lda); doublereal* S = NA_PTR_TYPE((nulin_check_narray(s),s), doublereal*); doublecomplex* U = NA_PTR_TYPE((nulin_check_narray(u),u), doublecomplex*); integer LDU = NUM2INT(ldu); doublecomplex* VT = NA_PTR_TYPE((nulin_check_narray(vt),vt), doublecomplex*); integer LDVT = NUM2INT(ldvt); doublecomplex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublecomplex*); integer LWORK = NUM2INT(lwork); doublereal* RWORK = NA_PTR_TYPE((nulin_check_narray(rwork),rwork), doublereal*); integer INFO = NUM2INT(info); zgesvd_(&JOBU,&JOBVT,&M,&N,A,&LDA,S,U,&LDU,VT,&LDVT,WORK,&LWORK,RWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.zpotrf(uplo, n, a, lda, info) ⇒ Object
493 494 495 496 497 498 499 500 501 502 |
# File 'ext/nulin_native.c', line 493 static VALUE nulin_zpotrf(VALUE self,VALUE uplo,VALUE n,VALUE a,VALUE lda,VALUE info) { char UPLO = StringValueCStr(uplo)[0]; integer N = NUM2INT(n); doublecomplex* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublecomplex*); integer LDA = NUM2INT(lda); integer INFO = NUM2INT(info); zpotrf_(&UPLO,&N,A,&LDA,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |
.zunglq(m, n, k, a, lda, tau, work, lwork, info) ⇒ Object
283 284 285 286 287 288 289 290 291 292 293 294 295 296 |
# File 'ext/nulin_native.c', line 283 static VALUE nulin_zunglq(VALUE self,VALUE m,VALUE n,VALUE k,VALUE a,VALUE lda,VALUE tau,VALUE work,VALUE lwork,VALUE info) { integer M = NUM2INT(m); integer N = NUM2INT(n); integer K = NUM2INT(k); doublecomplex* A = NA_PTR_TYPE((nulin_check_narray(a),a), doublecomplex*); integer LDA = NUM2INT(lda); doublecomplex* TAU = NA_PTR_TYPE((nulin_check_narray(tau),tau), doublecomplex*); doublecomplex* WORK = NA_PTR_TYPE((nulin_check_narray(work),work), doublecomplex*); integer LWORK = NUM2INT(lwork); integer INFO = NUM2INT(info); zunglq_(&M,&N,&K,A,&LDA,TAU,WORK,&LWORK,&INFO); return rb_ary_new3(1, INT2NUM(INFO)); } |