GRASS 8 Programmer's Manual
8.5.0(2026)-8d6ceba290
Toggle main menu visibility
Loading...
Searching...
No Matches
evmax.c
Go to the documentation of this file.
1
/* evmax.c CCMATH mathematics library source code.
2
*
3
* Copyright (C) 2000 Daniel A. Atkinson All rights reserved.
4
* This code may be redistributed under the terms of the GNU library
5
* public license (LGPL). ( See the lgpl.license file for details.)
6
* ------------------------------------------------------------------------
7
*/
8
#include <stdlib.h>
9
#include "
ccmath.h
"
10
double
evmax
(
double
*a,
double
*u,
int
n)
11
{
12
double
*p, *q, *qm, *
r
, *s, *
t
;
13
14
double
ev, evm, c, h;
15
16
int
kc;
17
18
q = (
double
*)calloc(n,
sizeof
(
double
));
19
qm = q + n;
20
*(qm - 1) = 1.;
21
ev = 0.;
22
for
(kc = 0; kc < 200; ++kc) {
23
h = c = 0.;
24
evm = ev;
25
for
(p = u,
r
= a, s = q; s < qm;) {
26
*p = 0.;
27
for
(
t
= q;
t
< qm;)
28
*p += *
r
++ * *
t
++;
29
c += *p * *p;
30
h += *p++ * *s++;
31
}
32
ev = c / h;
33
c = sqrt(c);
34
for
(p = u, s = q; s < qm;) {
35
*p /= c;
36
*s++ = *p++;
37
}
38
if
(((c = ev - evm) < 0. ? -c : c) < 1.e-16 * (ev < 0. ? -ev : ev)) {
39
free(q);
40
return
ev;
41
}
42
}
43
free(q);
44
for
(kc = 0; kc < n;)
45
u[kc++] = 0.;
46
return
0.;
47
}
ccmath.h
t
double t
Definition
driver/set_window.c:5
r
double r
Definition
driver/set_window.c:5
evmax
double evmax(double *a, double *u, int n)
Definition
evmax.c:10
external
ccmath
evmax.c
Generated on
for GRASS 8 Programmer's Manual by
1.17.0