00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00026 #include "vector_util.hpp"
00027 #include <iostream>
00028 #include <string.h>
00029 #include <stdio.h>
00030
00031
00032 namespace std {
00033
00034 ostream & operator << (ostream & os, vector<double> const & rhs)
00035 {
00036 if ( ! rhs.empty()) {
00037 static int const buflen(32);
00038 char buf[buflen];
00039 memset(buf, 0, sizeof(buf));
00040 for (vector<double>::const_iterator ii(rhs.begin()); ii != rhs.end(); ++ii) {
00041
00042 #ifndef WIN32
00043
00044 if (isinf(*ii)) {
00045 snprintf(buf, buflen-1, " inf ");
00046 }
00047 else if (isnan(*ii)) {
00048 snprintf(buf, buflen-1, " nan ");
00049 }
00050 else if (fabs(fmod(*ii, 1)) < 1e-6) {
00051 snprintf(buf, buflen-1, "%- 7d ", static_cast<int>(rint(*ii)));
00052 }
00053 else {
00054 snprintf(buf, buflen-1, "% 6.4f ", *ii);
00055 }
00056
00057 #else
00058
00059 sprintf_s(buf, buflen-1, "% 6.4f ", *ii);
00060
00061 #endif // WIN32
00062
00063 os << buf;
00064 }
00065 }
00066 return os;
00067 }
00068
00069 }