#include "camera_info.h"
#include "math.h"
#include "gps_math.h"
gehe zum Quellcode dieser Datei
|
int | fac (int n) |
|
double | arctan (double x, int n) |
|
double | arctan2 (double y, double x) |
|
double | floor (double arg) |
|
double | ceil (double arg) |
|
double | Round (double number, int places) |
|
static int | min (int a, int b) |
|
const char * | formatDouble (t_format_result result, double value, unsigned length, unsigned fractDigits) |
|
void | regressionInit (t_regression *rcb, int size, t_regression_xy buffer[]) |
|
void | regressionReset (t_regression *rcb) |
|
void | regressionAdd (t_regression *rcb, double x, double y) |
|
static void | regressionCompute (t_regression *rcb) |
|
double | regressionActual (t_regression *rcb) |
|
double | regressionForecast (t_regression *rcb, double x) |
|
double | regressionReverse (t_regression *rcb, double y) |
|
double | regressionChange (t_regression *rcb) |
|
double | regressionQuality (t_regression *rcb) |
|
double | sqrt (double arg) |
|
static double | _sin (double arg) |
|
static double | _cos (double arg) |
|
double | sin (double phi) |
|
double | cos (double phi) |
|
#define __CHDK_GPS_MATH_H |
#define PIBY2 (3.141592653589793 / 2.0) |
static double _cos |
( |
double |
arg) | |
|
|
static |
static double _sin |
( |
double |
arg) | |
|
|
static |
Definiert in Zeile 415 der Datei gps_math.c.
421 for (i=2; i<=14; i+=2) {
422 term *= msqarg / (i*(i+1));
double arctan |
( |
double |
x, |
|
|
int |
n |
|
) |
| |
Definiert in Zeile 16 der Datei gps_math.c.
31 result += ((
pow(
x, i)/i) * ((sign) ? -1.0 : +1.0));
38 if (
x<-1) {result = 3.141592653589793* -0.5; }
39 if (
x>=1) {result = 3.141592653589793*0.5; }
46 result += ((1/(i*
pow(
x,i))) * ((sign) ? -1.0 : +1.0));
double arctan2 |
( |
double |
y, |
|
|
double |
x |
|
) |
| |
double ceil |
( |
double |
arg) | |
|
Definiert in Zeile 72 der Datei gps_math.c.
73 long long trunc = (double) (
long long)
arg;
74 return arg<=0 || trunc==
arg ? trunc : trunc + 1.0;
Definiert in Zeile 459 der Datei gps_math.c.
461 double reduced = phi -
PIBY2 * periode;
464 return _cos (reduced);
466 return -
_sin (reduced);
468 return -
_cos (reduced);
470 return _sin (reduced);
Definiert in Zeile 8 der Datei gps_math.c.
12 for (i=2; i<=
n; i++) f*=i;
double floor |
( |
double |
arg) | |
|
Definiert in Zeile 64 der Datei gps_math.c.
65 long long trunc = (double) (
long long)
arg;
66 return arg>=0 || trunc==
arg ? trunc : trunc - 1.0;
const char* formatDouble |
( |
t_format_result |
result, |
|
|
double |
value, |
|
|
unsigned |
length, |
|
|
unsigned |
fractDigits |
|
) |
| |
Definiert in Zeile 136 der Datei gps_math.c.
141 unsigned integerDigits;
144 int origLength = length;
147 char fractbuffer [20];
161 if (length < 3 ) length = 3;
169 if (fractDigits > length-3 ) fractDigits = length - 3;
170 integerDigits = length - fractDigits - 1;
185 value = value * (double)
quadExpTable[fractDigits] + 0.5;
187 while (value >= 9223372036854775807.0 && shift < fractDigits) {
196 if (value >= 9223372036854775807.0) {
197 sprintf (result,
"%*s", length,
"***");
205 expanded = (
quad) value;
213 if (integer >= quadExpTable[
min(*sign ? integerDigits-1 : integerDigits,
MAXDIGITS)]) {
214 sprintf (result,
"%*s", length,
"***");
224 sprintf (result,
"%s%lli.%0*lli", sign, integer, fractDigits, fract);
227 sprintf (result,
"%*lli.%0*lli", integerDigits, integer, fractDigits, fract);
229 if (fractDigits >= 10) {
230 sprintf (fractbuffer,
"%0*li%09li", fractDigits-9,
231 (
long) (fract/1000000000),
232 (
long) (fract%1000000000));
234 sprintf (fractbuffer,
"%0*li", fractDigits, (
long) fract);
237 if (integer >= 1000000000ll) {
239 sprintf (result,
"%s%li%09li.%s", sign,
240 (
long) (integer/1000000000),
241 (
long) (integer%1000000000),
245 sprintf (result,
"%*li%09li.%s", integerDigits-9,
246 (
long) (integer/1000000000),
247 (
long) (integer%1000000000),
251 sprintf (result,
"%s%li.%s", sign, (
long) integer, fractbuffer);
254 sprintf (result,
"%*li.%s", integerDigits, (
long) integer, fractbuffer);
260 while (p[1]==
' ') p++;
static int min |
( |
int |
a, |
|
|
int |
b |
|
) |
| |
|
static |
void regressionAdd |
( |
t_regression * |
rcb, |
|
|
double |
x, |
|
|
double |
y |
|
) |
| |
Definiert in Zeile 304 der Datei gps_math.c.
308 if (rcb->
n >= rcb->
size) {
316 rcb->
sxx -= old_x*old_x;
317 rcb->
sxy -= old_x*old_y;
323 if (rcb->
n < rcb->
size) {
Definiert in Zeile 343 der Datei gps_math.c.
347 if (rcb->
valid)
return;
350 det = rcb->
n*rcb->
sxx - rcb->
sx*rcb->
sx;
353 if (det==0.0)
return;
355 rcb->
s = (rcb->
n * rcb->
sxy - rcb->
sx * rcb->
sy ) / det;
356 rcb->
t = (rcb->
sxx*rcb->
sy - rcb->
sx * rcb->
sxy) / det;
Definiert in Zeile 382 der Datei gps_math.c.
384 return rcb->
s != 0.0 ? (
y - rcb->
t) / rcb->
s : 1e9;
double Round |
( |
double |
number, |
|
|
int |
places |
|
) |
| |
Definiert in Zeile 444 der Datei gps_math.c.
445 long periode = (long)
floor (phi /
PIBY2 + 0.5);
446 double reduced = phi -
PIBY2 * periode;
449 return _sin (reduced);
451 return _cos (reduced);
453 return -
_sin (reduced);
455 return -
_cos (reduced);
double sqrt |
( |
double |
arg) | |
|
Initialisierung:= {
1.0,
10.0,
100.0,
1000.0,
10000.0,
100000.0,
1000000.0,
10000000.0,
100000000.0,
1000000000.0,
10000000000.0,
100000000000.0,
1000000000000.0,
10000000000000.0,
100000000000000.0,
1000000000000000.0,
10000000000000000.0,
100000000000000000.0,
1000000000000000000.0
}
Definiert in Zeile 82 der Datei gps_math.c.
Initialisierung:= {
1LL,
10LL,
100LL,
1000LL,
10000LL,
100000LL,
1000000LL,
10000000LL,
100000000LL,
1000000000LL,
10000000000LL,
100000000000LL,
1000000000000LL,
10000000000000LL,
100000000000000LL,
1000000000000000LL,
10000000000000000LL,
100000000000000000LL,
1000000000000000000LL
}
Definiert in Zeile 108 der Datei gps_math.c.