numo-linalg-alt 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +47 -5
  4. data/ext/numo/linalg/blas/blas_common.h +30 -0
  5. data/ext/numo/linalg/blas/blas_util.c +39 -0
  6. data/ext/numo/linalg/blas/blas_util.h +11 -0
  7. data/ext/numo/linalg/{converter.h → blas/converter.h} +0 -2
  8. data/ext/numo/linalg/blas/dot.c +1 -1
  9. data/ext/numo/linalg/blas/dot.h +1 -6
  10. data/ext/numo/linalg/blas/dot_sub.c +1 -1
  11. data/ext/numo/linalg/blas/dot_sub.h +1 -6
  12. data/ext/numo/linalg/blas/gemm.c +21 -21
  13. data/ext/numo/linalg/blas/gemm.h +3 -9
  14. data/ext/numo/linalg/blas/gemv.c +10 -10
  15. data/ext/numo/linalg/blas/gemv.h +3 -9
  16. data/ext/numo/linalg/blas/nrm2.c +1 -1
  17. data/ext/numo/linalg/blas/nrm2.h +1 -6
  18. data/ext/numo/linalg/extconf.rb +33 -6
  19. data/ext/numo/linalg/lapack/gebal.h +1 -1
  20. data/ext/numo/linalg/lapack/gees.c +4 -4
  21. data/ext/numo/linalg/lapack/gees.h +1 -1
  22. data/ext/numo/linalg/lapack/geev.c +8 -24
  23. data/ext/numo/linalg/lapack/geev.h +1 -1
  24. data/ext/numo/linalg/lapack/gehrd.h +1 -1
  25. data/ext/numo/linalg/lapack/gelsd.h +1 -1
  26. data/ext/numo/linalg/lapack/geqrf.h +1 -1
  27. data/ext/numo/linalg/lapack/gerqf.h +1 -1
  28. data/ext/numo/linalg/lapack/gesdd.h +1 -1
  29. data/ext/numo/linalg/lapack/gesv.h +1 -1
  30. data/ext/numo/linalg/lapack/gesvd.h +1 -1
  31. data/ext/numo/linalg/lapack/getrf.h +1 -1
  32. data/ext/numo/linalg/lapack/getri.h +1 -1
  33. data/ext/numo/linalg/lapack/getrs.h +1 -1
  34. data/ext/numo/linalg/lapack/gges.c +4 -4
  35. data/ext/numo/linalg/lapack/gges.h +1 -1
  36. data/ext/numo/linalg/lapack/heev.c +1 -1
  37. data/ext/numo/linalg/lapack/heev.h +1 -1
  38. data/ext/numo/linalg/lapack/heevd.c +1 -1
  39. data/ext/numo/linalg/lapack/heevd.h +1 -1
  40. data/ext/numo/linalg/lapack/heevr.c +1 -1
  41. data/ext/numo/linalg/lapack/heevr.h +1 -1
  42. data/ext/numo/linalg/lapack/hegv.c +1 -1
  43. data/ext/numo/linalg/lapack/hegv.h +1 -1
  44. data/ext/numo/linalg/lapack/hegvd.c +1 -1
  45. data/ext/numo/linalg/lapack/hegvd.h +1 -1
  46. data/ext/numo/linalg/lapack/hegvx.c +1 -1
  47. data/ext/numo/linalg/lapack/hegvx.h +1 -1
  48. data/ext/numo/linalg/lapack/hetrf.h +1 -1
  49. data/ext/numo/linalg/lapack/lange.h +1 -1
  50. data/ext/numo/linalg/lapack/lapack_util.c +57 -0
  51. data/ext/numo/linalg/lapack/lapack_util.h +27 -0
  52. data/ext/numo/linalg/lapack/orghr.h +1 -1
  53. data/ext/numo/linalg/lapack/orgqr.h +1 -1
  54. data/ext/numo/linalg/lapack/orgrq.h +1 -1
  55. data/ext/numo/linalg/lapack/potrf.h +1 -1
  56. data/ext/numo/linalg/lapack/potri.h +1 -1
  57. data/ext/numo/linalg/lapack/potrs.h +1 -1
  58. data/ext/numo/linalg/lapack/syev.c +1 -1
  59. data/ext/numo/linalg/lapack/syev.h +1 -1
  60. data/ext/numo/linalg/lapack/syevd.c +1 -1
  61. data/ext/numo/linalg/lapack/syevd.h +1 -1
  62. data/ext/numo/linalg/lapack/syevr.c +1 -1
  63. data/ext/numo/linalg/lapack/syevr.h +1 -1
  64. data/ext/numo/linalg/lapack/sygv.c +1 -1
  65. data/ext/numo/linalg/lapack/sygv.h +1 -1
  66. data/ext/numo/linalg/lapack/sygvd.c +1 -1
  67. data/ext/numo/linalg/lapack/sygvd.h +1 -1
  68. data/ext/numo/linalg/lapack/sygvx.c +1 -1
  69. data/ext/numo/linalg/lapack/sygvx.h +1 -1
  70. data/ext/numo/linalg/lapack/sytrf.h +1 -1
  71. data/ext/numo/linalg/lapack/trtrs.h +1 -1
  72. data/ext/numo/linalg/lapack/unghr.h +1 -1
  73. data/ext/numo/linalg/lapack/ungqr.h +1 -1
  74. data/ext/numo/linalg/lapack/ungrq.h +1 -1
  75. data/ext/numo/linalg/linalg.c +2 -0
  76. data/ext/numo/linalg/linalg.h +14 -6
  77. data/lib/numo/linalg/version.rb +1 -1
  78. data/lib/numo/linalg.rb +68 -20
  79. metadata +9 -6
  80. data/ext/numo/linalg/util.c +0 -103
  81. data/ext/numo/linalg/util.h +0 -18
  82. /data/ext/numo/linalg/{converter.c → blas/converter.c} +0 -0
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_gehrd(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_gelsd(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_geqrf(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_gerqf(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_gesdd(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_gesv(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_gesvd(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_getrf(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_getri(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_getrs(VALUE mLapack);
14
14
 
@@ -49,8 +49,8 @@
49
49
  rb_get_kwargs(kw_args, kw_table, 0, 4, kw_values); \
50
50
  const int matrix_layout = \
51
51
  kw_values[0] != Qundef ? get_matrix_layout(kw_values[0]) : LAPACK_ROW_MAJOR; \
52
- const char jobvsl = kw_values[1] != Qundef ? get_jobvs(kw_values[1]) : 'V'; \
53
- const char jobvsr = kw_values[2] != Qundef ? get_jobvs(kw_values[2]) : 'V'; \
52
+ const char jobvsl = kw_values[1] != Qundef ? get_job(kw_values[1], "jobvsl") : 'V'; \
53
+ const char jobvsr = kw_values[2] != Qundef ? get_job(kw_values[2], "jobvsr") : 'V'; \
54
54
  \
55
55
  if (CLASS_OF(a_vnary) != tNAryClass) { \
56
56
  a_vnary = rb_funcall(tNAryClass, rb_intern("cast"), 1, a_vnary); \
@@ -141,8 +141,8 @@
141
141
  rb_get_kwargs(kw_args, kw_table, 0, 4, kw_values); \
142
142
  const int matrix_layout = \
143
143
  kw_values[0] != Qundef ? get_matrix_layout(kw_values[0]) : LAPACK_ROW_MAJOR; \
144
- const char jobvsl = kw_values[1] != Qundef ? get_jobvs(kw_values[1]) : 'V'; \
145
- const char jobvsr = kw_values[2] != Qundef ? get_jobvs(kw_values[1]) : 'V'; \
144
+ const char jobvsl = kw_values[1] != Qundef ? get_job(kw_values[1], "jobvsl") : 'V'; \
145
+ const char jobvsr = kw_values[2] != Qundef ? get_job(kw_values[2], "jobvsr") : 'V'; \
146
146
  \
147
147
  if (CLASS_OF(a_vnary) != tNAryClass) { \
148
148
  a_vnary = rb_funcall(tNAryClass, rb_intern("cast"), 1, a_vnary); \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_gges(VALUE mLapack);
14
14
 
@@ -26,7 +26,7 @@ struct _heev_option {
26
26
  ID kw_table[3] = { rb_intern("jobz"), rb_intern("uplo"), rb_intern("order") }; \
27
27
  VALUE kw_values[3] = { Qundef, Qundef, Qundef }; \
28
28
  rb_get_kwargs(kw_args, kw_table, 0, 3, kw_values); \
29
- const char jobz = kw_values[0] != Qundef ? get_jobz(kw_values[0]) : 'V'; \
29
+ const char jobz = kw_values[0] != Qundef ? get_job(kw_values[0], "jobz") : 'V'; \
30
30
  const char uplo = kw_values[1] != Qundef ? get_uplo(kw_values[1]) : 'U'; \
31
31
  const int matrix_layout = \
32
32
  kw_values[2] != Qundef ? get_matrix_layout(kw_values[2]) : LAPACK_ROW_MAJOR; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_heev(VALUE mLapack);
14
14
 
@@ -26,7 +26,7 @@ struct _heevd_option {
26
26
  ID kw_table[3] = { rb_intern("jobz"), rb_intern("uplo"), rb_intern("order") }; \
27
27
  VALUE kw_values[3] = { Qundef, Qundef, Qundef }; \
28
28
  rb_get_kwargs(kw_args, kw_table, 0, 3, kw_values); \
29
- const char jobz = kw_values[0] != Qundef ? get_jobz(kw_values[0]) : 'V'; \
29
+ const char jobz = kw_values[0] != Qundef ? get_job(kw_values[0], "jobz") : 'V'; \
30
30
  const char uplo = kw_values[1] != Qundef ? get_uplo(kw_values[1]) : 'U'; \
31
31
  const int matrix_layout = \
32
32
  kw_values[2] != Qundef ? get_matrix_layout(kw_values[2]) : LAPACK_ROW_MAJOR; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_heevd(VALUE mLapack);
14
14
 
@@ -40,7 +40,7 @@
40
40
  rb_intern("iu"), rb_intern("order") }; \
41
41
  VALUE kw_values[8] = { Qundef, Qundef, Qundef, Qundef, Qundef, Qundef, Qundef, Qundef }; \
42
42
  rb_get_kwargs(kw_args, kw_table, 0, 8, kw_values); \
43
- const char jobz = kw_values[0] != Qundef ? get_jobz(kw_values[0]) : 'V'; \
43
+ const char jobz = kw_values[0] != Qundef ? get_job(kw_values[0], "jobz") : 'V'; \
44
44
  const char range = kw_values[1] != Qundef ? get_range(kw_values[1]) : 'A'; \
45
45
  const char uplo = kw_values[2] != Qundef ? get_uplo(kw_values[2]) : 'U'; \
46
46
  const tRtDType vl = kw_values[3] != Qundef ? NUM2DBL(kw_values[3]) : 0.0; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_heevr(VALUE mLapack);
14
14
 
@@ -33,7 +33,7 @@ struct _hegv_option {
33
33
  VALUE kw_values[4] = { Qundef, Qundef, Qundef, Qundef }; \
34
34
  rb_get_kwargs(kw_args, kw_table, 0, 4, kw_values); \
35
35
  const lapack_int itype = kw_values[0] != Qundef ? get_itype(kw_values[0]) : 1; \
36
- const char jobz = kw_values[1] != Qundef ? get_jobz(kw_values[1]) : 'V'; \
36
+ const char jobz = kw_values[1] != Qundef ? get_job(kw_values[1], "jobz") : 'V'; \
37
37
  const char uplo = kw_values[2] != Qundef ? get_uplo(kw_values[2]) : 'U'; \
38
38
  const int matrix_layout = \
39
39
  kw_values[3] != Qundef ? get_matrix_layout(kw_values[3]) : LAPACK_ROW_MAJOR; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_hegv(VALUE mLapack);
14
14
 
@@ -33,7 +33,7 @@ struct _hegvd_option {
33
33
  VALUE kw_values[4] = { Qundef, Qundef, Qundef, Qundef }; \
34
34
  rb_get_kwargs(kw_args, kw_table, 0, 4, kw_values); \
35
35
  const lapack_int itype = kw_values[0] != Qundef ? get_itype(kw_values[0]) : 1; \
36
- const char jobz = kw_values[1] != Qundef ? get_jobz(kw_values[1]) : 'V'; \
36
+ const char jobz = kw_values[1] != Qundef ? get_job(kw_values[1], "jobz") : 'V'; \
37
37
  const char uplo = kw_values[2] != Qundef ? get_uplo(kw_values[2]) : 'U'; \
38
38
  const int matrix_layout = \
39
39
  kw_values[3] != Qundef ? get_matrix_layout(kw_values[3]) : LAPACK_ROW_MAJOR; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_hegvd(VALUE mLapack);
14
14
 
@@ -46,7 +46,7 @@
46
46
  Qundef, Qundef, Qundef, Qundef }; \
47
47
  rb_get_kwargs(kw_args, kw_table, 0, 9, kw_values); \
48
48
  const lapack_int itype = kw_values[0] != Qundef ? get_itype(kw_values[0]) : 1; \
49
- const char jobz = kw_values[1] != Qundef ? get_jobz(kw_values[1]) : 'V'; \
49
+ const char jobz = kw_values[1] != Qundef ? get_job(kw_values[1], "jobz") : 'V'; \
50
50
  const char range = kw_values[2] != Qundef ? get_range(kw_values[2]) : 'A'; \
51
51
  const char uplo = kw_values[3] != Qundef ? get_uplo(kw_values[3]) : 'U'; \
52
52
  const tRtDType vl = kw_values[4] != Qundef ? NUM2DBL(kw_values[4]) : 0.0; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_hegvx(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_hetrf(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_lange(VALUE mLapack);
14
14
 
@@ -0,0 +1,57 @@
1
+ #include "lapack_util.h"
2
+
3
+ lapack_int get_itype(VALUE val) {
4
+ const lapack_int itype = NUM2INT(val);
5
+
6
+ if (itype != 1 && itype != 2 && itype != 3) {
7
+ rb_raise(rb_eArgError, "itype must be 1, 2 or 3");
8
+ }
9
+
10
+ return itype;
11
+ }
12
+
13
+ char get_job(VALUE val, const char* param_name) {
14
+ const char job = NUM2CHR(val);
15
+
16
+ if (job != 'N' && job != 'V') {
17
+ rb_raise(rb_eArgError, "%s must be 'N' or 'V'", param_name);
18
+ }
19
+
20
+ return job;
21
+ }
22
+
23
+ char get_range(VALUE val) {
24
+ const char range = NUM2CHR(val);
25
+
26
+ if (range != 'A' && range != 'V' && range != 'I') {
27
+ rb_raise(rb_eArgError, "range must be 'A', 'V' or 'I'");
28
+ }
29
+
30
+ return range;
31
+ }
32
+
33
+ char get_uplo(VALUE val) {
34
+ const char uplo = NUM2CHR(val);
35
+
36
+ if (uplo != 'U' && uplo != 'L') {
37
+ rb_raise(rb_eArgError, "uplo must be 'U' or 'L'");
38
+ }
39
+
40
+ return uplo;
41
+ }
42
+
43
+ int get_matrix_layout(VALUE val) {
44
+ const char option = NUM2CHR(val);
45
+
46
+ switch (option) {
47
+ case 'r':
48
+ case 'R':
49
+ break;
50
+ case 'c':
51
+ case 'C':
52
+ rb_warn("Numo::Linalg does not support column major.");
53
+ break;
54
+ }
55
+
56
+ return LAPACK_ROW_MAJOR;
57
+ }
@@ -0,0 +1,27 @@
1
+ #ifndef NUMO_LINALG_ALT_LAPACK_UTIL_H
2
+ #define NUMO_LINALG_ALT_LAPACK_UTIL_H 1
3
+
4
+ #include <ruby.h>
5
+
6
+ #include <lapacke.h>
7
+
8
+ #ifndef lapack_complex_float_real
9
+ #define lapack_complex_float_real(z) ((z).real)
10
+ #endif
11
+ #ifndef lapack_complex_float_imag
12
+ #define lapack_complex_float_imag(z) ((z).imag)
13
+ #endif
14
+ #ifndef lapack_complex_double_real
15
+ #define lapack_complex_double_real(z) ((z).real)
16
+ #endif
17
+ #ifndef lapack_complex_double_imag
18
+ #define lapack_complex_double_imag(z) ((z).imag)
19
+ #endif
20
+
21
+ lapack_int get_itype(VALUE val);
22
+ char get_job(VALUE val, const char* param_name);
23
+ char get_range(VALUE val);
24
+ char get_uplo(VALUE val);
25
+ int get_matrix_layout(VALUE val);
26
+
27
+ #endif // NUMO_LINALG_ALT_LAPACK_UTIL_H
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_orghr(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_orgqr(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_orgrq(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_potrf(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_potri(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_potrs(VALUE mLapack);
14
14
 
@@ -26,7 +26,7 @@ struct _syev_option {
26
26
  ID kw_table[3] = { rb_intern("jobz"), rb_intern("uplo"), rb_intern("order") }; \
27
27
  VALUE kw_values[3] = { Qundef, Qundef, Qundef }; \
28
28
  rb_get_kwargs(kw_args, kw_table, 0, 3, kw_values); \
29
- const char jobz = kw_values[0] != Qundef ? get_jobz(kw_values[0]) : 'V'; \
29
+ const char jobz = kw_values[0] != Qundef ? get_job(kw_values[0], "jobz") : 'V'; \
30
30
  const char uplo = kw_values[1] != Qundef ? get_uplo(kw_values[1]) : 'U'; \
31
31
  const int matrix_layout = \
32
32
  kw_values[2] != Qundef ? get_matrix_layout(kw_values[2]) : LAPACK_ROW_MAJOR; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_syev(VALUE mLapack);
14
14
 
@@ -26,7 +26,7 @@ struct _syevd_option {
26
26
  ID kw_table[3] = { rb_intern("jobz"), rb_intern("uplo"), rb_intern("order") }; \
27
27
  VALUE kw_values[3] = { Qundef, Qundef, Qundef }; \
28
28
  rb_get_kwargs(kw_args, kw_table, 0, 3, kw_values); \
29
- const char jobz = kw_values[0] != Qundef ? get_jobz(kw_values[0]) : 'V'; \
29
+ const char jobz = kw_values[0] != Qundef ? get_job(kw_values[0], "jobz") : 'V'; \
30
30
  const char uplo = kw_values[1] != Qundef ? get_uplo(kw_values[1]) : 'U'; \
31
31
  const int matrix_layout = \
32
32
  kw_values[2] != Qundef ? get_matrix_layout(kw_values[2]) : LAPACK_ROW_MAJOR; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_syevd(VALUE mLapack);
14
14
 
@@ -40,7 +40,7 @@
40
40
  rb_intern("iu"), rb_intern("order") }; \
41
41
  VALUE kw_values[8] = { Qundef, Qundef, Qundef, Qundef, Qundef, Qundef, Qundef, Qundef }; \
42
42
  rb_get_kwargs(kw_args, kw_table, 0, 8, kw_values); \
43
- const char jobz = kw_values[0] != Qundef ? get_jobz(kw_values[0]) : 'V'; \
43
+ const char jobz = kw_values[0] != Qundef ? get_job(kw_values[0], "jobz") : 'V'; \
44
44
  const char range = kw_values[1] != Qundef ? get_range(kw_values[1]) : 'A'; \
45
45
  const char uplo = kw_values[2] != Qundef ? get_uplo(kw_values[2]) : 'U'; \
46
46
  const tDType vl = kw_values[3] != Qundef ? NUM2DBL(kw_values[3]) : 0.0; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_syevr(VALUE mLapack);
14
14
 
@@ -33,7 +33,7 @@ struct _sygv_option {
33
33
  VALUE kw_values[4] = { Qundef, Qundef, Qundef, Qundef }; \
34
34
  rb_get_kwargs(kw_args, kw_table, 0, 4, kw_values); \
35
35
  const lapack_int itype = kw_values[0] != Qundef ? get_itype(kw_values[0]) : 1; \
36
- const char jobz = kw_values[1] != Qundef ? get_jobz(kw_values[1]) : 'V'; \
36
+ const char jobz = kw_values[1] != Qundef ? get_job(kw_values[1], "jobz") : 'V'; \
37
37
  const char uplo = kw_values[2] != Qundef ? get_uplo(kw_values[2]) : 'U'; \
38
38
  const int matrix_layout = \
39
39
  kw_values[3] != Qundef ? get_matrix_layout(kw_values[3]) : LAPACK_ROW_MAJOR; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_sygv(VALUE mLapack);
14
14
 
@@ -33,7 +33,7 @@ struct _sygvd_option {
33
33
  VALUE kw_values[4] = { Qundef, Qundef, Qundef, Qundef }; \
34
34
  rb_get_kwargs(kw_args, kw_table, 0, 4, kw_values); \
35
35
  const lapack_int itype = kw_values[0] != Qundef ? get_itype(kw_values[0]) : 1; \
36
- const char jobz = kw_values[1] != Qundef ? get_jobz(kw_values[1]) : 'V'; \
36
+ const char jobz = kw_values[1] != Qundef ? get_job(kw_values[1], "jobz") : 'V'; \
37
37
  const char uplo = kw_values[2] != Qundef ? get_uplo(kw_values[2]) : 'U'; \
38
38
  const int matrix_layout = \
39
39
  kw_values[3] != Qundef ? get_matrix_layout(kw_values[3]) : LAPACK_ROW_MAJOR; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_sygvd(VALUE mLapack);
14
14
 
@@ -46,7 +46,7 @@
46
46
  Qundef, Qundef, Qundef, Qundef }; \
47
47
  rb_get_kwargs(kw_args, kw_table, 0, 9, kw_values); \
48
48
  const lapack_int itype = kw_values[0] != Qundef ? get_itype(kw_values[0]) : 1; \
49
- const char jobz = kw_values[1] != Qundef ? get_jobz(kw_values[1]) : 'V'; \
49
+ const char jobz = kw_values[1] != Qundef ? get_job(kw_values[1], "jobz") : 'V'; \
50
50
  const char range = kw_values[2] != Qundef ? get_range(kw_values[2]) : 'A'; \
51
51
  const char uplo = kw_values[3] != Qundef ? get_uplo(kw_values[3]) : 'U'; \
52
52
  const tDType vl = kw_values[4] != Qundef ? NUM2DBL(kw_values[4]) : 0.0; \
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_sygvx(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_sytrf(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_trtrs(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_unghr(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_ungqr(VALUE mLapack);
14
14
 
@@ -8,7 +8,7 @@
8
8
  #include <numo/narray.h>
9
9
  #include <numo/template.h>
10
10
 
11
- #include "../util.h"
11
+ #include "lapack_util.h"
12
12
 
13
13
  void define_linalg_lapack_ungrq(VALUE mLapack);
14
14
 
@@ -224,8 +224,10 @@ void Init_linalg(void) {
224
224
  */
225
225
  rb_mLinalgLapack = rb_define_module_under(rb_mLinalg, "Lapack");
226
226
 
227
+ #ifdef HAVE_OPENBLAS_CONFIG_H
227
228
  /* The version of OpenBLAS used in background library. */
228
229
  rb_define_const(rb_mLinalg, "OPENBLAS_VERSION", rb_str_new_cstr(OPENBLAS_VERSION));
230
+ #endif
229
231
 
230
232
  /**
231
233
  * Returns BLAS char ([sdcz]) defined by data-type of arguments.