TPCCLIB
Loading...
Searching...
No Matches
tpclinopt.h
Go to the documentation of this file.
1
6#ifndef _TPCLINOPT_H_
7#define _TPCLINOPT_H_
8/*****************************************************************************/
9
10/*****************************************************************************/
11#include "tpcclibConfig.h"
12/*****************************************************************************/
13#include <stdio.h>
14#include <stdlib.h>
15#include <string.h>
16#include <math.h>
17/*****************************************************************************/
18#include "tpcextensions.h"
19/*****************************************************************************/
20
21/*****************************************************************************/
22/* regression */
23extern int fitLine(
24 double *x, double *y, const int n, double *m, double *c
25);
26extern int fitLinePearson(
27 double *x, double *y, const int n,
28 double *m, double *msd, double *c, double *csd, double *d, double *dsd,
29 double *r, double *ysd
30);
31extern int highestSlope(
32 double *x, double *y, const int n, const int slope_n, double x_start,
33 double *m, double *yi, double *xi, double *xh
34);
35/*****************************************************************************/
36
37/*****************************************************************************/
38/* roots */
39extern int rootsCubic(
40 const double a, const double b, const double c, double *x1, double *x2, double *x3
41);
42extern int rootsQuadratic(
43 const double a, const double b, const double c, double *x1, double *x2
44);
45/*****************************************************************************/
46
47/*****************************************************************************/
48/* qrlsq */
49extern int qrLSQ(
50 double **mat, double *rhs, double *sol,
51 const unsigned int rows, const unsigned int cols, double *r2
52);
53extern int qr(
54 double **A, int m, int n, double *B, double *X, double *rnorm,
55 double *tau, double *res, double **wws, double *ws
56);
57extern int qr_decomp(
58 double **a, int M, int N, double *tau, double **cchain, double *chain
59);
60extern int qr_solve(
61 double **QR, int M, int N, double *tau, double *b, double *x,
62 double *residual, double *resNorm, double **cchain, double *chain
63);
64extern int qrWeight(
65 int N, int M, double **A, double *b, double *weight, double *ws
66);
67extern int qrWeightRm(
68 int N, int M, double **A, double *b, double *weight, double *ws
69);
70extern int qrSimpleLSQ(double **A, double *B, int M, int N, double *X, double *r2);
71extern int qrLH(
72 const unsigned int m, const unsigned int n,
73 double *a, double *b, double *x, double *r2
74);
75/*****************************************************************************/
76
77/*****************************************************************************/
78/* hholder */
79extern double householder_transform(
80 double *vector, int size
81);
82extern int householder_hm(
83 double tau, double *vector, double **matrix, int rowNr, int columnNr
84);
85extern int householder_hv(
86 double tau, int size, double *v, double *w
87);
88extern double householder_norm(
89 double *v, int size
90);
91/*****************************************************************************/
92
93/*****************************************************************************/
94/* nnls */
95extern int nnls(
96 double **a, int m, int n, double *b, double *x,
97 double *rnorm, double *w, double *zz, int *index
98);
99extern int nnlsWght(
100 int N, int M, double **A, double *b, double *weight
101);
102extern int nnlsWghtSquared(
103 int N, int M, double **A, double *b, double *sweight
104);
105
106/* nnlsq */
110typedef struct NNLSQDATA {
112 int n;
114 int m;
118 double **a;
121 double *b;
123 double *x;
127 double *w;
129 double *zz;
131 int *index;
134 double *_data;
136 double rnorm;
141 double depf;
142} NNLSQDATA;
143
144extern int nnlsq(
145 NNLSQDATA *d, int verbose
146// double **a, int m, int n, double *b, double *x,
147// double *rnorm, double *w, double *zz, int *index
148);
149extern int nnlsqWght(NNLSQDATA *d, double *weight);
150extern int nnlsqWghtSquared(NNLSQDATA *d, double *sweight);
151extern void nnlsqDataInit(NNLSQDATA *d);
152extern void nnlsqDataFree(NNLSQDATA *d);
153extern int nnlsqDataAllocate(NNLSQDATA *d, const int n, const int m);
154/*****************************************************************************/
155
156/*****************************************************************************/
157/* bvls */
158extern int bvls(
159 int key, const /*unsigned*/ int m, const /*unsigned*/ int n,
160 double *a, double *b, double *bl, double *bu, double *x,
161 double *w, double *act, double *zz, int *istate, int *iter,
162 int verbose
163);
164extern int llsqWght(int N, int M, double **A, double *a, double *b, double *weight);
165extern int llsqWghtSquared(int N, int M, double **A, double *a, double *b, double *weight);
166/*****************************************************************************/
167
168/*****************************************************************************/
169#endif /* _TPCLINOPT_H_ */
double rnorm
Definition tpclinopt.h:136
double * x
Definition tpclinopt.h:123
int * index
Definition tpclinopt.h:131
double * b
Definition tpclinopt.h:121
double ** a
Definition tpclinopt.h:118
double * _data
Definition tpclinopt.h:134
double * zz
Definition tpclinopt.h:129
double depf
Definition tpclinopt.h:141
double * w
Definition tpclinopt.h:127
Header file for library libtpcextensions.
int nnlsWghtSquared(int N, int M, double **A, double *b, double *sweight)
Definition nnls.c:308
int llsqWghtSquared(int N, int M, double **A, double *a, double *b, double *weight)
Definition bvls.c:480
void nnlsqDataFree(NNLSQDATA *d)
Definition nnlsq.c:378
int highestSlope(double *x, double *y, const int n, const int slope_n, double x_start, double *m, double *yi, double *xi, double *xh)
Definition regression.c:179
int qrLH(const unsigned int m, const unsigned int n, double *a, double *b, double *x, double *r2)
Solve over-determined least-squares problem A x ~ b using successive Householder rotations.
Definition qrlsq.c:946
int nnls(double **a, int m, int n, double *b, double *x, double *rnorm, double *w, double *zz, int *index)
Definition nnls.c:43
int qrWeightRm(int N, int M, double **A, double *b, double *weight, double *ws)
Definition qrlsq.c:796
int nnlsqDataAllocate(NNLSQDATA *d, const int n, const int m)
Definition nnlsq.c:411
double householder_transform(double *vector, int size)
Definition hholder.c:33
double householder_norm(double *v, int size)
Definition hholder.c:155
int nnlsWght(int N, int M, double **A, double *b, double *weight)
Definition nnls.c:259
int bvls(int key, const int m, const int n, double *a, double *b, double *bl, double *bu, double *x, double *w, double *act, double *zz, int *istate, int *iter, int verbose)
Bounded-value least-squares method to solve the linear problem A x ~ b , subject to limit1 <= x <= li...
Definition bvls.c:32
int llsqWght(int N, int M, double **A, double *a, double *b, double *weight)
Definition bvls.c:425
int rootsCubic(const double a, const double b, const double c, double *x1, double *x2, double *x3)
Definition roots.c:30
int qrLSQ(double **mat, double *rhs, double *sol, const unsigned int rows, const unsigned int cols, double *r2)
QR least-squares solving routine.
Definition qrlsq.c:72
int householder_hv(double tau, int size, double *v, double *w)
Definition hholder.c:126
int fitLinePearson(double *x, double *y, const int n, double *m, double *msd, double *c, double *csd, double *d, double *dsd, double *r, double *ysd)
Definition regression.c:72
void nnlsqDataInit(NNLSQDATA *d)
Definition nnlsq.c:357
int qrSimpleLSQ(double **A, double *B, int M, int N, double *X, double *r2)
Definition qrlsq.c:854
int householder_hm(double tau, double *vector, double **matrix, int rowNr, int columnNr)
Definition hholder.c:87
int rootsQuadratic(const double a, const double b, const double c, double *x1, double *x2)
Definition roots.c:111
int qr_solve(double **QR, int M, int N, double *tau, double *b, double *x, double *residual, double *resNorm, double **cchain, double *chain)
Definition qrlsq.c:563
int nnlsqWghtSquared(NNLSQDATA *d, double *sweight)
Definition nnlsq.c:506
int nnlsqWght(NNLSQDATA *d, double *weight)
Definition nnlsq.c:470
int fitLine(double *x, double *y, const int n, double *m, double *c)
Definition regression.c:23
int qr(double **A, int m, int n, double *B, double *X, double *rnorm, double *tau, double *res, double **wws, double *ws)
Definition qrlsq.c:411
int qrWeight(int N, int M, double **A, double *b, double *weight, double *ws)
Definition qrlsq.c:745
int nnlsq(NNLSQDATA *d, int verbose)
Definition nnlsq.c:55
int qr_decomp(double **a, int M, int N, double *tau, double **cchain, double *chain)
Definition qrlsq.c:493