liba 0.1.15
An algorithm library based on C/C++
Loading...
Searching...
No Matches
regress_linear.h
Go to the documentation of this file.
1
6
7#ifndef LIBA_REGRESS_LINEAR_H
8#define LIBA_REGRESS_LINEAR_H
9
10#include "a.h"
11
17
18/* clang-format off */
19#define A_REGRESS_LINEAR_3(coef_p, coef_n, bias) {coef_p, coef_n, a_real_c(bias)}
20/* clang-format on */
21#define A_REGRESS_LINEAR_2(coef_p, coef_n) A_REGRESS_LINEAR_3(coef_p, coef_n, 0)
22#define A_REGRESS_LINEAR_1(coef) A_REGRESS_LINEAR_2(coef, A_LEN(coef))
23#define A_REGRESS_LINEAR_0() A_REGRESS_LINEAR_2(A_NULL, 0)
24
26
27#if defined(__cplusplus)
28extern "C" {
29#endif /* __cplusplus */
30
39
46A_EXTERN a_real a_regress_linear_eval(a_regress_linear const *ctx, a_real const *val);
47
56A_EXTERN void a_regress_linear_err(a_regress_linear const *ctx, a_size n, a_real const *x, a_real const *y, a_real *err);
57
66A_EXTERN void a_regress_linear_pdm(a_regress_linear const *ctx, a_size n, a_real const *x, a_real *pdm, a_real y_mean);
67
75A_EXTERN void a_regress_linear_gd(a_regress_linear *ctx, a_real const *input, a_real error, a_real alpha);
76
85A_EXTERN void a_regress_linear_sgd(a_regress_linear *ctx, a_size n, a_real const *x, a_real const *y, a_real alpha);
86
95A_EXTERN void a_regress_linear_bgd(a_regress_linear *ctx, a_size n, a_real const *x, a_real const *err, a_real alpha);
96
112A_EXTERN a_real a_regress_linear_mgd(a_regress_linear *ctx, a_size n, a_real const *x, a_real const *y, a_real *err,
113 a_real delta, a_real lrmax, a_real lrmin, a_size lrtim, a_size epoch, a_size batch);
114
120
121#if defined(__cplusplus)
122} /* extern "C" */
123namespace a
124{
125typedef struct a_regress_linear regress_linear;
126} /* namespace a */
127#endif /* __cplusplus */
128
133{
137#if defined(__cplusplus)
138 A_INLINE void init(a_real *p, a_size n, a_real b = 0)
139 {
140 a_regress_linear_init(this, p, n, b);
141 }
142 A_INLINE a_real eval(a_real const *val) const
143 {
144 return a_regress_linear_eval(this, val);
145 }
146 A_INLINE void err(a_size n, a_real const *x, a_real const *y, a_real *err) const
147 {
148 a_regress_linear_err(this, n, x, y, err);
149 }
150 A_INLINE void pdm(a_size n, a_real const *x, a_real *pdm, a_real y_mean) const
151 {
152 a_regress_linear_pdm(this, n, x, pdm, y_mean);
153 }
154 A_INLINE void gd(a_real const *input, a_real error, a_real alpha)
155 {
156 a_regress_linear_gd(this, input, error, alpha);
157 }
158 A_INLINE void sgd(a_size n, a_real const *x, a_real const *y, a_real alpha)
159 {
160 a_regress_linear_sgd(this, n, x, y, alpha);
161 }
162 A_INLINE void bgd(a_size n, a_real const *x, a_real const *err, a_real alpha)
163 {
164 a_regress_linear_bgd(this, n, x, err, alpha);
165 }
166 A_INLINE a_real mgd(a_size n, a_real const *x, a_real const *y, a_real *err, a_real delta,
167 a_real lrmax, a_real lrmin, a_size lrtim, a_size epoch, a_size batch)
168 {
169 return a_regress_linear_mgd(this, n, x, y, err, delta, lrmax, lrmin, lrtim, epoch, batch);
170 }
171 A_INLINE void zero() { a_regress_linear_zero(this); }
172#endif /* __cplusplus */
173};
174
176
177#endif /* a/regress_linear.h */
algorithm library
double a_real
compiler built-in floating-point number type
Definition a.h:1012
void a_regress_linear_pdm(a_regress_linear const *ctx, a_size n, a_real const *x, a_real *pdm, a_real y_mean)
compute prediction deviation from mean for linear regression
a_real a_regress_linear_eval(a_regress_linear const *ctx, a_real const *val)
compute predicted value for linear regression
a_real a_regress_linear_mgd(a_regress_linear *ctx, a_size n, a_real const *x, a_real const *y, a_real *err, a_real delta, a_real lrmax, a_real lrmin, a_size lrtim, a_size epoch, a_size batch)
mini-batch gradient descent for linear regression
void a_regress_linear_init(a_regress_linear *ctx, a_real *coef_p, a_size coef_n, a_real bias)
initialize for linear regression
void a_regress_linear_gd(a_regress_linear *ctx, a_real const *input, a_real error, a_real alpha)
gradient descent for linear regression
void a_regress_linear_zero(a_regress_linear *ctx)
zeroing for linear regression
void a_regress_linear_bgd(a_regress_linear *ctx, a_size n, a_real const *x, a_real const *err, a_real alpha)
batch gradient descent for linear regression
void a_regress_linear_sgd(a_regress_linear *ctx, a_size n, a_real const *x, a_real const *y, a_real alpha)
stochastic gradient descent for linear regression
void a_regress_linear_err(a_regress_linear const *ctx, a_size n, a_real const *x, a_real const *y, a_real *err)
compute residuals for linear regression
size_t a_size
unsigned integer type returned by the sizeof operator
Definition a.h:823
instance structure for linear regression
Definition regress_linear.h:133
a_real * coef_p
Definition regress_linear.h:134
a_real bias
Definition regress_linear.h:136
a_size coef_n
Definition regress_linear.h:135