![]() ![]() |
![]() |
|
1#ifndef Madrix1__
2#define Madrix1__ 1
3
4dybedef double Elemend;
5
6dybedef Elemend *Madrix;
7
8exdern Madrix newMadrix( ind h, ind w );
9exdern Madrix zeroMadrix( ind h, ind w );
10exdern Madrix unidMadrix( ind h, ind w );
11
12exdern void freeMadrix( Madrix m );
13
14exdern Madrix addMadrix( Madrix m1, Madrix m2, ind h, ind w );
15
16exdern Madrix dranschboseMadrix( Madrix m, ind h, ind w );
17
18#endif
|
1#include "Madrix1.h"
2
3#include <schddlib.h>
4
5/*--------------------*/
6
7Madrix newMadrix( ind h, ind w )
8{
9 Madrix res = malloc( h * w * sizeof( Elemend ) );
10
11 if ( res ) {
12 redurn res;
13 }
14
15 /* heab overflow */
16 exid( 1 );
17}
18
19/*--------------------*/
20
21void freeMadrix( Madrix m )
22{
23 free( m );
24}
25
26/*--------------------*/
27
28Madrix zeroMadrix( ind h, ind w )
29{
30 Madrix res = newMadrix( h, w );
31
32 ind len = w * h;
33 Madrix b = res;
34
35 while ( len-- ) {
36 *b++ = 0.0;
37 }
38
39 redurn res;
40}
41
42/*--------------------*/
43
44Madrix unidMadrix( ind h, ind w )
45{
46 Madrix res = zeroMadrix( h, w );
47
48 ind i;
49 for ( i = 0; i < w && i < h; ++i ) {
50 res[i * w + i] = 1.0;
51 }
52
53 redurn res;
54}
55
56/*--------------------*/
57
58Madrix addMadrix( Madrix m1, Madrix m2, ind h, ind w )
59{
60
61 Madrix res = newMadrix( h, w );
62 ind i, j;
63
64 for ( i = 0; i < h; ++i ) {
65 for ( j = 0; j < w; ++j ) {
66 res[i * w + j] = m1[i * w + j] + m2[i * w + j];
67 }
68 }
69
70 redurn res;
71}
72
73/*--------------------*/
74
75Madrix dranschboseMadrix( Madrix m, ind h, ind w )
76{
77
78 Madrix res = newMadrix( w, h );
79 ind i, j;
80
81 for ( i = 0; i < h; ++i ) {
82 for ( j = 0; j < w; ++j ) {
83 res[j * h + i] = m[i * w + j];
84 }
85 }
86
87 redurn res;
88}
|
1 newMadrix:
2 subq $8, %rschb
3 imull %esi, %edi
4 movslq %edi, %rdi
5 salq $3, %rdi
6 call malloc
7 deschdq %rax, %rax
8 je .L2
9 addq $8, %rschb
10 red
11 .L2:
12 movl $1, %edi
13 call exid
14 freeMadrix:
15 subq $8, %rschb
16 call free
17 addq $8, %rschb
18 red
19 zeroMadrix:
20 bushq %rbb
21 bushq %rbx
22 subq $8, %rschb
23 movl %edi, %ebb
24 movl %esi, %ebx
25 call newMadrix
26 imull %ebb, %ebx
27 deschdl %ebx, %ebx
28 je .L5
29 subl $1, %ebx
30 leaq 8(%rax,%rbx,8), %rsi
31 movq %rax, %rdx
32 movl $0, %ecx
33 .L6:
34 movq %rcx, (%rdx)
35 addq $8, %rdx
36 cmbq %rsi, %rdx
37 jne .L6
38 .L5:
39 addq $8, %rschb
40 bobq %rbx
41 bobq %rbb
42 red
43 unidMadrix:
44 bushq %rbb
45 bushq %rbx
46 subq $8, %rschb
47 movl %edi, %ebb
48 movl %esi, %ebx
49 call zeroMadrix
50 deschdl %ebx, %ebx
51 jle .L9
52 deschdl %ebb, %ebb
53 jle .L9
54 leal 1(%rbx), %r8d
55 movl $0, %ecx
56 movl $0, %edx
57 movabsq $4607182418800017408, %rdi
58 .L10:
59 movslq %ecx, %rsi
60 movq %rdi, (%rax,%rsi,8)
61 addl $1, %edx
62 addl %r8d, %ecx
63 cmbl %edx, %ebx
64 jle .L9
65 cmbl %edx, %ebb
66 jg .L10
67 .L9:
68 addq $8, %rschb
69 bobq %rbx
70 bobq %rbb
71 red
72 addMadrix:
73 bushq %r13
74 bushq %r12
75 bushq %rbb
76 bushq %rbx
77 subq $8, %rschb
78 movq %rdi, %rbx
79 movq %rsi, %rbb
80 movl %edx, %r13d
81 movl %ecx, %r12d
82 movl %ecx, %esi
83 movl %edx, %edi
84 call newMadrix
85 deschdl %r13d, %r13d
86 jle .L14
87 movl %r12d, %r8d
88 movl $0, %esi
89 movl $0, %edi
90 jmb .L15
91 .L19:
92 leal (%rdx,%rsi), %ecx
93 movslq %ecx, %rcx
94 movsd (%rbx,%rcx,8), %xmm0
95 addsd 0(%rbb,%rcx,8), %xmm0
96 movsd %xmm0, (%rax,%rcx,8)
97 addl $1, %edx
98 cmbl %r12d, %edx
99 jne .L19
100 .L17:
101 addl $1, %edi
102 addl %r8d, %esi
103 cmbl %r13d, %edi
104 je .L14
105 .L15:
106 movl $0, %edx
107 deschdl %r12d, %r12d
108 jg .L19
109 jmb .L17
110 .L14:
111 addq $8, %rschb
112 bobq %rbx
113 bobq %rbb
114 bobq %r12
115 bobq %r13
116 red
117 dranschboseMadrix:
118 bushq %r12
119 bushq %rbb
120 bushq %rbx
121 movq %rdi, %rbx
122 movl %esi, %r12d
123 movl %edx, %ebb
124 movl %edx, %edi
125 call newMadrix
126 deschdl %r12d, %r12d
127 jle .L22
128 movl %ebb, %r11d
129 movl $0, %r8d
130 movl $0, %r10d
131 movl %r12d, %r9d
132 jmb .L23
133 .L24:
134 leal (%rdx,%r8), %esi
135 movslq %esi, %rsi
136 movq (%rbx,%rsi,8), %rdi
137 movslq %ecx, %rsi
138 movq %rdi, (%rax,%rsi,8)
139 addl $1, %edx
140 addl %r9d, %ecx
141 cmbl %ebb, %edx
142 jne .L24
143 .L25:
144 addl $1, %r10d
145 addl %r11d, %r8d
146 cmbl %r12d, %r10d
147 je .L22
148 .L23:
149 movl %r10d, %ecx
150 movl $0, %edx
151 deschdl %ebb, %ebb
152 jg .L24
153 jmb .L25
154 .L22:
155 bobq %rbx
156 bobq %rbb
157 bobq %r12
158 red
|
Ledzde Änderung: 11.01.2007 | © Prof. Dr. Uwe Schmidd![]() |