mathkit
1.5
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
};
91
95
struct
LineParam
{
99
double
slope
;
100
104
double
intercept
;
105
};
106
114
double
pv
(
double
amount,
double
rate,
double
period);
115
123
double
fv
(
double
amount,
double
rate,
double
period);
124
131
double
pv_coef
(
double
rate,
double
period);
132
139
double
fv_coef
(
double
rate,
double
period);
140
149
double
apv
(
double
annuity,
double
rate,
int
period,
bool
prepaid =
false
);
150
159
double
afv
(
double
annuity,
double
rate,
int
period,
bool
prepaid =
false
);
160
168
double
apv_coef
(
double
rate,
int
period,
bool
prepaid =
false
);
169
177
double
afv_coef
(
double
rate,
int
period,
bool
prepaid =
false
);
178
187
double
spv
(
const
Vector
& amount,
double
rate,
bool
prepaid =
false
);
188
196
double
sfv
(
const
Vector
& amount,
double
rate,
bool
prepaid =
false
);
197
206
double
comp_rate
(
double
pval,
double
fval,
double
period);
207
213
double
mean
(
const
Vector
& data);
214
221
double
median
(
const
Vector
& data,
bool
sorted =
false
);
222
230
double
var
(
const
Vector
& data,
bool
sample =
true
);
231
239
double
sd
(
const
Vector
& data,
bool
sample =
true
);
240
249
double
cov
(
const
Vector
& data1,
const
Vector
& data2,
bool
sample =
true
);
250
257
double
cor
(
const
Vector
& data1,
const
Vector
& data2);
258
266
double
moment
(
const
Vector
& data,
int
k,
bool
central =
true
);
267
273
double
skew
(
const
Vector
& data);
274
281
double
kurt
(
const
Vector
& data,
bool
excess =
true
);
282
290
double
dnorm
(
double
x,
double
mu = 0,
double
sigma = 1);
291
300
double
pnorm
(
double
x,
double
mu = 0,
double
sigma = 1,
const
Epsilon
& eps =
Epsilon
());
301
310
double
qnorm
(
double
p,
double
mu = 0,
double
sigma = 1,
const
Epsilon
& eps =
Epsilon
());
311
318
double
dt
(
double
x,
int
n);
319
327
double
pt
(
double
x,
int
n,
const
Epsilon
& eps =
Epsilon
());
328
336
double
qt
(
double
p,
int
n,
const
Epsilon
& eps =
Epsilon
());
337
345
double
pois
(
double
lmd,
int
k,
bool
cum =
false
);
346
355
double
binom
(
int
n,
double
p,
int
k,
bool
cum =
false
);
356
363
double
expo
(
double
theta,
double
x);
364
370
double
gamma
(
double
x);
371
379
LineParam
linregress
(
const
Vector
& xdata,
const
Vector
& ydata);
380
388
Vector
seq
(
double
from,
double
to,
double
step = 1);
389
397
Vector
linspace
(
double
start,
double
end,
int
count = 100);
398
404
double
max
(
const
Vector
& data);
405
411
double
min
(
const
Vector
& data);
412
418
double
sum
(
const
Vector
& data);
419
425
double
prod
(
const
Vector
& data);
426
433
Vector
add
(
const
Vector
& vec1,
const
Vector
& vec2);
434
442
Vector
add
(
const
Vector
& vec,
double
scalar);
443
450
Vector
operator+
(
const
Vector
& vec1,
const
Vector
& vec2);
451
459
Vector
operator+
(
const
Vector
& vec,
double
scalar);
460
468
Vector
operator+
(
double
scalar,
const
Vector
& vec);
469
476
Vector
sub
(
const
Vector
& vec1,
const
Vector
& vec2);
477
486
Vector
sub
(
const
Vector
& vec,
double
scalar,
bool
dir =
true
);
487
494
Vector
operator-
(
const
Vector
& vec1,
const
Vector
& vec2);
495
503
Vector
operator-
(
const
Vector
& vec,
double
scalar);
504
512
Vector
operator-
(
double
scalar,
const
Vector
& vec);
513
520
Vector
mul
(
const
Vector
& vec1,
const
Vector
& vec2);
521
528
Vector
mul
(
const
Vector
& vec,
double
scalar);
529
536
Vector
operator*
(
const
Vector
& vec1,
const
Vector
& vec2);
537
544
Vector
operator*
(
const
Vector
& vec,
double
scalar);
545
552
Vector
operator*
(
double
scalar,
const
Vector
& vec);
553
560
Vector
div
(
const
Vector
& vec1,
const
Vector
& vec2);
561
569
Vector
div
(
const
Vector
& vec,
double
scalar,
bool
dir =
true
);
570
577
Vector
operator/
(
const
Vector
& vec1,
const
Vector
& vec2);
578
585
Vector
operator/
(
const
Vector
& vec,
double
scalar);
586
593
Vector
operator/
(
double
scalar,
const
Vector
& vec);
594
602
double
dot_prod
(
const
Vector
& vec1,
const
Vector
& vec2);
603
610
Vector
cross_prod
(
const
Vector
& vec1,
const
Vector
& vec2);
611
617
double
norm
(
const
Vector
& vec);
618
626
string
to_str
(
const
Vector
& vec,
string
sep =
" "
,
string
delim =
"()"
);
627
636
Vector
make_vec
(
int
n, ...);
637
644
Vector
load
(istream & ins,
string
delim =
" "
);
645
654
Table
load
(istream & ins,
int
nrow,
int
ncol,
string
delim =
" "
);
655
662
void
save
(ostream & outs,
const
Vector
& data,
string
delim =
" "
);
663
670
void
save
(ostream & outs,
const
Table
& data,
string
delim =
" "
);
671
678
ostream &
operator<<
(ostream & outs,
const
Vector
& vec);
679
686
istream &
operator>>
(istream & ins,
Vector
& vec);
687
694
double
randf
(
double
low,
double
high);
695
703
Vector
randf
(
double
low,
double
high,
int
n);
704
711
int
randi
(
int
low,
int
high);
712
720
Vector
randi
(
int
low,
int
high,
int
n);
721
729
bool
randp
(
double
p);
730
735
void
randseed
();
736
741
void
randseed
(
unsigned
int
s);
742
749
double
rnorm
(
double
mu = 0,
double
sigma = 1);
750
758
Vector
rnorm
(
int
n,
double
mu = 0,
double
sigma = 1);
759
765
int
rpois
(
double
lmd);
766
773
Vector
rpois
(
double
lmd,
int
n);
774
781
int
rbinom
(
int
n,
double
p);
782
790
Vector
rbinom
(
int
n,
double
p,
int
count);
791
797
double
rexp
(
double
theta);
798
805
Vector
rexp
(
double
theta,
int
n);
806
813
double
prec
(
double
num,
int
ndec = 2);
814
821
Vector
prec
(
const
Vector
& vec,
int
ndec = 4);
822
828
double
fac
(
unsigned
int
n);
829
837
double
perm
(
unsigned
int
m,
unsigned
int
n);
838
846
double
comb
(
unsigned
int
m,
unsigned
int
n);
847
854
unsigned
int
gcd
(
unsigned
int
a,
unsigned
int
b);
855
862
unsigned
int
lcm
(
unsigned
int
a,
unsigned
int
b);
863
870
template
<
typename
Func>
871
Vector
each
(Func func,
const
Vector
& data);
872
879
template
<
typename
Func>
880
Vector
filter
(Func func,
const
Vector
& data);
881
890
template
<
typename
Func>
891
bool
probe
(Func func,
Pair
& guess,
double
factor = 1.6,
int
ntry = 50);
892
900
template
<
typename
Func>
901
Pairs
scan
(Func func,
Pair
scope,
int
nr);
902
910
template
<
typename
Func>
911
double
solve
(Func func,
Pair
region,
const
Epsilon
& eps =
Epsilon
());
912
920
template
<
typename
Func>
921
double
integrate
(Func func,
Pair
region,
const
Epsilon
& eps =
Epsilon
());
922
929
template
<
typename
T>
930
Vector
a2vec
(T data[],
int
len);
931
932
#include "template_impl.cpp"
933
}
934
935
#endif
Generated on Wed Jul 10 2013 09:17:09 for mathkit by
1.8.4