1+ package org.jetbrains.kotlinx.multik.jni.linalg
2+
3+ import org.jetbrains.kotlinx.multik.api.mk
4+ import org.jetbrains.kotlinx.multik.api.ndarray
5+ import org.jetbrains.kotlinx.multik.jni.Loader
6+ import org.jetbrains.kotlinx.multik.jni.NativeLinAlg
7+ import kotlin.test.BeforeTest
8+ import kotlin.test.Test
9+ import kotlin.test.assertEquals
10+
11+ class NativeLinAlgTest {
12+
13+ @BeforeTest
14+ fun load () {
15+ Loader (" multik_jni" ).manualLoad()
16+ }
17+
18+ @Test
19+ fun `matrix-matrix dot test D` () {
20+ val expected = mk.ndarray(
21+ mk[mk[1.0718999999999999 , 0.6181 , 0.46080000000000004 , 0.48109999999999997 ],
22+ mk[0.8210999999999999 , 0.7162 , 0.79 , 0.8199 ],
23+ mk[0.5287999999999999 , 0.48339999999999994 , 0.5342 , 0.5082 ],
24+ mk[1.0353 , 0.758 , 0.7114 , 0.6647 ]]
25+ )
26+ val matrix1 = mk.ndarray(
27+ mk[mk[0.22 , 0.9 , 0.27 ],
28+ mk[0.97 , 0.18 , 0.59 ],
29+ mk[0.29 , 0.13 , 0.59 ],
30+ mk[0.08 , 0.63 , 0.8 ]]
31+ )
32+ val matrix2 = mk.ndarray(
33+ mk[mk[0.36 , 0.31 , 0.36 , 0.44 ],
34+ mk[0.95 , 0.44 , 0.22 , 0.25 ],
35+ mk[0.51 , 0.57 , 0.68 , 0.59 ]]
36+ )
37+
38+ val actual = NativeLinAlg .dot(matrix1, matrix2)
39+ assertEquals(expected, actual)
40+ }
41+
42+ @Test
43+ fun `matrix-matrix dot test F` () {
44+ val expected = mk.ndarray(
45+ mk[mk[1.0719f , 0.6181f , 0.4608f , 0.4811f ],
46+ mk[0.8211f , 0.7162f , 0.79f , 0.8199f ],
47+ mk[0.52879995f , 0.48339996f , 0.5342f , 0.5082f ],
48+ mk[1.0353f , 0.758f , 0.71140003f , 0.6647f ]]
49+ )
50+ val matrix1 = mk.ndarray(
51+ mk[mk[0.22f , 0.9f , 0.27f ],
52+ mk[0.97f , 0.18f , 0.59f ],
53+ mk[0.29f , 0.13f , 0.59f ],
54+ mk[0.08f , 0.63f , 0.8f ]]
55+ )
56+ val matrix2 = mk.ndarray(
57+ mk[mk[0.36f , 0.31f , 0.36f , 0.44f ],
58+ mk[0.95f , 0.44f , 0.22f , 0.25f ],
59+ mk[0.51f , 0.57f , 0.68f , 0.59f ]]
60+ )
61+
62+ val actual = NativeLinAlg .dot(matrix1, matrix2)
63+ assertEquals(expected, actual)
64+ }
65+
66+ @Test
67+ fun `matrix-vector dot test D` () {
68+ val expected = mk.ndarray(mk[0.8006 , 0.663 , 0.5771 ])
69+
70+ val matrix = mk.ndarray(
71+ mk[mk[0.22 , 0.9 , 0.27 ],
72+ mk[0.97 , 0.18 , 0.59 ],
73+ mk[0.29 , 0.13 , 0.59 ]]
74+ )
75+ val vector = mk.ndarray(mk[0.08 , 0.63 , 0.8 ])
76+
77+ val actual = NativeLinAlg .dot(matrix, vector)
78+ assertEquals(expected, actual)
79+ }
80+
81+ @Test
82+ fun `matrix-vector dot test F` () {
83+ val expected = mk.ndarray(mk[0.8006f , 0.663f , 0.5771f ])
84+
85+ val matrix = mk.ndarray(
86+ mk[mk[0.22f , 0.9f , 0.27f ],
87+ mk[0.97f , 0.18f , 0.59f ],
88+ mk[0.29f , 0.13f , 0.59f ]]
89+ )
90+ val vector = mk.ndarray(mk[0.08f , 0.63f , 0.8f ])
91+
92+ val actual = NativeLinAlg .dot(matrix, vector)
93+ assertEquals(expected, actual)
94+ }
95+ }
0 commit comments