Source file eigen_spmat_c.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
open Ctypes
open Eigen_types.SPMAT_C
let create ?(reserve=0.01) m n =
let s = max 1024 (float_of_int (m * n) *. reserve |> int_of_float) in
let x = ml_eigen_new (Int64.of_int s) (Int64.of_int m) (Int64.of_int n) in
Gc.finalise ml_eigen_delete x;
x
let delete x = ml_eigen_delete x
let eye m = ml_eigen_eye (Int64.of_int m)
let rows x = ml_eigen_rows x |> Int64.to_int
let cols x = ml_eigen_cols x |> Int64.to_int
let nnz x = ml_eigen_nnz x |> Int64.to_int
let get x i j = ml_eigen_get x (Int64.of_int i) (Int64.of_int j)
let set x i j a = ml_eigen_set x (Int64.of_int i) (Int64.of_int j) a
let insert x i j a = ml_eigen_insert x (Int64.of_int i) (Int64.of_int j) a
let reset x = ml_eigen_reset x
let is_compressed x = ml_eigen_is_compressed x = 1
let compress x = ml_eigen_compress x
let uncompress x = ml_eigen_uncompress x
let reshape x m n = ml_eigen_reshape x (Int64.of_int m) (Int64.of_int n)
let prune x r e = ml_eigen_prune x r e
let valueptr x =
let l = allocate int64_t (Signed.Int64.of_int 0) in
let raw = ml_eigen_valueptr x l in
let l = Signed.Int64.to_int !@l in
bigarray_of_ptr array1 l Bigarray.complex32 raw
let innerindexptr x =
let raw = ml_eigen_innerindexptr x in
bigarray_of_ptr array1 (nnz x) Bigarray.int64 raw
let outerindexptr x =
let raw = ml_eigen_outerindexptr x in
bigarray_of_ptr array1 (rows x + 1) Bigarray.int64 raw
let clone x = ml_eigen_clone x
let row x i = ml_eigen_row x (Int64.of_int i)
let col x i = ml_eigen_col x (Int64.of_int i)
let transpose x = ml_eigen_transpose x
let adjoint x = ml_eigen_adjoint x
let diagonal x = ml_eigen_diagonal x
let trace x = ml_eigen_trace x
let is_zero x = ml_eigen_is_zero x = 1
let is_positive x = ml_eigen_is_positive x = 1
let is_negative x = ml_eigen_is_negative x = 1
let is_nonpositive x = ml_eigen_is_nonpositive x = 1
let is_nonnegative x = ml_eigen_is_nonnegative x = 1
let is_equal x y = ml_eigen_is_equal x y = 1
let is_unequal x y = ml_eigen_is_unequal x y = 1
let is_greater x y = ml_eigen_is_greater x y = 1
let is_smaller x y = ml_eigen_is_smaller x y = 1
let equal_or_greater x y = ml_eigen_equal_or_greater x y = 1
let equal_or_smaller x y = ml_eigen_equal_or_smaller x y = 1
let add x y = ml_eigen_add x y
let sub x y = ml_eigen_sub x y
let mul x y = ml_eigen_mul x y
let div x y = ml_eigen_div x y
let gemm x y = ml_eigen_gemm x y
let add_scalar x a = ml_eigen_add_scalar x a
let sub_scalar x a = ml_eigen_sub_scalar x a
let mul_scalar x a = ml_eigen_mul_scalar x a
let div_scalar x a = ml_eigen_div_scalar x a
let sum x = ml_eigen_sum x
let neg x = ml_eigen_neg x
let sqrt x = ml_eigen_sqrt x
let print x = ml_eigen_print x