liba 0.1.15
An algorithm library based on C/C++
Loading...
Searching...
No Matches
poly.h
Go to the documentation of this file.
1
5
6#ifndef LIBA_POLY_H
7#define LIBA_POLY_H
8
9#include "a.h"
10
16
17#if defined(__cplusplus)
18extern "C" {
19#endif /* __cplusplus */
20#if defined(LIBA_POLY_C)
22#undef A_INTERN
23#define A_INTERN A_INLINE
25#endif /* LIBA_POLY_C */
26
30#if !defined A_HAVE_INLINE || defined(LIBA_POLY_C)
31A_EXTERN void a_poly_swap(a_real *a, a_size n);
32#endif /* A_HAVE_INLINE */
33A_EXTERN void a_poly_swap_(a_real *a, a_real *b);
34#if defined(A_HAVE_INLINE) || defined(LIBA_POLY_C)
35A_INTERN void a_poly_swap(a_real *a, a_size n)
36{
37 if (n > 1) { a_poly_swap_(a, a + n); }
38}
39#endif /* A_HAVE_INLINE */
40
51#if !defined A_HAVE_INLINE || defined(LIBA_POLY_C)
52A_EXTERN a_real a_poly_eval(a_real const *a, a_size n, a_real x);
53#endif /* A_HAVE_INLINE */
54A_EXTERN a_real a_poly_eval_(a_real const *a, a_real const *b, a_real x);
55#if defined(A_HAVE_INLINE) || defined(LIBA_POLY_C)
56A_INTERN a_real a_poly_eval(a_real const *a, a_size n, a_real x)
57{
58 return n ? a_poly_eval_(a, a + n, x) : 0;
59}
60#endif /* A_HAVE_INLINE */
61
72#if !defined A_HAVE_INLINE || defined(LIBA_POLY_C)
73A_EXTERN a_real a_poly_evar(a_real const *a, a_size n, a_real x);
74#endif /* A_HAVE_INLINE */
75A_EXTERN a_real a_poly_evar_(a_real const *a, a_real const *b, a_real x);
76#if defined(A_HAVE_INLINE) || defined(LIBA_POLY_C)
77A_INTERN a_real a_poly_evar(a_real const *a, a_size n, a_real x)
78{
79 return n ? a_poly_evar_(a, a + n, x) : 0;
80}
81#endif /* A_HAVE_INLINE */
82
93A_EXTERN void a_poly_xTx(a_uint m, a_real const *x, a_uint n, a_real *A);
94
106A_EXTERN void a_poly_xTy(a_uint m, a_real const *x, a_real const *y, a_uint n, a_real *b);
107
108#if defined(LIBA_POLY_C)
110#undef A_INTERN
111#define A_INTERN static A_INLINE
113#endif /* LIBA_POLY_C */
114#if defined(__cplusplus)
115} /* extern "C" */
116#endif /* __cplusplus */
117
119
120#endif /* a/poly.h */
algorithm library
void a_poly_swap(a_real *a, a_size n)
swap between and
void a_poly_xTy(a_uint m, a_real const *x, a_real const *y, a_uint n, a_real *b)
compute the vector A^T * y for polynomial fitting.
a_real a_poly_evar(a_real const *a, a_size n, a_real x)
horner function for polynomial
a_real a_poly_eval(a_real const *a, a_size n, a_real x)
horner function for polynomial
void a_poly_xTx(a_uint m, a_real const *x, a_uint n, a_real *A)
compute the matrix A^T * A for polynomial fitting.
double a_real
compiler built-in floating-point number type
Definition a.h:1012
unsigned int a_uint
unsigned integer type is guaranteed to be at least 16 bits
Definition a.h:337
size_t a_size
unsigned integer type returned by the sizeof operator
Definition a.h:823