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
|
/* 疎行列のテスト用コード */
#include <stdio.h>
#include <anthy/dic.h>
#include <anthy/diclib.h>
#include <anthy/matrix.h>
static void
change_endian(struct matrix_image *im)
{
int i;
for (i = 0; i < im->size; i++) {
im->image[i] = anthy_dic_htonl(im->image[i]);
}
}
static void
zero_matrix(void)
{
struct sparse_matrix *m;
struct matrix_image *mi;
int *im, e;
m = anthy_sparse_matrix_new();
anthy_sparse_matrix_make_matrix(m);
mi = anthy_matrix_image_new(m);
change_endian(mi);
im = mi->image;
e = anthy_matrix_image_peek(im, 0, 0);
printf("zero matrix: size=%d (0,0)=%d\n", mi->size, e);
}
static void
dense_matrix(void)
{
int i, j, fail;
struct sparse_matrix *m;
struct matrix_image *mi;
int *im, e;
m = anthy_sparse_matrix_new();
for (i = 0; i < 100; i++) {
for (j = 0; j < 100; j++) {
anthy_sparse_matrix_set(m, i, j, i + j, NULL);
}
}
anthy_sparse_matrix_make_matrix(m);
mi = anthy_matrix_image_new(m);
change_endian(mi);
im = mi->image;
fail = 0;
for (i = 0; i < 100; i++) {
for (j = 0; j < 100; j++) {
e = anthy_matrix_image_peek(im, i, j);
if (e != i+j) {
printf("image(%d,%d) == %d != %d\n", i,j,e,i+j);
fail ++;
}
e = anthy_sparse_matrix_get_int(m, i, j);
if (e != i+j) {
printf("origin(%d,%d) == %d != %d\n", i,j,e,i+j);
fail ++;
}
}
}
printf("%d errors in desnse matrix\n", fail);
}
int
main(int argc, char **argv)
{
(void)argc;
(void)argv;
zero_matrix();
dense_matrix();
return 0;
}
|