summaryrefslogtreecommitdiff
path: root/lib/Numeric/GSL/gsl-aux.c
diff options
context:
space:
mode:
authorVivian McPhail <haskell.vivian.mcphail@gmail.com>2010-09-05 02:05:17 +0000
committerVivian McPhail <haskell.vivian.mcphail@gmail.com>2010-09-05 02:05:17 +0000
commitb59a56c22f7e4aa518046c41e049e5bf1cdf8204 (patch)
treecb31cb60b39a3376ab4bcc0a746c4f19817e674b /lib/Numeric/GSL/gsl-aux.c
parentbadf588ae2940df6f4ce144f31e90e8973f144a4 (diff)
add vector Product to Vectors
Diffstat (limited to 'lib/Numeric/GSL/gsl-aux.c')
-rw-r--r--lib/Numeric/GSL/gsl-aux.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/Numeric/GSL/gsl-aux.c b/lib/Numeric/GSL/gsl-aux.c
index 689989d..3e9e2cb 100644
--- a/lib/Numeric/GSL/gsl-aux.c
+++ b/lib/Numeric/GSL/gsl-aux.c
@@ -153,6 +153,56 @@ int sumC(KCVEC(x),CVEC(r)) {
153 OK 153 OK
154} 154}
155 155
156int prodF(KFVEC(x),FVEC(r)) {
157 DEBUGMSG("prodF");
158 REQUIRES(rn==1,BAD_SIZE);
159 int i;
160 float res = 0;
161 for (i = 0; i < xn; i++) res *= xp[i];
162 rp[0] = res;
163 OK
164}
165
166int prodR(KRVEC(x),RVEC(r)) {
167 DEBUGMSG("prodR");
168 REQUIRES(rn==1,BAD_SIZE);
169 int i;
170 double res = 0;
171 for (i = 0; i < xn; i++) res *= xp[i];
172 rp[0] = res;
173 OK
174}
175
176int prodQ(KQVEC(x),QVEC(r)) {
177 DEBUGMSG("prodQ");
178 REQUIRES(rn==1,BAD_SIZE);
179 int i;
180 gsl_complex_float res;
181 res.dat[0] = 0;
182 res.dat[1] = 0;
183 for (i = 0; i < xn; i++) {
184 res.dat[0] = res.dat[0] * xp[i].dat[0] - res.dat[1] * xp[i].dat[1];
185 res.dat[1] = res.dat[0] * xp[i].dat[1] + res.dat[1] * xp[i].dat[0];
186 }
187 rp[0] = res;
188 OK
189}
190
191int prodC(KCVEC(x),CVEC(r)) {
192 DEBUGMSG("prodC");
193 REQUIRES(rn==1,BAD_SIZE);
194 int i;
195 gsl_complex res;
196 res.dat[0] = 0;
197 res.dat[1] = 0;
198 for (i = 0; i < xn; i++) {
199 res.dat[0] = res.dat[0] * xp[i].dat[0] - res.dat[1] * xp[i].dat[1];
200 res.dat[1] = res.dat[0] * xp[i].dat[1] + res.dat[1] * xp[i].dat[0];
201 }
202 rp[0] = res;
203 OK
204}
205
156int dotF(KFVEC(x), KFVEC(y), FVEC(r)) { 206int dotF(KFVEC(x), KFVEC(y), FVEC(r)) {
157 DEBUGMSG("dotF"); 207 DEBUGMSG("dotF");
158 REQUIRES(xn==yn,BAD_SIZE); 208 REQUIRES(xn==yn,BAD_SIZE);