56 it_error(
"it_ifile::open(): Corrupt file (not an it_file)");
80 if (h.
type !=
"" && h.
name == name) {
97 for (
int i = 0; i <= n; i++) {
106 s.seekg((i == n) ? p : p + static_cast<std::streamoff>(h.
block_bytes));
112 std::string &desc, uint64_t &bytes)
129 s.read(reinterpret_cast<char *>(&h),
sizeof(h));
136 std::streampos p =
s.tellg();
160 x = (tmp == 0) ?
false :
true;
197 float x_real, x_imag;
200 x = std::complex<float>(x_real, x_imag);
205 double x_real, x_imag;
208 x = std::complex<double>(x_real, x_imag);
216 v.set_size(static_cast<int>(size),
false);
217 for (
int i = 0; i < v.size(); ++i) {
228 v.set_size(static_cast<int>(size),
false);
229 for (
int i = 0; i < v.size(); ++i) {
240 v.set_size(static_cast<int>(size),
false);
241 for (
int i = 0; i < v.size(); ++i) {
252 v.set_size(static_cast<int>(size),
false);
253 for (
int i = 0; i < v.size(); ++i) {
255 v(i) =
static_cast<double>(val);
263 v.set_size(static_cast<int>(size),
false);
264 for (
int i = 0; i < v.size(); ++i)
271 float val_real, val_imag;
273 v.set_size(static_cast<int>(size),
false);
274 for (
int i = 0; i < v.size(); ++i) {
277 v(i) = std::complex<double>(val_real, val_imag);
284 double val_real, val_imag;
286 v.set_size(static_cast<int>(size),
false);
287 for (
int i = 0; i < v.size(); ++i) {
290 v(i) = std::complex<double>(val_real, val_imag);
298 std::string::size_type size2 =
static_cast<std::string::size_type
>(
size);
300 for (std::string::size_type i = 0; i < size2; ++i)
309 m.set_size(static_cast<int>(i), static_cast<int>(j),
false);
310 for (
int j = 0; j < m.cols(); ++j) {
311 for (
int i = 0; i < m.rows(); ++i) {
323 m.set_size(static_cast<int>(i), static_cast<int>(j),
false);
324 for (
int j = 0; j < m.cols(); ++j)
325 for (
int i = 0; i < m.rows(); ++i) {
336 m.set_size(static_cast<int>(i), static_cast<int>(j),
false);
337 for (
int j = 0; j < m.cols(); ++j)
338 for (
int i = 0; i < m.rows(); ++i) {
349 m.set_size(static_cast<int>(i), static_cast<int>(j),
false);
350 for (
int j = 0; j < m.cols(); ++j)
351 for (
int i = 0; i < m.rows(); ++i) {
353 m(i, j) =
static_cast<double>(val);
361 m.set_size(static_cast<int>(i), static_cast<int>(j),
false);
362 for (
int j = 0; j < m.cols(); ++j)
363 for (
int i = 0; i < m.rows(); ++i)
370 float val_real, val_imag;
372 m.set_size(static_cast<int>(i), static_cast<int>(j),
false);
373 for (
int j = 0; j < m.cols(); ++j)
374 for (
int i = 0; i < m.rows(); ++i) {
377 m(i, j) = std::complex<double>(val_real, val_imag);
384 double val_real, val_imag;
386 m.set_size(static_cast<int>(i), static_cast<int>(j),
false);
387 for (
int j = 0; j < m.cols(); ++j)
388 for (
int i = 0; i < m.rows(); ++i) {
391 m(i, j) = std::complex<double>(val_real, val_imag);
400 v.
set_size(static_cast<int>(size),
false);
401 for (
int i = 0; i < v.
size(); ++i) {
412 v.
set_size(static_cast<int>(size),
false);
413 for (
int i = 0; i < v.
size(); ++i) {
424 v.
set_size(static_cast<int>(size),
false);
425 for (
int i = 0; i < v.
size(); ++i) {
435 v.
set_size(static_cast<int>(size),
false);
436 for (
int i = 0; i < v.
size(); ++i)
445 v.
set_size(static_cast<int>(size),
false);
446 for (
int i = 0; i < v.
size(); ++i) {
448 v(i) =
static_cast<double>(val);
456 v.
set_size(static_cast<int>(size),
false);
457 for (
int i = 0; i < v.
size(); ++i)
464 float val_real, val_imag;
466 v.set_size(static_cast<int>(size),
false);
467 for (
int i = 0; i < v.size(); ++i) {
470 v(i) = std::complex<float>(val_real, val_imag);
477 float val_real, val_imag;
479 v.set_size(static_cast<int>(size),
false);
480 for (
int i = 0; i < v.size(); ++i) {
483 v(i) = std::complex<double>(val_real, val_imag);
490 double val_real, val_imag;
492 v.set_size(static_cast<int>(size),
false);
493 for (
int i = 0; i < v.size(); ++i) {
496 v(i) = std::complex<double>(val_real, val_imag);
509 low_prec(false), next_name(
""), next_desc(
""), fname(
"")
519 s.
open(name, trunc, bfstream_base::l_endian);
520 it_assert(
s.is_open(),
"it_file::open(): Could not open file for writing");
526 it_error(
"it_file::open(): Corrupt file (not an it_file)");
551 "write without a name");
558 const std::string &name, uint64_t
size,
559 const std::string &desc)
564 h1.
hdr_bytes = 3 *
sizeof(uint64_t) + type.size() + 1 + name.size() + 1
581 std::streampos p =
s.tellp();
588 s.seekp(0, std::ios::end);
592 std::streamoff skip =
static_cast<std::streamoff
>(h2.
block_bytes);
607 s.seekp(p + static_cast<std::streamoff>(h2.
block_bytes));
639 h.
hdr_bytes = 3 *
sizeof(uint64_t) + 1 + 1 + 1;
643 s.seekp(p + static_cast<std::streamoff>(h.
block_bytes));
653 it_assert(
s.is_open(),
"it_file::pack(): File has to be open");
656 s.seekg(0, std::ios::end);
657 std::streampos p =
s.tellg();
658 s.seekg(0, std::ios::beg);
662 char* buffer =
new char[int(p)];
663 char* b_ptr = buffer;
685 s.seekg(p + static_cast<std::streamoff>(h.
block_bytes));
690 s.
open(fname,
true, bfstream_base::l_endian);
692 for (uint64_t i = 0; i <
size; ++i)
714 s.seekg(p + static_cast<std::streamoff>(h.
block_bytes));
730 s << static_cast<char>(x);
740 s << static_cast<int16_t>(x);
745 s << static_cast<int32_t>(x);
772 s << static_cast<uint64_t>(v.size());
773 for (
int i = 0; i < v.size(); ++i)
779 s << static_cast<uint64_t>(v.size());
780 for (
int i = 0; i < v.size(); ++i)
781 s << static_cast<int16_t>(v(i));
786 s << static_cast<uint64_t>(v.size());
787 for (
int i = 0; i < v.size(); ++i)
788 s << static_cast<int32_t>(v(i));
793 s << static_cast<uint64_t>(v.size());
795 for (
int i = 0; i < v.size(); ++i)
796 s << static_cast<float>(v(i));
799 for (
int i = 0; i < v.size(); ++i)
806 s << static_cast<uint64_t>(v.size());
808 for (
int i = 0; i < v.size(); ++i) {
809 s << static_cast<float>(v(i).real());
810 s << static_cast<float>(v(i).imag());
814 for (
int i = 0; i < v.size(); ++i) {
823 s << static_cast<uint64_t>(str.size());
824 for (std::string::size_type i = 0; i < str.size(); ++i)
830 s << static_cast<uint64_t>(m.rows())
831 << static_cast<uint64_t>(m.cols());
832 for (
int j = 0; j < m.cols(); ++j)
833 for (
int i = 0; i < m.rows(); ++i)
834 s << m(i, j).value();
839 s << static_cast<uint64_t>(m.rows())
840 << static_cast<uint64_t>(m.cols());
841 for (
int j = 0; j < m.cols(); ++j)
842 for (
int i = 0; i < m.rows(); ++i)
843 s << static_cast<int16_t>(m(i, j));
848 s << static_cast<uint64_t>(m.rows())
849 << static_cast<uint64_t>(m.cols());
850 for (
int j = 0; j < m.cols(); ++j)
851 for (
int i = 0; i < m.rows(); ++i)
852 s << static_cast<int32_t>(m(i, j));
857 s << static_cast<uint64_t>(m.rows())
858 << static_cast<uint64_t>(m.cols());
860 for (
int j = 0; j < m.cols(); ++j)
861 for (
int i = 0; i < m.rows(); ++i)
862 s << static_cast<float>(m(i, j));
865 for (
int j = 0; j < m.cols(); ++j)
866 for (
int i = 0; i < m.rows(); ++i)
873 s << static_cast<uint64_t>(m.rows())
874 << static_cast<uint64_t>(m.cols());
876 for (
int j = 0; j < m.cols(); ++j)
877 for (
int i = 0; i < m.rows(); ++i) {
878 s << static_cast<float>(m(i, j).real());
879 s << static_cast<float>(m(i, j).imag());
883 for (
int j = 0; j < m.cols(); ++j)
884 for (
int i = 0; i < m.rows(); ++i) {
893 s << static_cast<uint64_t>(v.
size());
894 for (
int i = 0; i < v.
size(); ++i)
900 s << static_cast<uint64_t>(v.
size());
901 for (
int i = 0; i < v.
size(); ++i)
902 s << static_cast<int16_t>(v(i));
907 s << static_cast<uint64_t>(v.
size());
908 for (
int i = 0; i < v.
size(); ++i)
909 s << static_cast<int32_t>(v(i));
914 s << static_cast<uint64_t>(v.
size());
915 for (
int i = 0; i < v.
size(); ++i)
921 s << static_cast<uint64_t>(v.
size());
923 for (
int i = 0; i < v.
size(); ++i)
924 s << static_cast<float>(v(i));
927 for (
int i = 0; i < v.
size(); ++i)
928 s << static_cast<double>(v(i));
934 s << static_cast<uint64_t>(v.size());
935 for (
int i = 0; i < v.size(); ++i) {
943 s << static_cast<uint64_t>(v.size());
945 for (
int i = 0; i < v.size(); ++i) {
946 s << static_cast<float>(v(i).real());
947 s << static_cast<float>(v(i).imag());
951 for (
int i = 0; i < v.size(); ++i) {
963 it_assert(h.
type ==
"int8",
"it_ifile::operator>>(): Wrong type");
972 it_assert(h.
type ==
"bool",
"it_ifile::operator>>(): Wrong type");
981 it_assert(h.
type ==
"bin",
"it_ifile::operator>>(): Wrong type");
990 it_assert(h.
type ==
"int16",
"it_ifile::operator>>(): Wrong type");
999 if (h.
type ==
"int32")
1001 else if (h.
type ==
"int16") {
1004 x =
static_cast<int>(x16);
1007 it_error(
"it_ifile::operator>>(): Wrong type");
1016 it_assert(h.
type ==
"float32",
"it_ifile::operator>>(): Wrong type");
1025 if (h.
type ==
"float64")
1027 else if (h.
type ==
"float32") {
1030 x =
static_cast<double>(f32);
1033 it_error(
"it_ifile::operator>>(): Wrong type");
1043 "it_ifile::operator>>(): Wrong type");
1052 if (h.
type ==
"cfloat64")
1054 else if (h.
type ==
"cfloat32") {
1055 std::complex<float> f32_c;
1057 x =
static_cast<std::complex<double>
>(f32_c);
1060 it_error(
"it_ifile::operator>>(): Wrong type");
1069 it_assert(h.
type ==
"bvec",
"it_ifile::operator>>(): Wrong type");
1078 it_assert(h.
type ==
"svec",
"it_ifile::operator>>(): Wrong type");
1087 it_assert(h.
type ==
"ivec",
"it_ifile::operator>>(): Wrong type");
1097 if (h.
type ==
"fvec")
1099 else if (h.
type ==
"dvec")
1102 it_error(
"it_ifile::operator>>(): Wrong type");
1112 if (h.
type ==
"fcvec")
1114 else if (h.
type ==
"dcvec")
1117 it_error(
"it_ifile::operator>>(): Wrong type");
1126 it_assert(h.
type ==
"string",
"it_ifile::operator>>(): Wrong type");
1135 it_assert(h.
type ==
"bmat",
"it_ifile::operator>>(): Wrong type");
1144 it_assert(h.
type ==
"smat",
"it_ifile::operator>>(): Wrong type");
1153 it_assert(h.
type ==
"imat",
"it_ifile::operator>>(): Wrong type");
1163 if (h.
type ==
"fmat")
1165 else if (h.
type ==
"dmat")
1168 it_error(
"it_ifile::operator>>(): Wrong type");
1177 if (h.
type ==
"fcmat")
1179 else if (h.
type ==
"dcmat")
1182 it_error(
"it_ifile::operator>>(): Wrong type");
1191 it_assert(h.
type ==
"bArray",
"it_ifile::operator>>(): Wrong type");
1200 it_assert(h.
type ==
"sArray",
"it_ifile::operator>>(): Wrong type");
1209 it_assert(h.
type ==
"iArray",
"it_ifile::operator>>(): Wrong type");
1218 it_assert(h.
type ==
"fArray",
"it_ifile::operator>>(): Wrong type");
1227 if (h.
type ==
"fArray")
1229 else if (h.
type ==
"dArray")
1232 it_error(
"it_ifile::operator>>(): Wrong type");
1241 it_assert(h.
type ==
"fcArray",
"it_ifile::operator>>(): Wrong type");
1250 if (h.
type ==
"fcArray")
1252 else if (h.
type ==
"dcArray")
1255 it_error(
"it_ifile::operator>>(): Wrong type");
1264 it_assert(h.
type ==
"bvecArray",
"it_ifile::operator>>(): Wrong type");
1267 int size =
static_cast<int>(n);
1269 for (
int i = 0; i <
size; ++i)
1279 it_assert(h.
type ==
"svecArray",
"it_ifile::operator>>(): Wrong type");
1282 int size =
static_cast<int>(n);
1284 for (
int i = 0; i <
size; ++i)
1294 it_assert(h.
type ==
"ivecArray",
"it_ifile::operator>>(): Wrong type");
1297 int size =
static_cast<int>(n);
1299 for (
int i = 0; i <
size; ++i)
1309 it_assert(h.
type ==
"vecArray",
"it_ifile::operator>>(): Wrong type");
1312 int size =
static_cast<int>(n);
1314 for (
int i = 0; i <
size; ++i)
1324 it_assert(h.
type ==
"cvecArray",
"it_ifile::operator>>(): Wrong type");
1327 int size =
static_cast<int>(n);
1329 for (
int i = 0; i <
size; ++i)
1339 it_assert(h.
type ==
"stringArray",
"it_ifile::operator>>(): Wrong type");
1342 int size =
static_cast<int>(n);
1344 for (
int i = 0; i <
size; ++i)
1354 it_assert(h.
type ==
"bmatArray",
"it_ifile::operator>>(): Wrong type");
1357 int size =
static_cast<int>(n);
1359 for (
int i = 0; i <
size; ++i)
1369 it_assert(h.
type ==
"smatArray",
"it_ifile::operator>>(): Wrong type");
1372 int size =
static_cast<int>(n);
1374 for (
int i = 0; i <
size; ++i)
1384 it_assert(h.
type ==
"imatArray",
"it_ifile::operator>>(): Wrong type");
1387 int size =
static_cast<int>(n);
1389 for (
int i = 0; i <
size; ++i)
1399 it_assert(h.
type ==
"matArray",
"it_ifile::operator>>(): Wrong type");
1402 int size =
static_cast<int>(n);
1404 for (
int i = 0; i <
size; ++i)
1414 it_assert(h.
type ==
"cmatArray",
"it_ifile::operator>>(): Wrong type");
1417 int size =
static_cast<int>(n);
1419 for (
int i = 0; i <
size; ++i)
1475 it_file &operator<<(it_file &f, std::complex<float> x)
1478 f.low_level_write(x);
1482 it_file &operator<<(it_file &f, std::complex<double> x)
1485 f.low_level_write(x);
1514 + v.size() *
sizeof(float));
1517 + v.size() *
sizeof(double));
1526 + v.size() * 2 *
sizeof(float));
1529 + v.size() * 2 *
sizeof(double));
1544 + m.rows() * m.cols() *
sizeof(char));
1552 + m.rows() * m.cols() *
sizeof(int16_t));
1560 + m.rows() * m.cols() *
sizeof(int32_t));
1569 + m.rows() * m.cols() *
sizeof(float));
1572 + m.rows() * m.cols() *
sizeof(double));
1581 + m.rows() * m.cols() * 2 *
sizeof(float));
1584 + m.rows() * m.cols() * 2 *
sizeof(double));
1589 it_file &operator<<(it_file &f, const Array<bin> &v)
1592 f.low_level_write(v);
1596 it_file &operator<<(it_file &f, const Array<short> &v)
1599 + v.size() *
sizeof(int16_t));
1600 f.low_level_write(v);
1604 it_file &operator<<(it_file &f, const Array<int> &v)
1607 + v.size() *
sizeof(int32_t));
1608 f.low_level_write(v);
1612 it_file &operator<<(it_file &f, const Array<float> &v)
1615 f.low_level_write(v);
1619 it_file &operator<<(it_file &f, const Array<double> &v)
1621 if (f.get_low_precision())
1623 + v.size() *
sizeof(float));
1625 f.write_data_header(
"dArray",
sizeof(uint64_t)
1626 + v.size() *
sizeof(double));
1627 f.low_level_write(v);
1631 it_file &operator<<(it_file &f, const Array<std::complex<float> > &v)
1634 + v.size() * 2 *
sizeof(float));
1635 f.low_level_write(v);
1639 it_file &operator<<(it_file &f, const Array<std::complex<double> > &v)
1641 if (f.get_low_precision())
1643 + v.size() * 2 *
sizeof(float));
1645 f.write_data_header(
"dcArray",
sizeof(uint64_t)
1646 + v.size() * 2 *
sizeof(double));
1647 f.low_level_write(v);
1651 it_file &operator<<(it_file &f, const Array<bvec> &v)
1655 for (
int i = 0; i < v.size(); ++i)
1656 sum_l += v(i).size();
1660 + sum_l *
sizeof(
char));
1662 f.low_level_write(static_cast<uint64_t>(v.size()));
1665 for (
int i = 0; i < v.size(); ++i)
1666 f.low_level_write(v(i));
1671 it_file &operator<<(it_file &f, const Array<svec> &v)
1675 for (
int i = 0; i < v.size(); ++i)
1676 sum_l += v(i).size();
1680 + sum_l *
sizeof(int16_t));
1682 f.low_level_write(static_cast<uint64_t>(v.size()));
1685 for (
int i = 0; i < v.size(); ++i)
1686 f.low_level_write(v(i));
1691 it_file &operator<<(it_file &f, const Array<ivec> &v)
1695 for (
int i = 0; i < v.size(); ++i)
1696 sum_l += v(i).size();
1700 + sum_l *
sizeof(int32_t));
1702 f.low_level_write(static_cast<uint64_t>(v.size()));
1705 for (
int i = 0; i < v.size(); ++i)
1706 f.low_level_write(v(i));
1711 it_file &operator<<(it_file &f, const Array<vec> &v)
1715 for (
int i = 0; i < v.size(); ++i)
1716 sum_l += v(i).size();
1720 + sum_l *
sizeof(
double));
1722 f.low_level_write(static_cast<uint64_t>(v.size()));
1725 for (
int i = 0; i < v.size(); ++i)
1726 f.low_level_write(v(i));
1731 it_file &operator<<(it_file &f, const Array<cvec> &v)
1735 for (
int i = 0; i < v.size(); ++i)
1736 sum_l += v(i).size();
1740 + sum_l * 2 *
sizeof(
double));
1742 f.low_level_write(static_cast<uint64_t>(v.size()));
1745 for (
int i = 0; i < v.size(); ++i)
1746 f.low_level_write(v(i));
1751 it_file &operator<<(it_file &f, const Array<std::string> &v)
1755 for (
int i = 0; i < v.size(); ++i)
1756 sum_l += v(i).size();
1760 + sum_l *
sizeof(
char));
1762 f.low_level_write(static_cast<uint64_t>(v.size()));
1765 for (
int i = 0; i < v.size(); ++i)
1766 f.low_level_write(v(i));
1771 it_file &operator<<(it_file &f, const Array<bmat> &v)
1775 for (
int i = 0; i < v.size(); ++i)
1776 sum_l += v(i)._datasize();
1780 + sum_l *
sizeof(
char));
1782 f.low_level_write(static_cast<uint64_t>(v.size()));
1785 for (
int i = 0; i < v.size(); ++i)
1786 f.low_level_write(v(i));
1791 it_file &operator<<(it_file &f, const Array<smat> &v)
1795 for (
int i = 0; i < v.size(); ++i)
1796 sum_l += v(i)._datasize();
1800 + sum_l *
sizeof(int16_t));
1802 f.low_level_write(static_cast<uint64_t>(v.size()));
1805 for (
int i = 0; i < v.size(); ++i)
1806 f.low_level_write(v(i));
1811 it_file &operator<<(it_file &f, const Array<imat> &v)
1815 for (
int i = 0; i < v.size(); ++i)
1816 sum_l += v(i)._datasize();
1820 + sum_l *
sizeof(int32_t));
1822 f.low_level_write(static_cast<uint64_t>(v.size()));
1825 for (
int i = 0; i < v.size(); ++i)
1826 f.low_level_write(v(i));
1831 it_file &operator<<(it_file &f, const Array<mat> &v)
1835 for (
int i = 0; i < v.size(); ++i)
1836 sum_l += v(i)._datasize();
1840 + sum_l *
sizeof(
double));
1842 f.low_level_write(static_cast<uint64_t>(v.size()));
1845 for (
int i = 0; i < v.size(); ++i)
1846 f.low_level_write(v(i));
1851 it_file &operator<<(it_file &f, const Array<cmat> &v)
1855 for (
int i = 0; i < v.size(); ++i)
1856 sum_l += v(i)._datasize();
1860 + sum_l * 2 *
sizeof(
double));
1862 f.low_level_write(static_cast<uint64_t>(v.size()));
1865 for (
int i = 0; i < v.size(); ++i)
1866 f.low_level_write(v(i));
1898 it_error(
"Corrupt file (Not an it-file)");
1923 if (h.
type !=
"" && h.
name == name) {
1927 s.seekg(p + static_cast<std::streamoff>(h.
block_bytes));
1940 for (
int i = 0; i <= n; i++) {
1949 s.seekg(i == n ? p : p + static_cast<std::streamoff>(h.
block_bytes));
1971 memset(&h, 0,
sizeof(h));
1972 s.read(reinterpret_cast<char *>(&h),
sizeof(h));
1979 std::streampos p =
s.tellg();
1994 s.seekg(p + static_cast<std::streamoff>(h.
hdr_bytes));
2031 float x_real, x_imag;
2034 x = std::complex<float>(x_real, x_imag);
2039 double x_real, x_imag;
2042 x = std::complex<double>(x_real, x_imag);
2051 v.set_size(i,
false);
2052 for (i = 0; i < v.size(); i++) {
2054 v(i) =
static_cast<double>(val);
2064 v.set_size(i,
false);
2065 for (i = 0; i < v.size(); i++) {
2067 v(i) =
static_cast<double>(val);
2076 v.set_size(i,
false);
2077 for (i = 0; i < v.size(); i++) {
2088 v.set_size(i,
false);
2089 for (i = 0; i < v.size(); i++)
2096 float val_real, val_imag;
2099 v.set_size(i,
false);
2100 for (i = 0; i < v.size(); i++) {
2103 v(i) = std::complex<double>(val_real, val_imag);
2110 double val_real, val_imag;
2113 v.set_size(i,
false);
2114 for (i = 0; i < v.size(); i++) {
2117 v(i) = std::complex<double>(val_real, val_imag);
2129 for (j = 0; j < i; j++) {
2141 m.set_size(i, j,
false);
2142 for (j = 0; j < m.cols(); j++)
2143 for (i = 0; i < m.rows(); i++) {
2145 m(i, j) =
static_cast<double>(val);
2155 m.set_size(i, j,
false);
2156 for (j = 0; j < m.cols(); j++)
2157 for (i = 0; i < m.rows(); i++) {
2159 m(i, j) =
static_cast<double>(val);
2168 m.set_size(i, j,
false);
2169 for (j = 0; j < m.cols(); j++)
2170 for (i = 0; i < m.rows(); i++) {
2181 m.set_size(i, j,
false);
2182 for (j = 0; j < m.cols(); j++)
2183 for (i = 0; i < m.rows(); i++)
2190 float val_real, val_imag;
2193 m.set_size(i, j,
false);
2194 for (j = 0; j < m.cols(); j++)
2195 for (i = 0; i < m.rows(); i++) {
2198 m(i, j) = std::complex<double>(val_real, val_imag);
2205 double val_real, val_imag;
2208 m.set_size(i, j,
false);
2209 for (j = 0; j < m.cols(); j++)
2210 for (i = 0; i < m.rows(); i++) {
2213 m(i, j) = std::complex<double>(val_real, val_imag);
2225 for (i = 0; i < v.
size(); i++) {
2238 for (i = 0; i < v.
size(); i++) {
2240 v(i) =
static_cast<double>(val);
2251 for (i = 0; i < v.
size(); i++) {
2253 v(i) =
static_cast<double>(val);
2263 for (i = 0; i < v.
size(); i++) {
2275 for (i = 0; i < v.
size(); i++)
2282 float val_real, val_imag;
2285 v.set_size(i,
false);
2286 for (i = 0; i < v.size(); i++) {
2289 v(i) = std::complex<float>(val_real, val_imag);
2296 float val_real, val_imag;
2299 v.set_size(i,
false);
2300 for (i = 0; i < v.size(); i++) {
2303 v(i) = std::complex<double>(val_real, val_imag);
2310 double val_real, val_imag;
2313 v.set_size(i,
false);
2314 for (i = 0; i < v.size(); i++) {
2317 v(i) = std::complex<double>(val_real, val_imag);
2339 s.
open(name, trunc);
2340 it_error_if(!
s.is_open(),
"Could not open file for writing");
2346 it_error(
"Corrupt file (Not an it-file)");
2374 const std::string &name, uint32_t
size)
2379 bool removed =
false;
2383 h1.
hdr_bytes = 1 + 3 * 4 + type.size() + 1 + name.size() + 1;
2403 if (h2.
type !=
"" && h2.
name == name) {
2412 if (availpos == 0) {
2427 s.seekg(p + static_cast<std::streamoff>(skip));
2432 s.seekp(0, std::ios::end);
2462 s.seekp(p + static_cast<std::streamoff>(h.
block_bytes));
2495 s << static_cast<int32_t>(x);
2523 s << static_cast<int32_t>(v.size());
2524 for (
int i = 0; i < v.size(); i++)
2525 s << static_cast<float>(v(i));
2528 s << static_cast<int32_t>(v.size());
2529 for (
int i = 0; i < v.size(); i++)
2530 s << static_cast<double>(v(i));
2536 s << static_cast<int32_t>(v.size());
2537 for (
int i = 0; i < v.size(); i++)
2538 s << static_cast<int32_t>(v(i));
2543 s << static_cast<int32_t>(v.size());
2544 for (
int i = 0; i < v.size(); i++)
2551 s << static_cast<int32_t>(v.size());
2552 for (
int i = 0; i < v.size(); i++) {
2553 s << static_cast<float>(v(i).real());
2554 s << static_cast<float>(v(i).imag());
2558 s << static_cast<int32_t>(v.size());
2559 for (
int i = 0; i < v.size(); i++) {
2560 s << static_cast<double>(v(i).real());
2561 s << static_cast<double>(v(i).imag());
2568 int size = str.size();
2569 s << static_cast<int32_t>(
size);
2571 for (
int i = 0; i <
size; i++)
2580 s << static_cast<int32_t>(m.rows()) << static_cast<int32_t>(m.cols());
2581 for (j = 0; j < m.cols(); j++)
2582 for (i = 0; i < m.rows(); i++)
2583 s << static_cast<float>(m(i, j));
2586 s << static_cast<int32_t>(m.rows()) << static_cast<int32_t>(m.cols());
2587 for (j = 0; j < m.cols(); j++)
2588 for (i = 0; i < m.rows(); i++)
2589 s << static_cast<double>(m(i, j));
2597 s << static_cast<int32_t>(m.rows()) << static_cast<int32_t>(m.cols());
2598 for (j = 0; j < m.cols(); j++)
2599 for (i = 0; i < m.rows(); i++)
2600 s << static_cast<int32_t>(m(i, j));
2607 s << static_cast<int32_t>(m.rows()) << static_cast<int32_t>(m.cols());
2608 for (j = 0; j < m.cols(); j++)
2609 for (i = 0; i < m.rows(); i++)
2610 s << m(i, j).value();
2618 s << static_cast<int32_t>(m.rows()) << static_cast<int32_t>(m.cols());
2619 for (j = 0; j < m.cols(); j++)
2620 for (i = 0; i < m.rows(); i++) {
2621 s << static_cast<float>(m(i, j).real());
2622 s << static_cast<float>(m(i, j).imag());
2627 s << static_cast<int32_t>(m.rows()) << static_cast<int32_t>(m.cols());
2628 for (j = 0; j < m.cols(); j++)
2629 for (i = 0; i < m.rows(); i++) {
2630 s << static_cast<double>(m(i, j).real());
2631 s << static_cast<double>(m(i, j).imag());
2638 s << static_cast<int32_t>(v.
size());
2639 for (
int i = 0; i < v.
size(); i++)
2646 s << static_cast<int32_t>(v.
size());
2647 for (
int i = 0; i < v.
size(); i++)
2648 s << static_cast<float>(v(i));
2651 s << static_cast<int32_t>(v.
size());
2652 for (
int i = 0; i < v.
size(); i++)
2653 s << static_cast<double>(v(i));
2659 s << static_cast<int32_t>(v.
size());
2660 for (
int i = 0; i < v.
size(); i++)
2661 s << static_cast<int32_t>(v(i));
2666 s << static_cast<int32_t>(v.
size());
2667 for (
int i = 0; i < v.
size(); i++)
2673 s << static_cast<int32_t>(v.size());
2674 for (
int i = 0; i < v.size(); i++) {
2683 s << static_cast<int32_t>(v.size());
2684 for (
int i = 0; i < v.size(); i++) {
2685 s << static_cast<float>(v(i).real());
2686 s << static_cast<float>(v(i).imag());
2690 s << static_cast<int32_t>(v.size());
2691 for (
int i = 0; i < v.size(); i++) {
2692 s << static_cast<double>(v(i).real());
2693 s << static_cast<double>(v(i).imag());
2703 if (h.
type ==
"int8")
2716 if (h.
type ==
"bin")
2729 if (h.
type ==
"int16")
2742 if (h.
type ==
"int32")
2744 else if (h.
type ==
"int16") {
2760 if (h.
type ==
"float64")
2762 else if (h.
type ==
"float32") {
2778 if (h.
type ==
"float32")
2792 if (h.
type ==
"float32_complex") {
2793 std::complex<float> f32_c;
2808 if (h.
type ==
"float64_complex")
2810 else if (h.
type ==
"float32_complex") {
2811 std::complex<float> f32_c;
2826 if (h.
type ==
"fvec")
2828 else if (h.
type ==
"dvec")
2841 if (h.
type ==
"ivec")
2854 if (h.
type ==
"bvec")
2867 if (h.
type ==
"fcvec")
2869 else if (h.
type ==
"dcvec")
2882 if (h.
type ==
"string")
2895 if (h.
type ==
"fmat")
2897 else if (h.
type ==
"dmat")
2910 if (h.
type ==
"imat")
2923 if (h.
type ==
"bmat")
2936 if (h.
type ==
"fcmat")
2938 else if (h.
type ==
"dcmat")
2951 if (h.
type ==
"fArray")
2964 if (h.
type ==
"fArray")
2966 else if (h.
type ==
"dArray")
2979 if (h.
type ==
"iArray")
2992 if (h.
type ==
"bArray")
3005 if (h.
type ==
"fcArray")
3018 if (h.
type ==
"fcArray")
3020 else if (h.
type ==
"dcArray")
3033 if (h.
type ==
"vecArray") {
3037 for (
int i = 0; i < n; i++)
3051 if (h.
type ==
"ivecArray") {
3055 for (
int i = 0; i < n; i++)
3069 if (h.
type ==
"bvecArray") {
3073 for (
int i = 0; i < n; i++)
3087 if (h.
type ==
"cvecArray") {
3091 for (
int i = 0; i < n; i++)
3105 if (h.
type ==
"stringArray") {
3109 for (
int i = 0; i < n; i++)
3123 if (h.
type ==
"matArray") {
3127 for (
int i = 0; i < n; i++)
3141 if (h.
type ==
"imatArray") {
3145 for (
int i = 0; i < n; i++)
3159 if (h.
type ==
"bmatArray") {
3163 for (
int i = 0; i < n; i++)
3177 if (h.
type ==
"cmatArray") {
3181 for (
int i = 0; i < n; i++)
3241 f.low_level_write(x);
3249 f.low_level_write(x);
3330 f.
write_data_header(
"fcmat", 2*
sizeof(
int) + 2*m.rows()*m.cols()*
sizeof(float));
3332 f.
write_data_header(
"dcmat", 2*
sizeof(
int) + 2*m.rows()*m.cols()*
sizeof(double));
3341 f.low_level_write(v);
3348 if (f.get_low_precision())
3351 f.write_data_header(
"dArray",
sizeof(
int) + v.size() *
sizeof(double));
3352 f.low_level_write(v);
3360 f.low_level_write(v);
3368 f.low_level_write(v);
3373 it_file_old &operator<<(it_file_old &f, const Array<std::complex<float> > &v)
3376 f.low_level_write(v);
3381 it_file_old &operator<<(it_file_old &f, const Array<std::complex<double> > &v)
3383 if (f.get_low_precision())
3386 f.write_data_header(
"dcArray",
sizeof(
int) + v.size() * 2 *
sizeof(double));
3387 f.low_level_write(v);
3397 for (i = 0; i < v.size(); i++) {
3398 sum_l += v(i).size();
3402 f.
write_data_header(
"vecArray",
sizeof(
int)*(1 + v.size()) + sum_l *
sizeof(
double));
3404 f.low_level_write(v.size());
3407 for (i = 0; i < v.size(); i++)
3408 f.low_level_write(v(i));
3418 for (i = 0; i < v.size(); i++) {
3419 sum_l += v(i).size();
3423 f.
write_data_header(
"ivecArray",
sizeof(
int)*(1 + v.size()) + sum_l *
sizeof(
int));
3425 f.low_level_write(v.size());
3428 for (i = 0; i < v.size(); i++)
3429 f.low_level_write(v(i));
3439 for (i = 0; i < v.size(); i++) {
3440 sum_l += v(i).size();
3446 f.low_level_write(v.size());
3449 for (i = 0; i < v.size(); i++)
3450 f.low_level_write(v(i));
3460 for (i = 0; i < v.size(); i++) {
3461 sum_l += v(i).size();
3465 f.
write_data_header(
"cvecArray",
sizeof(
int)*(1 + v.size()) + sum_l *
sizeof(std::complex<double>));
3467 f.low_level_write(v.size());
3470 for (i = 0; i < v.size(); i++)
3471 f.low_level_write(v(i));
3481 for (i = 0; i < v.size(); i++) {
3482 sum_l += v(i).size();
3486 f.
write_data_header(
"stringArray",
sizeof(
int)*(1 + v.size()) + sum_l *
sizeof(
char));
3488 f.low_level_write(v.size());
3491 for (i = 0; i < v.size(); i++)
3492 f.low_level_write(v(i));
3502 for (i = 0; i < v.size(); i++) {
3503 sum_l += v(i)._datasize();
3507 f.
write_data_header(
"matArray",
sizeof(
int)*(1 + 2*v.size()) + sum_l *
sizeof(
double));
3509 f.low_level_write(v.size());
3512 for (i = 0; i < v.size(); i++)
3513 f.low_level_write(v(i));
3523 for (i = 0; i < v.size(); i++) {
3524 sum_l += v(i)._datasize();
3528 f.
write_data_header(
"imatArray",
sizeof(
int)*(1 + 2*v.size()) + sum_l *
sizeof(
int));
3530 f.low_level_write(v.size());
3533 for (i = 0; i < v.size(); i++)
3534 f.low_level_write(v(i));
3544 for (i = 0; i < v.size(); i++) {
3545 sum_l += v(i)._datasize();
3551 f.low_level_write(v.size());
3554 for (i = 0; i < v.size(); i++)
3555 f.low_level_write(v(i));
3565 for (i = 0; i < v.size(); i++) {
3566 sum_l += v(i)._datasize();
3570 f.
write_data_header(
"cmatArray",
sizeof(
int)*(1 + 2*v.size()) + sum_l *
sizeof(std::complex<double>));
3572 f.low_level_write(v.size());
3575 for (i = 0; i < v.size(); i++)
3576 f.low_level_write(v(i));