mathkit
2.0
Main Page
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Functions
Variables
Typedefs
include
mathkit.hpp
1
23
#ifndef MATHKIT_HPP
24
#define MATHKIT_HPP
25
26
#include <cmath>
27
#include <vector>
28
#include <string>
29
#include <utility>
30
#include <iostream>
31
32
using
std::abs;
33
using
std::atan;
34
using
std::vector;
35
using
std::string;
36
using
std::pair;
37
using
std::make_pair;
38
using
std::istream;
39
using
std::ostream;
40
44
namespace
mathkit {
45
49
const
double
pi
= 4 * atan(1.0);
50
54
typedef
vector<double>
Vector
;
55
59
typedef
vector<vector<double> >
Table
;
60
64
typedef
pair<double, double>
Pair
;
65
69
typedef
vector<pair<double, double> >
Pairs
;
70
74
class
Epsilon
{
75
private
:
76
double
_eps;
77
public
:
82
Epsilon
(
double
eps = 1e-6) {_eps = eps;}
83
89
bool
operator()
(
double
val)
const
;
90
95
double
operator()
()
const
;
96
};
97
101
struct
LineParam
{
105
double
slope
;
106
110
double
intercept
;
111
115
double
det_coef
;
116
120
double
variance
;
121
};
122
130
double
pv
(
double
amount,
double
rate,
double
period);
131
139
double
fv
(
double
amount,
double
rate,
double
period);
140
147
double
pv_coef
(
double
rate,
double
period);
148
155
double
fv_coef
(
double
rate,
double
period);
156
165
double
apv
(
double
annuity,
double
rate,
int
period,
bool
prepaid =
false
);
166
175
double
afv
(
double
annuity,
double
rate,
int
period,
bool
prepaid =
false
);
176
184
double
apv_coef
(
double
rate,
int
period,
bool
prepaid =
false
);
185
193
double
afv_coef
(
double
rate,
int
period,
bool
prepaid =
false
);
194
203
double
spv
(
const
Vector
& amount,
double
rate,
bool
prepaid =
false
);
204
212
double
sfv
(
const
Vector
& amount,
double
rate,
bool
prepaid =
false
);
213
222
double
comp_rate
(
double
pval,
double
fval,
double
period);
223
229
double
mean
(
const
Vector
& data);
230
237
double
median
(
const
Vector
& data,
bool
sorted =
false
);
238
246
double
var
(
const
Vector
& data,
bool
sample
=
true
);
247
255
double
sd
(
const
Vector
& data,
bool
sample
=
true
);
256
265
double
cov
(
const
Vector
& data1,
const
Vector
& data2,
bool
sample
=
true
);
266
273
double
cor
(
const
Vector
& data1,
const
Vector
& data2);
274
282
double
moment
(
const
Vector
& data,
int
k,
bool
central =
true
);
283
289
double
skew
(
const
Vector
& data);
290
297
double
kurt
(
const
Vector
& data,
bool
excess =
true
);
298
305
double
dexp
(
double
theta,
double
x);
306
313
double
pexp
(
double
theta,
double
x);
314
322
double
qexp
(
double
theta,
double
p,
const
Epsilon
& eps =
Epsilon
());
323
331
double
dnorm
(
double
x,
double
mu = 0,
double
sigma = 1);
332
341
double
pnorm
(
double
x,
double
mu = 0,
double
sigma = 1,
const
Epsilon
& eps =
Epsilon
());
342
351
double
qnorm
(
double
p,
double
mu = 0,
double
sigma = 1,
const
Epsilon
& eps =
Epsilon
());
352
359
double
dt
(
double
x,
int
n);
360
368
double
pt
(
double
x,
int
n,
const
Epsilon
& eps =
Epsilon
());
369
377
double
qt
(
double
p,
int
n,
const
Epsilon
& eps =
Epsilon
());
378
385
double
dchisq
(
double
x,
int
k);
386
393
double
pchisq
(
double
x,
int
k);
394
402
double
qchisq
(
double
p,
int
k,
const
Epsilon
& eps =
Epsilon
());
403
411
double
df
(
double
x,
int
d1,
int
d2);
412
420
double
pf
(
double
x,
int
d1,
int
d2);
421
430
double
qf
(
double
p,
int
d1,
int
d2,
const
Epsilon
& eps =
Epsilon
());
431
439
double
pois
(
double
lmd,
int
k,
bool
cum =
false
);
440
449
double
binom
(
int
n,
double
p,
int
k,
bool
cum =
false
);
450
459
double
nb
(
int
k,
double
p,
int
x,
bool
cum =
false
);
460
470
double
hg
(
int
s,
int
k,
int
n,
int
x,
bool
cum =
false
);
471
477
double
gamma
(
double
x);
478
484
double
lgamma
(
double
x);
485
493
double
igamma
(
double
s,
double
x,
const
Epsilon
& eps =
Epsilon
(1e-15));
494
501
double
beta
(
double
x,
double
y);
502
509
double
lbeta
(
double
x,
double
y);
510
519
double
ibeta
(
double
x,
double
a,
double
b,
const
Epsilon
& eps =
Epsilon
(1e-15));
520
528
LineParam
linregress
(
const
Vector
& xdata,
const
Vector
& ydata);
529
536
Vector
sample
(
const
Vector
& data,
int
n);
537
545
Vector
seq
(
double
from,
double
to,
double
step = 1);
546
554
Vector
linspace
(
double
start,
double
end,
int
count = 100);
555
561
double
max
(
const
Vector
& data);
562
568
double
min
(
const
Vector
& data);
569
575
double
sum
(
const
Vector
& data);
576
582
double
prod
(
const
Vector
& data);
583
590
Vector
add
(
const
Vector
& vec1,
const
Vector
& vec2);
591
599
Vector
add
(
const
Vector
& vec,
double
scalar);
600
607
Vector
operator+
(
const
Vector
& vec1,
const
Vector
& vec2);
608
616
Vector
operator+
(
const
Vector
& vec,
double
scalar);
617
625
Vector
operator+
(
double
scalar,
const
Vector
& vec);
626
633
Vector
sub
(
const
Vector
& vec1,
const
Vector
& vec2);
634
643
Vector
sub
(
const
Vector
& vec,
double
scalar,
bool
dir =
true
);
644
651
Vector
operator-
(
const
Vector
& vec1,
const
Vector
& vec2);
652
660
Vector
operator-
(
const
Vector
& vec,
double
scalar);
661
669
Vector
operator-
(
double
scalar,
const
Vector
& vec);
670
677
Vector
mul
(
const
Vector
& vec1,
const
Vector
& vec2);
678
685
Vector
mul
(
const
Vector
& vec,
double
scalar);
686
693
Vector
operator*
(
const
Vector
& vec1,
const
Vector
& vec2);
694
701
Vector
operator*
(
const
Vector
& vec,
double
scalar);
702
709
Vector
operator*
(
double
scalar,
const
Vector
& vec);
710
717
Vector
div
(
const
Vector
& vec1,
const
Vector
& vec2);
718
726
Vector
div
(
const
Vector
& vec,
double
scalar,
bool
dir =
true
);
727
734
Vector
operator/
(
const
Vector
& vec1,
const
Vector
& vec2);
735
742
Vector
operator/
(
const
Vector
& vec,
double
scalar);
743
750
Vector
operator/
(
double
scalar,
const
Vector
& vec);
751
759
double
dot_prod
(
const
Vector
& vec1,
const
Vector
& vec2);
760
767
Vector
cross_prod
(
const
Vector
& vec1,
const
Vector
& vec2);
768
774
double
norm
(
const
Vector
& vec);
775
782
bool
zero
(
const
Vector
& vec,
const
Epsilon
& eps =
Epsilon
());
783
791
string
to_str
(
const
Vector
& vec,
string
sep =
" "
,
string
delim =
"()"
);
792
801
Vector
make_vec
(
int
n, ...);
802
809
Vector
load
(istream & ins,
string
delim =
" "
);
810
819
Table
load
(istream & ins,
int
nrow,
int
ncol,
string
delim =
" "
);
820
827
void
save
(ostream & outs,
const
Vector
& data,
string
delim =
" "
);
828
835
void
save
(ostream & outs,
const
Table
& data,
string
delim =
" "
);
836
843
ostream &
operator<<
(ostream & outs,
const
Vector
& vec);
844
851
istream &
operator>>
(istream & ins,
Vector
& vec);
852
859
double
randf
(
double
low,
double
high);
860
868
Vector
randf
(
double
low,
double
high,
int
n);
869
876
int
randi
(
int
low,
int
high);
877
885
Vector
randi
(
int
low,
int
high,
int
n);
886
894
bool
randp
(
double
p);
895
900
void
randseed
();
901
906
void
randseed
(
unsigned
int
s);
907
914
double
rnorm
(
double
mu = 0,
double
sigma = 1);
915
923
Vector
rnorm
(
int
n,
double
mu = 0,
double
sigma = 1);
924
930
double
rexp
(
double
theta);
931
938
Vector
rexp
(
double
theta,
int
n);
939
945
int
rpois
(
double
lmd);
946
953
Vector
rpois
(
double
lmd,
int
n);
954
961
int
rbinom
(
int
n,
double
p);
962
970
Vector
rbinom
(
int
n,
double
p,
int
count);
971
978
int
rnb
(
int
k,
double
p);
979
987
Vector
rnb
(
int
k,
double
p,
int
count);
988
996
int
rhg
(
int
s,
int
k,
int
n);
997
1006
Vector
rhg
(
int
s,
int
k,
int
n,
int
count);
1007
1014
double
prec
(
double
num,
int
ndec = 4);
1015
1022
Vector
prec
(
const
Vector
& vec,
int
ndec = 4);
1023
1029
double
fac
(
int
n);
1030
1038
double
perm
(
int
m,
int
n);
1039
1047
double
comb
(
int
m,
int
n);
1048
1055
unsigned
int
gcd
(
unsigned
int
a,
unsigned
int
b);
1056
1063
unsigned
int
lcm
(
unsigned
int
a,
unsigned
int
b);
1064
1071
template
<
typename
Func>
1072
Vector
each
(Func func,
const
Vector
& data);
1073
1080
template
<
typename
Func>
1081
Vector
filter
(Func func,
const
Vector
& data);
1082
1091
template
<
typename
Func>
1092
bool
probe
(Func func,
Pair
& guess,
double
factor = 1.6,
int
ntry = 50);
1093
1101
template
<
typename
Func>
1102
Pairs
scan
(Func func,
Pair
scope,
int
nr);
1103
1111
template
<
typename
Func>
1112
double
solve
(Func func,
Pair
region,
const
Epsilon
& eps =
Epsilon
());
1113
1121
template
<
typename
Func>
1122
double
integrate
(Func func,
Pair
region,
const
Epsilon
& eps =
Epsilon
());
1123
1130
template
<
typename
T>
1131
Vector
a2vec
(T data[],
int
len);
1132
1133
#include "template_impl.cpp"
1134
}
1135
1136
#endif
Generated on Sun Aug 25 2013 16:48:01 for mathkit by
1.8.4