/usr/lib/grass72/include/grass/ccmath_grass.h is in grass-dev 7.2.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | /* ccmath.h CCMATH mathematics library source code.
*
* Copyright (C) 2000 Daniel A. Atkinson All rights reserved.
* This code may be redistributed under the terms of the GNU library
* public license (LGPL). ( See the lgpl.license file for details.)
*
* Modified by Soeren gebbert 2009/01/08
* Removed al unused functions in GRASS. Only the linear algebra
* functions are used.
* ------------------------------------------------------------------------
*/
/*
CCM
Numerical Analysis Toolkit Header File
ELF Shared Library Version
*/
/* Required for Shared Library */
#ifndef _CCMATH_H_
#define _CCMATH_H_
#define XMATH 1
/* Define File Pointers and Standard Library */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* Definitions of Types */
#ifndef NULL
#define NULL ((void *)0
#endif
/* Complex Types */
#ifndef CPX
struct complex {double re,im;};
typedef struct complex Cpx;
#define CPX 1
#endif
/* Linear Algebra */
/* Real Linear Systems */
int minv(double *a,int n) ;
int psinv(double *v,int n) ;
int ruinv(double *a,int n) ;
int solv(double *a,double *b,int n) ;
int solvps(double *s,double *x,int n) ;
int solvru(double *a,double *b,int n) ;
void solvtd(double *a,double *b,double *c,double *x,int m) ;
void eigen(double *a,double *eval,int n) ;
void eigval(double *a,double *eval,int n) ;
double evmax(double *a,double *u,int n) ;
int svdval(double *d,double *a,int m,int n) ;
int sv2val(double *d,double *a,int m,int n) ;
int svduv(double *d,double *a,double *u,int m,double *v,int n) ;
int sv2uv(double *d,double *a,double *u,int m,double *v,int n) ;
int svdu1v(double *d,double *a,int m,double *v,int n) ;
int sv2u1v(double *d,double *a,int m,double *v,int n) ;
void mmul(double *mat,double *a,double *b,int n) ;
void rmmult(double *mat,double *a,double *b,int m,int k,int n) ;
void vmul(double *vp,double *mat,double *v,int n) ;
double vnrm(double *u,double *v,int n) ;
void matprt(double *a,int n,int m,char *fmt) ;
void fmatprt(FILE *fp,double *a,int n,int m,char *fmt) ;
void trnm(double *a,int n) ;
void mattr(double *a,double *b,int m,int n) ;
void otrma(double *at,double *u,double *a,int n) ;
void otrsm(double *st,double *u,double *s0,int n) ;
void mcopy(double *a,double *b,int m) ;
void ortho(double *evc,int n) ;
void smgen(double *a,double *eval,double *evec,int n) ;
/* utility routines for real symmertic eigensystems */
void house(double *a,double *d,double *ud,int n) ;
void housev(double *a,double *d,double *ud,int n) ;
int qreval(double *eval,double *ud,int n) ;
int qrevec(double *eval,double *evec,double *dp,int n) ;
/* utility routines for singular value decomposition */
int qrbdi(double *d, double *e,int n) ;
int qrbdv(double *d, double *e,double *u,int m,double *v,int n) ;
int qrbdu1(double *d, double *e,double *u,int m,double *v,int n) ;
void ldumat(double *a,double *u,int m,int n) ;
void ldvmat(double *a,double *v,int n) ;
void atou1(double *a,int m,int n) ;
void atovm(double *v,int n) ;
/* Complex Matrix Algebra */
int cminv(Cpx *a,int n) ;
int csolv(Cpx *a,Cpx *b,int n) ;
void heigvec(Cpx *a,double *eval,int n) ;
void heigval(Cpx *a,double *eval,int n) ;
double hevmax(Cpx *a,Cpx *u,int n) ;
void cmmul(Cpx *c,Cpx *a,Cpx *b,int n) ;
void cmmult(Cpx *c,Cpx *a,Cpx *b,int m,int k,int n) ;
void cvmul(Cpx *vp,Cpx *mat,Cpx *v,int n) ;
Cpx cvnrm(Cpx *u,Cpx *v,int n) ;
void cmprt(Cpx *a,int n,int m,char *fmt) ;
void trncm(Cpx *a,int n) ;
void hconj(Cpx *u,int n) ;
void cmattr(Cpx *a,Cpx *b,int m,int n) ;
void utrncm(Cpx *at,Cpx *u,Cpx *a,int n) ;
void utrnhm(Cpx *ht,Cpx *u,Cpx *h0,int n) ;
void cmcpy(Cpx *a,Cpx *b,int n) ;
void unitary(Cpx *u,int n) ;
void hmgen(Cpx *h,double *eval,Cpx *u,int n) ;
/* utility routines for hermitian eigen problems */
void chouse(Cpx *a,double *d,double *ud,int n) ;
void chousv(Cpx *a,double *d,double *ud,int n) ;
void qrecvc(double *eval,Cpx *evec,double *ud,int n) ;
#endif
|