27 m_vector.resize( a_size, 0.0 );
48 m_vector.resize( a_number );
49 for( std::size_t i1 = 0; i1 < a_number; ++i1 ) m_vector[i1] = a_values[i1];
58 m_vector( a_vector.m_vector ) {
71 if(
this != &a_rhs ) {
72 m_vector = a_rhs.m_vector;
93 Vector gidiVector( *
this );
95 gidiVector += a_value;
108 for( std::vector<double>::iterator iter = m_vector.begin( ); iter < m_vector.end( ); ++iter ) *iter += a_value;
122 Vector gidiVector( *
this );
125 return( gidiVector );
137 if( a_rhs.
size( ) == 0 )
return( *
this );
143 for( std::vector<double>::iterator iter = m_vector.begin( ); iter < m_vector.end( ); ++iter, ++i1 ) *iter += a_rhs[i1];
157 Vector gidiVector( *
this );
159 gidiVector -= a_value;
160 return( gidiVector );
172 for( std::vector<double>::iterator iter = m_vector.begin( ); iter < m_vector.end( ); ++iter ) *iter -= a_value;
186 Vector gidiVector( *
this );
189 return( gidiVector );
201 if( a_rhs.
size( ) == 0 )
return( *
this );
207 for( std::vector<double>::iterator iter = m_vector.begin( ); iter < m_vector.end( ); ++iter, ++i1 ) *iter -= a_rhs[i1];
221 Vector gidiVector( *
this );
223 gidiVector *= a_value;
224 return( gidiVector );
236 for( std::vector<double>::iterator iter = m_vector.begin( ); iter < m_vector.end( ); ++iter ) *iter *= a_value;
250 Vector gidiVector( *
this );
252 gidiVector /= a_value;
253 return( gidiVector );
265 if( a_value == 0 )
throw Exception(
"divide by zero." );
266 for( std::vector<double>::iterator iter = m_vector.begin( ); iter < m_vector.end( ); ++iter ) *iter /= a_value;
277 std::size_t i2 =
size( ), n_2 = i2 / 2;
280 for( std::size_t i1 = 0; i1 < n_2; ++i1, --i2 ) {
281 double temp = m_vector[i1];
283 m_vector[i1] = m_vector[i2];
298 a_end = std::min( a_end, m_vector.size( ) );
299 for( ; a_start < a_end; ++a_start ) m_vector[a_start] = a_value;
309 for( std::size_t i1 = 0; i1 <
size( ); ++i1 ) sum1 += m_vector[i1];
322 std::cout << a_prefix;
323 for( std::vector<double>::const_iterator iter = m_vector.begin( ); iter < m_vector.end( ); ++iter ) printf(
"%19.11e", *iter );
324 std::cout << std::endl;
336 if( a_prefix.size( ) > 0 ) fprintf( a_file,
"# %s\n", a_prefix.c_str( ) );
337 for( std::vector<double>::const_iterator iter = m_vector.begin( ); iter < m_vector.end( ); ++iter ) fprintf( a_file,
"%19.11e\n", *iter );
360 if( a_boundaries.size( ) > 0 ) {
361 Vector vector( a_boundaries.size( ) - 1 );
362 vector.writeWithBoundaries2( a_file, a_format, a_boundaries, a_epsilon ); } }
364 if(
size( ) + 1 != a_boundaries.size( ) )
throw Exception(
"Vector::writeWithBoundaries: Vector size and number of boundaries are not compatible." );
365 writeWithBoundaries2( a_file, a_format, a_boundaries, a_epsilon );
377void Vector::writeWithBoundaries2( FILE *a_file,
char const *a_format, std::vector<double>
const &a_boundaries,
double a_epsilon )
const {
379 std::size_t numberOfValues =
size( );
381 if( a_epsilon == 0.0 ) {
382 for( std::size_t index = 0; index < numberOfValues; ++index ) fprintf( a_file, a_format, a_boundaries[index], m_vector[index] ); }
384 if( numberOfValues > 0 ) fprintf( a_file, a_format, a_boundaries[0], m_vector[0] );
385 for( std::size_t index = 1; index < numberOfValues; ++index ) {
386 fprintf( a_file, a_format, a_boundaries[index] * ( 1.0 - a_epsilon ), m_vector[index-1] );
388 fprintf( a_file, a_format, a_boundaries[index] * ( 1.0 + a_epsilon ), m_vector[index] );
391 if( numberOfValues > 0 ) fprintf( a_file, a_format, a_boundaries[numberOfValues], m_vector[numberOfValues-1] );
Vector & operator+=(double a_value)
Vector operator+(double a_value) const
Vector & operator*=(double a_value)
Vector operator/(double a_value) const
void setToValueInFlatRange(std::size_t a_start, std::size_t a_end, double a_value)
Vector & operator=(Vector const &a_rhs)
void writeWithBoundaries(FILE *a_file, char const *a_format, std::vector< double > const &a_boundaries, double a_epsilon) const
Vector & operator-=(double a_value)
void write(FILE *a_file, std::string const &a_prefix) const
Vector & operator/=(double a_value)
void print(std::string const &a_prefix) const
Vector operator-(double a_value) const
Vector(std::size_t a_number=0)
void resize(std::size_t a_number, double a_value=0.0)
Vector operator*(double a_value) const