liba 0.1.15
An algorithm library based on C/C++
Loading...
Searching...
No Matches
regress_simple.h
Go to the documentation of this file.
1
6
7#ifndef LIBA_REGRESS_SIMPLE_H
8#define LIBA_REGRESS_SIMPLE_H
9
10#include "a.h"
11
17
18/* clang-format off */
19#define A_REGRESS_SIMPLE_2(coef, bias) {a_real_c(coef), a_real_c(bias)}
20/* clang-format on */
21#define A_REGRESS_SIMPLE_1(coef) A_REGRESS_SIMPLE_2(coef, 0)
22#define A_REGRESS_SIMPLE_0() A_REGRESS_SIMPLE_1(1)
23
25
26#if defined(__cplusplus)
27extern "C" {
28#endif /* __cplusplus */
29
37
45
53
63A_EXTERN void a_regress_simple_ols_(a_regress_simple *ctx, a_size n, a_real const *x, a_real const *y, a_real x_mean, a_real y_mean);
64
73A_EXTERN void a_regress_simple_olsx(a_regress_simple *ctx, a_size n, a_real const *x, a_real const *y, a_real x_mean);
74
83A_EXTERN void a_regress_simple_olsy(a_regress_simple *ctx, a_size n, a_real const *x, a_real const *y, a_real y_mean);
84
92A_EXTERN void a_regress_simple_ols(a_regress_simple *ctx, a_size n, a_real const *x, a_real const *y);
93
99
100#if defined(__cplusplus)
101} /* extern "C" */
102namespace a
103{
104typedef struct a_regress_simple regress_simple;
105} /* namespace a */
106#endif /* __cplusplus */
107
112{
115#if defined(__cplusplus)
116 A_INLINE void init(a_real a = 1, a_real b = 0)
117 {
118 a_regress_simple_init(this, a, b);
119 }
120 A_INLINE a_real eval(a_real val) const
121 {
122 return a_regress_simple_eval(this, val);
123 }
124 A_INLINE a_real evar(a_real val) const
125 {
126 return a_regress_simple_evar(this, val);
127 }
128 A_INLINE void ols(a_size n, a_real const *x, a_real const *y, a_real x_mean, a_real y_mean)
129 {
130 a_regress_simple_ols_(this, n, x, y, x_mean, y_mean);
131 }
132 A_INLINE void olsx(a_size n, a_real const *x, a_real const *y, a_real x_mean)
133 {
134 a_regress_simple_olsx(this, n, x, y, x_mean);
135 }
136 A_INLINE void olsy(a_size n, a_real const *x, a_real const *y, a_real y_mean)
137 {
138 a_regress_simple_olsy(this, n, x, y, y_mean);
139 }
140 A_INLINE void ols(a_size n, a_real const *x, a_real const *y)
141 {
142 a_regress_simple_ols(this, n, x, y);
143 }
144 A_INLINE void zero() { a_regress_simple_zero(this); }
145#endif /* __cplusplus */
146};
147
149
150#endif /* a/regress_simple.h */
algorithm library
double a_real
compiler built-in floating-point number type
Definition a.h:1012
void a_regress_simple_zero(a_regress_simple *ctx)
zeroing for simple linear regression
a_real a_regress_simple_eval(a_regress_simple const *ctx, a_real val)
compute predicted value for simple linear regression
void a_regress_simple_ols(a_regress_simple *ctx, a_size n, a_real const *x, a_real const *y)
ordinary least squares for simple linear regression
a_real a_regress_simple_evar(a_regress_simple const *ctx, a_real val)
compute predicted value for simple linear regression
void a_regress_simple_ols_(a_regress_simple *ctx, a_size n, a_real const *x, a_real const *y, a_real x_mean, a_real y_mean)
ordinary least squares for simple linear regression
void a_regress_simple_olsx(a_regress_simple *ctx, a_size n, a_real const *x, a_real const *y, a_real x_mean)
ordinary least squares for simple linear regression
void a_regress_simple_olsy(a_regress_simple *ctx, a_size n, a_real const *x, a_real const *y, a_real y_mean)
ordinary least squares for simple linear regression
void a_regress_simple_init(a_regress_simple *ctx, a_real coef, a_real bias)
initialize for simple linear regression
size_t a_size
unsigned integer type returned by the sizeof operator
Definition a.h:823
instance structure for simple linear regression
Definition regress_simple.h:112
a_real coef
Definition regress_simple.h:113
a_real bias
Definition regress_simple.h:114