41 cmat
sqrtm(
const mat& A)
47 cmat
sqrtm(
const cmat& A)
56 for (
int j = 0; j < n; j++)
61 for (
int p = 0; p < n - 1; p++) {
62 for (
int i = 0; i < n - (p + 1); i++) {
63 const int j = i + p + 1;
64 std::complex<double> s = T(i, j);
66 for (
int k = i + 1; k < j; k++)
67 s -= R(i, k) * R(k, j);
69 const std::complex<double> d = R(i, i) + R(j, j) + fudge;
70 const std::complex<double> conj_d =
conj(d);
72 R(i, j) = (s * conj_d) / (d * conj_d);
80 bool all(
const bvec &testvec)
82 for (
int i = 0; i < testvec.length(); i++)
83 if (!testvec(i))
return false;
87 bool any(
const bvec &testvec)
89 for (
int i = 0; i < testvec.length(); i++)
90 if (testvec(i))
return true;
98 template ITPP_EXPORT
int length(
const vec &v);
99 template ITPP_EXPORT
int length(
const cvec &v);
100 template ITPP_EXPORT
int length(
const svec &v);
101 template ITPP_EXPORT
int length(
const ivec &v);
102 template ITPP_EXPORT
int length(
const bvec &v);
104 template ITPP_EXPORT
double sum(
const vec &v);
105 template ITPP_EXPORT std::complex<double>
sum(
const cvec &v);
106 template ITPP_EXPORT
short sum(
const svec &v);
107 template ITPP_EXPORT
int sum(
const ivec &v);
108 template ITPP_EXPORT bin
sum(
const bvec &v);
110 template ITPP_EXPORT
double sum_sqr(
const vec &v);
111 template ITPP_EXPORT std::complex<double>
sum_sqr(
const cvec &v);
112 template ITPP_EXPORT
short sum_sqr(
const svec &v);
113 template ITPP_EXPORT
int sum_sqr(
const ivec &v);
114 template ITPP_EXPORT bin
sum_sqr(
const bvec &v);
116 template ITPP_EXPORT vec
cumsum(
const vec &v);
117 template ITPP_EXPORT cvec
cumsum(
const cvec &v);
118 template ITPP_EXPORT svec
cumsum(
const svec &v);
119 template ITPP_EXPORT ivec
cumsum(
const ivec &v);
120 template ITPP_EXPORT bvec
cumsum(
const bvec &v);
122 template ITPP_EXPORT
double prod(
const vec &v);
123 template ITPP_EXPORT std::complex<double>
prod(
const cvec &v);
124 template ITPP_EXPORT
short prod(
const svec &v);
125 template ITPP_EXPORT
int prod(
const ivec &v);
126 template ITPP_EXPORT bin
prod(
const bvec &v);
128 template ITPP_EXPORT vec
cross(
const vec &v1,
const vec &v2);
129 template ITPP_EXPORT cvec
cross(
const cvec &v1,
const cvec &v2);
130 template ITPP_EXPORT ivec
cross(
const ivec &v1,
const ivec &v2);
131 template ITPP_EXPORT svec
cross(
const svec &v1,
const svec &v2);
132 template ITPP_EXPORT bvec
cross(
const bvec &v1,
const bvec &v2);
134 template ITPP_EXPORT vec
reverse(
const vec &in);
135 template ITPP_EXPORT cvec
reverse(
const cvec &in);
136 template ITPP_EXPORT svec
reverse(
const svec &in);
137 template ITPP_EXPORT ivec
reverse(
const ivec &in);
138 template ITPP_EXPORT bvec
reverse(
const bvec &in);
140 template ITPP_EXPORT vec
zero_pad(
const vec &v,
int n);
141 template ITPP_EXPORT cvec
zero_pad(
const cvec &v,
int n);
142 template ITPP_EXPORT ivec
zero_pad(
const ivec &v,
int n);
143 template ITPP_EXPORT svec
zero_pad(
const svec &v,
int n);
144 template ITPP_EXPORT bvec
zero_pad(
const bvec &v,
int n);
146 template ITPP_EXPORT vec
zero_pad(
const vec &v);
147 template ITPP_EXPORT cvec
zero_pad(
const cvec &v);
148 template ITPP_EXPORT ivec
zero_pad(
const ivec &v);
149 template ITPP_EXPORT svec
zero_pad(
const svec &v);
150 template ITPP_EXPORT bvec
zero_pad(
const bvec &v);
152 template ITPP_EXPORT mat
zero_pad(
const mat &,
int,
int);
153 template ITPP_EXPORT cmat
zero_pad(
const cmat &,
int,
int);
154 template ITPP_EXPORT imat
zero_pad(
const imat &,
int,
int);
155 template ITPP_EXPORT smat
zero_pad(
const smat &,
int,
int);
158 template ITPP_EXPORT vec
sum(
const mat &m,
int dim);
159 template ITPP_EXPORT cvec
sum(
const cmat &m,
int dim);
160 template ITPP_EXPORT svec
sum(
const smat &m,
int dim);
161 template ITPP_EXPORT ivec
sum(
const imat &m,
int dim);
162 template ITPP_EXPORT bvec
sum(
const bmat &m,
int dim);
164 template ITPP_EXPORT
double sumsum(
const mat &X);
165 template ITPP_EXPORT std::complex<double>
sumsum(
const cmat &X);
166 template ITPP_EXPORT
short sumsum(
const smat &X);
167 template ITPP_EXPORT
int sumsum(
const imat &X);
168 template ITPP_EXPORT bin
sumsum(
const bmat &X);
170 template ITPP_EXPORT vec
sum_sqr(
const mat & m,
int dim);
171 template ITPP_EXPORT cvec
sum_sqr(
const cmat &m,
int dim);
172 template ITPP_EXPORT svec
sum_sqr(
const smat &m,
int dim);
173 template ITPP_EXPORT ivec
sum_sqr(
const imat &m,
int dim);
174 template ITPP_EXPORT bvec
sum_sqr(
const bmat &m,
int dim);
176 template ITPP_EXPORT mat
cumsum(
const mat &m,
int dim);
177 template ITPP_EXPORT cmat
cumsum(
const cmat &m,
int dim);
178 template ITPP_EXPORT smat
cumsum(
const smat &m,
int dim);
179 template ITPP_EXPORT imat
cumsum(
const imat &m,
int dim);
182 template ITPP_EXPORT vec
prod(
const mat &m,
int dim);
183 template ITPP_EXPORT cvec
prod(
const cmat &v,
int dim);
184 template ITPP_EXPORT svec
prod(
const smat &m,
int dim);
185 template ITPP_EXPORT ivec
prod(
const imat &m,
int dim);
186 template ITPP_EXPORT bvec
prod(
const bmat &m,
int dim);
188 template ITPP_EXPORT vec
diag(
const mat &in);
189 template ITPP_EXPORT cvec
diag(
const cmat &in);
191 template ITPP_EXPORT
void diag(
const vec &in, mat &m);
192 template ITPP_EXPORT
void diag(
const cvec &in, cmat &m);
194 template ITPP_EXPORT mat
diag(
const vec &v,
const int K);
195 template ITPP_EXPORT cmat
diag(
const cvec &v,
const int K);
197 template ITPP_EXPORT mat
bidiag(
const vec &,
const vec &);
198 template ITPP_EXPORT cmat
bidiag(
const cvec &,
const cvec &);
200 template ITPP_EXPORT
void bidiag(
const vec &,
const vec &, mat &);
201 template ITPP_EXPORT
void bidiag(
const cvec &,
const cvec &, cmat &);
203 template ITPP_EXPORT
void bidiag(
const mat &, vec &, vec &);
204 template ITPP_EXPORT
void bidiag(
const cmat &, cvec &, cvec &);
206 template ITPP_EXPORT mat
tridiag(
const vec &main,
const vec &,
const vec &);
207 template ITPP_EXPORT cmat
tridiag(
const cvec &main,
const cvec &,
const cvec &);
209 template ITPP_EXPORT
void tridiag(
const vec &main,
const vec &,
const vec &, mat &);
210 template ITPP_EXPORT
void tridiag(
const cvec &main,
const cvec &,
const cvec &, cmat &);
212 template ITPP_EXPORT
void tridiag(
const mat &m, vec &, vec &, vec &);
213 template ITPP_EXPORT
void tridiag(
const cmat &m, cvec &, cvec &, cvec &);
215 template ITPP_EXPORT
double trace(
const mat &in);
216 template ITPP_EXPORT std::complex<double>
trace(
const cmat &in);
217 template ITPP_EXPORT
short trace(
const smat &in);
218 template ITPP_EXPORT
int trace(
const imat &in);
219 template ITPP_EXPORT bin
trace(
const bmat &in);
221 template ITPP_EXPORT
void transpose(
const mat &m, mat &out);
222 template ITPP_EXPORT
void transpose(
const cmat &m, cmat &out);
223 template ITPP_EXPORT
void transpose(
const smat &m, smat &out);
224 template ITPP_EXPORT
void transpose(
const imat &m, imat &out);
227 template ITPP_EXPORT mat
transpose(
const mat &m);
228 template ITPP_EXPORT cmat
transpose(
const cmat &m);
229 template ITPP_EXPORT smat
transpose(
const smat &m);
230 template ITPP_EXPORT imat
transpose(
const imat &m);
248 template ITPP_EXPORT
bool is_unitary(
const mat &X);
249 template ITPP_EXPORT
bool is_unitary(
const cmat &X);
251 template ITPP_EXPORT vec
rvectorize(
const mat &m);
252 template ITPP_EXPORT cvec
rvectorize(
const cmat &m);
253 template ITPP_EXPORT ivec
rvectorize(
const imat &m);
254 template ITPP_EXPORT svec
rvectorize(
const smat &m);
257 template ITPP_EXPORT vec
cvectorize(
const mat &m);
258 template ITPP_EXPORT cvec
cvectorize(
const cmat &m);
259 template ITPP_EXPORT ivec
cvectorize(
const imat &m);
260 template ITPP_EXPORT svec
cvectorize(
const smat &m);
263 template ITPP_EXPORT mat
reshape(
const mat &m,
int rows,
int cols);
264 template ITPP_EXPORT cmat
reshape(
const cmat &m,
int rows,
int cols);
265 template ITPP_EXPORT imat
reshape(
const imat &m,
int rows,
int cols);
266 template ITPP_EXPORT smat
reshape(
const smat &m,
int rows,
int cols);
269 template ITPP_EXPORT mat
reshape(
const vec &m,
int rows,
int cols);
270 template ITPP_EXPORT cmat
reshape(
const cvec &m,
int rows,
int cols);
271 template ITPP_EXPORT imat
reshape(
const ivec &m,
int rows,
int cols);
272 template ITPP_EXPORT smat
reshape(
const svec &m,
int rows,
int cols);
273 template ITPP_EXPORT
bmat reshape(
const bvec &m,
int rows,
int cols);
275 template ITPP_EXPORT mat
kron(
const mat &X,
const mat &Y);
276 template ITPP_EXPORT cmat
kron(
const cmat &X,
const cmat &Y);
277 template ITPP_EXPORT imat
kron(
const imat &X,
const imat &Y);
278 template ITPP_EXPORT smat
kron(
const smat &X,
const smat &Y);
281 template ITPP_EXPORT vec repmat(
const vec &v,
int n);
282 template ITPP_EXPORT cvec repmat(
const cvec &v,
int n);
283 template ITPP_EXPORT ivec repmat(
const ivec &v,
int n);
284 template ITPP_EXPORT svec repmat(
const svec &v,
int n);
285 template ITPP_EXPORT bvec repmat(
const bvec &v,
int n);
287 template ITPP_EXPORT mat repmat(
const vec &v,
int m,
int n,
bool transpose);
288 template ITPP_EXPORT cmat repmat(
const cvec &v,
int m,
int n,
bool transpose);
289 template ITPP_EXPORT imat repmat(
const ivec &v,
int m,
int n,
bool transpose);
290 template ITPP_EXPORT smat repmat(
const svec &v,
int m,
int n,
bool transpose);
291 template ITPP_EXPORT
bmat repmat(
const bvec &v,
int m,
int n,
bool transpose);
293 template ITPP_EXPORT mat repmat(
const mat &data,
int m,
int n);
294 template ITPP_EXPORT cmat repmat(
const cmat &data,
int m,
int n);
295 template ITPP_EXPORT imat repmat(
const imat &data,
int m,
int n);
296 template ITPP_EXPORT smat repmat(
const smat &data,
int m,
int n);
297 template ITPP_EXPORT
bmat repmat(
const bmat &data,
int m,
int n);