aboutsummaryrefslogtreecommitdiff
path: root/src/linreg.c
diff options
context:
space:
mode:
authordrowe67 <[email protected]>2023-07-14 12:36:50 +0930
committerDavid Rowe <[email protected]>2023-07-14 12:36:50 +0930
commitb86e88413d4c6ec428aaedb147f7675f28882fe4 (patch)
treece360925856e25d4343d59a37e2e6bac142d3752 /src/linreg.c
parent0c2e969cfbe85548801eeb20ad8113969604892a (diff)
clang-format -i applied to src unittest misc
Diffstat (limited to 'src/linreg.c')
-rw-r--r--src/linreg.c87
1 files changed, 41 insertions, 46 deletions
diff --git a/src/linreg.c b/src/linreg.c
index f37634d..4e985df 100644
--- a/src/linreg.c
+++ b/src/linreg.c
@@ -34,73 +34,68 @@
along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
+#include "linreg.h"
+
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
-#include <math.h>
-#include "linreg.h"
#include "comp_prim.h"
+void linreg(COMP *m, COMP *b, float x[], COMP y[], int n) {
+ float sumx = 0.0; /* sum of x */
+ float sumx2 = 0.0; /* sum of x^2 */
+ COMP sumxy = {0.0, 0.0}; /* sum of x * y */
+ COMP sumy = {0.0, 0.0}; /* sum of y */
+ COMP sumy2 = {0.0, 0.0}; /* sum of y**2 */
+ float denom;
+ COMP zero;
+ int i;
+
+ for (i = 0; i < n; i++) {
+ sumx += x[i];
+ sumx2 += x[i] * x[i];
+ sumxy = cadd(sumxy, fcmult(x[i], y[i]));
+ sumy = cadd(sumy, y[i]);
+ sumy2 = cadd(sumy2, cmult(y[i], y[i]));
+ }
-void linreg(COMP *m, COMP *b, float x[], COMP y[], int n)
-{
- float sumx = 0.0; /* sum of x */
- float sumx2 = 0.0; /* sum of x^2 */
- COMP sumxy = {0.0,0.0}; /* sum of x * y */
- COMP sumy = {0.0,0.0}; /* sum of y */
- COMP sumy2 = {0.0,0.0}; /* sum of y**2 */
- float denom;
- COMP zero;
- int i;
-
- for (i=0; i<n; i++) {
- sumx += x[i];
- sumx2 += x[i]*x[i];
- sumxy = cadd(sumxy, fcmult(x[i], y[i]));
- sumy = cadd(sumy, y[i]);
- sumy2 = cadd(sumy2, cmult(y[i],y[i]));
- }
-
- denom = (n * sumx2 - sumx*sumx);
+ denom = (n * sumx2 - sumx * sumx);
if (denom == 0) {
- /* singular matrix. can't solve the problem */
- zero.real = 0.0; zero.imag = 0.0;
- *m = zero;
- *b = zero;
+ /* singular matrix. can't solve the problem */
+ zero.real = 0.0;
+ zero.imag = 0.0;
+ *m = zero;
+ *b = zero;
} else {
- *m = fcmult(1.0/denom, cadd(fcmult(n, sumxy), cneg(fcmult(sumx,sumy))));
- *b = fcmult(1.0/denom, cadd(fcmult(sumx2,sumy), cneg(fcmult(sumx, sumxy))));
+ *m = fcmult(1.0 / denom, cadd(fcmult(n, sumxy), cneg(fcmult(sumx, sumy))));
+ *b = fcmult(1.0 / denom,
+ cadd(fcmult(sumx2, sumy), cneg(fcmult(sumx, sumxy))));
}
}
-
#ifdef __UNITTEST__
-
static float x[] = {1, 2, 7, 8};
-static COMP y[] = {
- {-0.70702, 0.70708},
- {-0.77314, 0.63442},
- {-0.98083, 0.19511},
- {-0.99508, 0.09799}
-};
-
+static COMP y[] = {{-0.70702, 0.70708},
+ {-0.77314, 0.63442},
+ {-0.98083, 0.19511},
+ {-0.99508, 0.09799}};
int main(void) {
- float x1;
- COMP m,b,yfit;
+ float x1;
+ COMP m, b, yfit;
- linreg(&m, &b, x, y, sizeof(x)/sizeof(float));
+ linreg(&m, &b, x, y, sizeof(x) / sizeof(float));
- for (x1=1; x1<=8; x1++) {
- yfit = cadd(fcmult(x1, m),b);
- printf("%f %f\n", yfit.real, yfit.imag);
- }
+ for (x1 = 1; x1 <= 8; x1++) {
+ yfit = cadd(fcmult(x1, m), b);
+ printf("%f %f\n", yfit.real, yfit.imag);
+ }
- return 0;
+ return 0;
}
#endif
-