From 76cbb192f4abdd5f5c280cee964357c64364c783 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Wed, 25 Nov 2009 16:19:05 +0100 Subject: Introduce integr_sim --- src/statistics.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/statistics.c (limited to 'src/statistics.c') diff --git a/src/statistics.c b/src/statistics.c new file mode 100644 index 00000000..adadf907 --- /dev/null +++ b/src/statistics.c @@ -0,0 +1,67 @@ +/* + * statistics.c + * + * Structure-factor statistics + * + * (c) 2007-2009 Thomas White + * + * integr_sim - Test relrod integration + * + */ + + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + + +/* By what (best-fitted) factor must the list "list" be multiplied by, + * if it were to be merged with "target"? */ +double stat_scale_intensity(double *obs, double *calc, unsigned int *c, + int size) +{ + double top = 0.0; + double bot = 0.0; + int i; + + for ( i=0; i 0 ) { + double obsi; + obsi = obs[i] / (double)c[i]; + top += obsi * calc[i]; + bot += calc[i] * calc[i]; + } /* else reflection not measured so don't worry about it */ + + } + + return top/bot; +} + + +double stat_r2(double *obs, double *calc, unsigned int *c, int size, + double *scalep) +{ + double top = 0.0; + double bot = 0.0; + double scale; + int i; + scale = stat_scale_intensity(obs, calc, c, size); + *scalep = scale; + + for ( i=0; i 0 ) { + double obsi; + obsi = obs[i] / (double)c[i]; + top += fabs(obsi/scale - calc[i]); + bot += obsi/scale; + } + + } /* else reflection not measured so don't worry about it */ + + return top/bot; +} -- cgit v1.2.3