projects
/
pspp-builds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a562c53
)
Reduce number of multiplications for higher moments.
author
Ben Pfaff
<blp@gnu.org>
Mon, 5 Feb 2007 23:43:23 +0000
(23:43 +0000)
committer
Ben Pfaff
<blp@gnu.org>
Mon, 5 Feb 2007 23:43:23 +0000
(23:43 +0000)
src/math/ChangeLog
patch
|
blob
|
history
src/math/moments.c
patch
|
blob
|
history
diff --git
a/src/math/ChangeLog
b/src/math/ChangeLog
index d3db1d0d079b814b6c97a1ccdb5150529ff4f855..e351fbbb4fdd43a0e00ab73fc99bb05387761d95 100644
(file)
--- a/
src/math/ChangeLog
+++ b/
src/math/ChangeLog
@@
-1,3
+1,7
@@
+Mon Feb 5 15:42:14 2007 Ben Pfaff <blp@gnu.org>
+
+ * moments.c (moments_pass_two): Reduce number of multiplications.
+
Thu Dec 7 15:27:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
* factor-stats.c factor-stats.h: Changed independent values to
Thu Dec 7 15:27:49 WST 2006 John Darrington <john@darrington.wattle.id.au>
* factor-stats.c factor-stats.h: Changed independent values to
diff --git
a/src/math/moments.c
b/src/math/moments.c
index 9c40016c24b516adad4e412c485f225762545a0d..17040e9f699335fe91021cb5331ce1f257574ef5 100644
(file)
--- a/
src/math/moments.c
+++ b/
src/math/moments.c
@@
-151,8
+151,6
@@
moments_pass_one (struct moments *m, double value, double weight)
void
moments_pass_two (struct moments *m, double value, double weight)
{
void
moments_pass_two (struct moments *m, double value, double weight)
{
- double d, d_power;
-
assert (m != NULL);
if (m->pass == 1)
assert (m != NULL);
if (m->pass == 1)
@@
-164,28
+162,25
@@
moments_pass_two (struct moments *m, double value, double weight)
if (value != SYSMIS && weight >= 0.)
{
if (value != SYSMIS && weight >= 0.)
{
- m->w2 += weight;
-
- d = d_power = value - m->mean;
- m->d1 += d_power * weight;
-
+ double d = value - m->mean;
+ double d1_delta = d * weight;
+ m->d1 += d1_delta;
if (m->max_moment >= MOMENT_VARIANCE)
{
if (m->max_moment >= MOMENT_VARIANCE)
{
- d_power *= d;
- m->d2 += d_power * weight;
-
+ double d2_delta = d1_delta * d;
+ m->d2 += d2_delta;
if (m->max_moment >= MOMENT_SKEWNESS)
{
if (m->max_moment >= MOMENT_SKEWNESS)
{
- d_power *= d;
- m->d3 += d_power * weight;
-
+ double d3_delta = d2_delta * d;
+ m->d3 += d3_delta;
if (m->max_moment >= MOMENT_KURTOSIS)
{
if (m->max_moment >= MOMENT_KURTOSIS)
{
- d
_power *=
d;
- m->d4 += d
_power * weight
;
+ d
ouble d4_delta = d3_delta *
d;
+ m->d4 += d
4_delta
;
}
}
}
}
}
}
+ m->w2 += weight;
}
}
}
}