#include <stdlib.h>#include <stdio.h>#include <stdarg.h>#include <limits.h>#include <float.h>#include <math.h>#include <assert.h>#include <string.h>#include <errno.h>#include "version.h"#include "nan.h"#include "csa.h"Classes | |
| struct | triangle |
| struct | square |
| struct | csa |
Defines | |
| #define | NPASTART 5 |
| #define | SVD_NMAX 30 |
| #define | NPMIN_DEF 3 |
| #define | NPMAX_DEF 40 |
| #define | K_DEF 140 |
| #define | NPPC_DEF 5 |
Typedefs | |
| typedef struct square | square |
Functions | |
| static void | csa_quit (char *format,...) |
| static void * | alloc2d (int n1, int n2, size_t unitsize) |
| static void | free2d (void *pp) |
| static triangle * | triangle_create (square *s, point vertices[], int index) |
| static void | triangle_addpoint (triangle *t, point *p) |
| static void | triangle_destroy (triangle *t) |
| static void | triangle_calculatebc (triangle *t, point *p, double bc[]) |
| static square * | square_create (csa *parent, double xmin, double ymin, int i, int j) |
| static void | square_destroy (square *s) |
| static void | square_addpoint (square *s, point *p) |
| csa * | csa_create () |
| void | csa_destroy (csa *a) |
| void | csa_addpoints (csa *a, int n, point points[]) |
| static void | csa_setprimaryflag (csa *a) |
| static void | csa_squarize (csa *a) |
| static void | getsquares (csa *a, triangle *t, int *n, square ***squares) |
| static double | distance (point *p1, point *p2) |
| static void | thindata (triangle *t, int npmax) |
| static void | csa_attachpoints (csa *a) |
| static int | n2q (int n) |
| static void | svd (double **a, int n, int m, double *w, double **v) |
| static void | lsq (double **A, int ni, int nj, double *z, double *w, double *sol) |
| static void | csa_findprimarycoeffs (csa *a) |
| static void | csa_findsecondarycoeffs (csa *a) |
| static void | csa_sethascoeffsflag (csa *a) |
| void | csa_calculatespline (csa *a) |
| void | csa_approximate_point (csa *a, point *p) |
| void | csa_approximate_points (csa *a, int n, point *points) |
| void | csa_setnpmin (csa *a, int npmin) |
| void | csa_setnpmax (csa *a, int npmax) |
| void | csa_setk (csa *a, int k) |
| void | csa_setnppc (csa *a, double nppc) |
Variables | |
| int | csa_verbose = 0 |
| static int | i300 [] = { 12, 12, 12, 12 } |
| static int | i030 [] = { 3, 24, 21, 0 } |
| static int | i003 [] = { 0, 3, 24, 21 } |
| static int | i210 [] = { 9, 16, 15, 8 } |
| static int | i021 [] = { 2, 17, 22, 7 } |
| static int | i102 [] = { 4, 6, 20, 18 } |
| static int | i120 [] = { 6, 20, 18, 4 } |
| static int | i012 [] = { 1, 10, 23, 14 } |
| static int | i201 [] = { 8, 9, 16, 15 } |
| static int | i111 [] = { 5, 13, 19, 11 } |
| static int * | iall [] = { i300, i030, i003, i210, i021, i102, i120, i012, i201, i111 } |
| #define K_DEF 140 |
| #define NPASTART 5 |
| #define NPMAX_DEF 40 |
| #define NPMIN_DEF 3 |
| #define NPPC_DEF 5 |
| #define SVD_NMAX 30 |
| static void* alloc2d | ( | int | n1, | |
| int | n2, | |||
| size_t | unitsize | |||
| ) | [static] |
| static void csa_attachpoints | ( | csa * | a | ) | [static] |
| void csa_calculatespline | ( | csa * | a | ) |
| csa* csa_create | ( | ) |
| void csa_destroy | ( | csa * | a | ) |
| static void csa_findprimarycoeffs | ( | csa * | a | ) | [static] |
| static void csa_findsecondarycoeffs | ( | csa * | a | ) | [static] |
| static void csa_quit | ( | char * | format, | |
| ... | ||||
| ) | [static] |
| static void csa_sethascoeffsflag | ( | csa * | a | ) | [static] |
| void csa_setk | ( | csa * | a, | |
| int | k | |||
| ) |
| void csa_setnpmax | ( | csa * | a, | |
| int | npmax | |||
| ) |
| void csa_setnpmin | ( | csa * | a, | |
| int | npmin | |||
| ) |
| void csa_setnppc | ( | csa * | a, | |
| double | nppc | |||
| ) |
| static void csa_setprimaryflag | ( | csa * | a | ) | [static] |
| static void csa_squarize | ( | csa * | a | ) | [static] |
| static void free2d | ( | void * | pp | ) | [static] |
| static void lsq | ( | double ** | A, | |
| int | ni, | |||
| int | nj, | |||
| double * | z, | |||
| double * | w, | |||
| double * | sol | |||
| ) | [static] |
| static int n2q | ( | int | n | ) | [static] |
| static void square_destroy | ( | square * | s | ) | [static] |
| static void svd | ( | double ** | a, | |
| int | n, | |||
| int | m, | |||
| double * | w, | |||
| double ** | v | |||
| ) | [static] |
Singular value decomposition. Borrowed from EISPACK (1972-1973). Presents input matrix A as A = U.W.V'.
| a | Input matrix A = U.W[0..m-1][0..n-1]; output matrix U | |
| n | Number of columns | |
| m | Number of rows | |
| w | Ouput vector that presents diagonal matrix W | |
| V | output matrix V |
| static void thindata | ( | triangle * | t, | |
| int | npmax | |||
| ) | [static] |
| static void triangle_destroy | ( | triangle * | t | ) | [static] |
| int csa_verbose = 0 |
int i003[] = { 0, 3, 24, 21 } [static] |
int i012[] = { 1, 10, 23, 14 } [static] |
int i021[] = { 2, 17, 22, 7 } [static] |
int i030[] = { 3, 24, 21, 0 } [static] |
int i102[] = { 4, 6, 20, 18 } [static] |
int i111[] = { 5, 13, 19, 11 } [static] |
int i120[] = { 6, 20, 18, 4 } [static] |
int i201[] = { 8, 9, 16, 15 } [static] |
int i210[] = { 9, 16, 15, 8 } [static] |
int i300[] = { 12, 12, 12, 12 } [static] |
1.5.7