Jpp 19.3.0-rc.3
the software that should make you happy
Loading...
Searching...
No Matches
JTOOLS::JHenyeyGreenstein Class Reference

Numerical integrator for $ W(x) = (1 + g^{2} - 2gx)^{a} $, where $ g > 0 $. More...

#include <JQuadrature.hh>

Inheritance diagram for JTOOLS::JHenyeyGreenstein:
JTOOLS::JQuadrature JTOOLS::JCollection< JElement2D_t > std::vector< JElement2D_t > JTOOLS::JMappableCollection< JElement2D_t::abscissa_type, JElement2D_t::ordinate_type > JTOOLS::JAbstractCollection< JElement2D_t::abscissa_type > JMATH::JMath< JFirst_t, JSecond_t >

Public Types

typedef JElement2D_t::abscissa_type abscissa_type
 
typedef JElement2D_t::ordinate_type ordinate_type
 
typedef JElement2D_t value_type
 
typedef JDistance_t distance_type
 
typedef JCollection< JElement2D_t, JDistance_t > collection_type
 
typedef std::vector< value_typecontainer_type
 
typedef container_type::const_iterator const_iterator
 
typedef container_type::const_reverse_iterator const_reverse_iterator
 
typedef container_type::iterator iterator
 
typedef container_type::reverse_iterator reverse_iterator
 
typedef JCollectionElementTransformer< value_typetransformer_type
 
typedef std::pair< const_iterator, bool > pair_type
 
typedef JElement2D_t::abscissa_type key_type
 
typedef JElement2D_t::ordinate_type mapped_type
 

Public Member Functions

 JHenyeyGreenstein (const int n, const double g, const double a)
 Constructor.
 
 JHenyeyGreenstein (const int n, const double g, const double a, const double xmin, const double xmax)
 Constructor.
 
 JHenyeyGreenstein (const int n, const double g)
 Constructor for special case where a = -1.
 
virtual void clear () override
 Clear.
 
virtual const ordinate_typeget (typename JClass< abscissa_type >::argument_type x) const override
 Get ordinate value.
 
virtual ordinate_typeget (typename JClass< abscissa_type >::argument_type x) override
 Get ordinate value.
 
virtual int getSize () const override
 Get number of elements.
 
virtual abscissa_type getX (int index) const override
 Get abscissa value.
 
virtual abscissa_type getXmin () const override
 Get minimal abscissa value.
 
virtual abscissa_type getXmax () const override
 Get maximal abscissa value.
 
const ordinate_typegetY (int index) const
 Get ordinate value.
 
ordinate_typegetY (int index)
 Get ordinate value.
 
void transform (const transformer_type &transformer)
 Transform collection.
 
void sort ()
 Sort elements.
 
const_iterator lower_bound (typename JClass< abscissa_type >::argument_type x) const
 Get first position of element i, where x >= i->getX().
 
iterator lower_bound (typename JClass< abscissa_type >::argument_type x)
 Get first position of element i, where x >= i->getX().
 
pair_type insert (const value_type &element)
 Insert element.
 
void configure (const JAbstractCollection< abscissa_type > &bounds)
 Configure collection.
 
void configure (const JAbstractCollection< abscissa_type > &bounds, typename JClass< ordinate_type >::argument_type value)
 Configure collection.
 
void configure (const JAbstractCollection< abscissa_type > &bounds, const JFunction1D_t &function)
 Configure collection.
 
bool is_compatible (const JCollection &collection) const
 Test whether collections are compatible.
 
bool in_range (typename JClass< abscissa_type >::argument_type x) const
 Check if given abscissa is in range of this collection.
 
JCollectionnegate ()
 Negate collection.
 
JCollectionadd (const JCollection &collection)
 Add collection.
 
JCollectionadd (typename JClass< ordinate_type >::argument_type value)
 Add offset.
 
JCollectionadd (const JFunction1D_t &function)
 Add function.
 
JCollectionsub (const JCollection &collection)
 Subtract collection.
 
JCollectionsub (typename JClass< ordinate_type >::argument_type value)
 Subtract offset.
 
JCollectionsub (const JFunction1D_t &function)
 Subtract function.
 
JCollectionmul (const double value)
 Scale contents.
 
JFirst_t & mul (const JSecond_t &object)
 Multiply with object.
 
JCollectiondiv (const double value)
 Scale contents.
 
const JComparator & getComparator () const
 Get comparator.
 
const mapped_typeoperator[] (typename JClass< key_type >::argument_type key) const
 Get mapped value.
 
mapped_typeoperator[] (typename JClass< key_type >::argument_type key)
 Get mapped value.
 
void put (typename JClass< key_type > ::argument_type key, typename JClass< mapped_type >::argument_type value)
 Put pair-wise element (key,value) into collection.
 
bool is_equal (const JAbstractCollection &collection) const
 Test whether abstract collections are equal.
 

Public Attributes

JDistance_t getDistance
 Function object for distance evaluation.
 

Protected Member Functions

void resize (typename container_type::size_type size)
 Resize collection.
 

Protected Attributes

JComparator compare
 Function object for comparison.
 

Private Member Functions

void erase ()
 
void push_back ()
 
void pop_back ()
 

Detailed Description

Numerical integrator for $ W(x) = (1 + g^{2} - 2gx)^{a} $, where $ g > 0 $.

Henyey-Greenstein integration points and weights.

Definition at line 336 of file JQuadrature.hh.

Member Typedef Documentation

◆ abscissa_type

JElement2D_t::abscissa_type JTOOLS::JCollection< JElement2D_t, JDistance_t >::abscissa_type
inherited

Definition at line 82 of file JCollection.hh.

◆ ordinate_type

JElement2D_t::ordinate_type JTOOLS::JCollection< JElement2D_t, JDistance_t >::ordinate_type
inherited

Definition at line 83 of file JCollection.hh.

◆ value_type

JElement2D_t JTOOLS::JCollection< JElement2D_t, JDistance_t >::value_type
inherited

Definition at line 84 of file JCollection.hh.

◆ distance_type

JDistance_t JTOOLS::JCollection< JElement2D_t, JDistance_t >::distance_type
inherited

Definition at line 85 of file JCollection.hh.

◆ collection_type

JCollection<JElement2D_t, JDistance_t> JTOOLS::JCollection< JElement2D_t, JDistance_t >::collection_type
inherited

Definition at line 87 of file JCollection.hh.

◆ container_type

std::vector<value_type> JTOOLS::JCollection< JElement2D_t, JDistance_t >::container_type
inherited

Definition at line 89 of file JCollection.hh.

◆ const_iterator

container_type::const_iterator JTOOLS::JCollection< JElement2D_t, JDistance_t >::const_iterator
inherited

Definition at line 91 of file JCollection.hh.

◆ const_reverse_iterator

container_type::const_reverse_iterator JTOOLS::JCollection< JElement2D_t, JDistance_t >::const_reverse_iterator
inherited

Definition at line 92 of file JCollection.hh.

◆ iterator

container_type::iterator JTOOLS::JCollection< JElement2D_t, JDistance_t >::iterator
inherited

Definition at line 93 of file JCollection.hh.

◆ reverse_iterator

container_type::reverse_iterator JTOOLS::JCollection< JElement2D_t, JDistance_t >::reverse_iterator
inherited

Definition at line 94 of file JCollection.hh.

◆ transformer_type

JCollectionElementTransformer<value_type> JTOOLS::JCollection< JElement2D_t, JDistance_t >::transformer_type
inherited

Definition at line 96 of file JCollection.hh.

◆ pair_type

std::pair<const_iterator, bool> JTOOLS::JCollection< JElement2D_t, JDistance_t >::pair_type
inherited

Definition at line 97 of file JCollection.hh.

◆ key_type

◆ mapped_type

Constructor & Destructor Documentation

◆ JHenyeyGreenstein() [1/3]

JTOOLS::JHenyeyGreenstein::JHenyeyGreenstein ( const int n,
const double g,
const double a )
inline

Constructor.

Parameters
nnumber of points
gangular dependence parameter
apower

Definition at line 347 of file JQuadrature.hh.

349 :
351 {
352 const double b = -2*g * (a + 1.0);
353 const double ai = 1.0 / (a + 1.0);
354
355 const double ymin = pow(1.0 + g, 2*(a + 1.0)) / b;
356 const double ymax = pow(1.0 - g, 2*(a + 1.0)) / b;
357
358 const double dy = (ymax - ymin) / (n + 1);
359
360 for (double y = ymax - 0.5*dy; y > ymin; y -= dy) {
361
362 const double v = y*b;
363 const double w = pow(v, ai);
364 const double x = (1.0 + g*g - w) / (2*g);
365 const double dx = pow(v, -a*ai)*dy;
366
367 insert(JElement2D_t(x,dx));
368 }
369 }
pair_type insert(const value_type &element)
JQuadrature()
Default constructor.
const double a
T pow(const T &x, const double y)
Power .
Definition JMath.hh:97
JElement2D< double, double > JElement2D_t
Type definition of basic element for quadratures.
const int n
Definition JPolint.hh:791

◆ JHenyeyGreenstein() [2/3]

JTOOLS::JHenyeyGreenstein::JHenyeyGreenstein ( const int n,
const double g,
const double a,
const double xmin,
const double xmax )
inline

Constructor.

Parameters
nnumber of points
gangular dependence parameter
apower
xminminimal value
xmaxmaximal value

Definition at line 381 of file JQuadrature.hh.

385 :
387 {
388 const double b = -2*g * (a + 1.0);
389 const double ai = 1.0 / (a + 1.0);
390
391 const double ymin = pow(1.0 + g*g -2*g*xmin, a + 1.0) / b;
392 const double ymax = pow(1.0 + g*g -2*g*xmax, a + 1.0) / b;
393
394 const double dy = (ymax - ymin) / (n + 1);
395
396 for (double y = ymax - 0.5*dy; y > ymin; y -= dy) {
397
398 const double v = y*b;
399 const double w = pow(v, ai);
400 const double x = (1.0 + g*g - w) / (2*g);
401 const double dx = pow(v, -a*ai)*dy;
402
403 insert(JElement2D_t(x,dx));
404 }
405 }

◆ JHenyeyGreenstein() [3/3]

JTOOLS::JHenyeyGreenstein::JHenyeyGreenstein ( const int n,
const double g )
inline

Constructor for special case where a = -1.

Parameters
nnumber of points
gangular dependence parameter

Definition at line 414 of file JQuadrature.hh.

415 :
417 {
418 const double dy = 1.0 / (n + 1);
419 const double gi = log((1.0 + g*g) / (1.0 - g*g)) / (2.0*g);
420
421 for (double y = 1.0 - 0.5*dy; y > 0.0; y -= dy) {
422
423 const double v = -y*2.0*g*gi + log(1.0 + g*g);
424 const double w = exp(v);
425 const double x = (1.0 + g*g - w) / (2.0*g);
426 const double dx = w*gi*dy;
427
428 insert(JElement2D_t(x,dx));
429 }
430 }

Member Function Documentation

◆ clear()

virtual void JTOOLS::JCollection< JElement2D_t, JDistance_t >::clear ( )
inlineoverridevirtualinherited

Clear.

Implements JTOOLS::JMappableCollection< JElement2D_t::abscissa_type, JElement2D_t::ordinate_type >.

Definition at line 150 of file JCollection.hh.

151 {
152 container_type::clear();
153 }

◆ get() [1/2]

virtual const ordinate_type & JTOOLS::JCollection< JElement2D_t, JDistance_t >::get ( typename JClass< abscissa_type >::argument_type x) const
inlineoverridevirtualinherited

Get ordinate value.

Parameters
xabscissa value
Returns
ordinate value

Implements JTOOLS::JMappableCollection< JElement2D_t::abscissa_type, JElement2D_t::ordinate_type >.

Definition at line 162 of file JCollection.hh.

163 {
164 const_iterator i = this->lower_bound(x);
165
166 if (i == this->end() || this->getDistance(x, i->getX()) > distance_type::precision) {
167 THROW(JValueOutOfRange, "Invalid abscissa value " << x);
168 }
169
170 return i->getY();
171 }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
container_type::const_iterator const_iterator
const_iterator lower_bound(typename JClass< abscissa_type >::argument_type x) const

◆ get() [2/2]

virtual ordinate_type & JTOOLS::JCollection< JElement2D_t, JDistance_t >::get ( typename JClass< abscissa_type >::argument_type x)
inlineoverridevirtualinherited

Get ordinate value.

Parameters
xabscissa value
Returns
ordinate value

Implements JTOOLS::JMappableCollection< JElement2D_t::abscissa_type, JElement2D_t::ordinate_type >.

Definition at line 180 of file JCollection.hh.

181 {
182 iterator i = this->lower_bound(x);
183
184 if (i == this->end() || this->getDistance(x, i->getX()) > distance_type::precision) {
185 i = container_type::insert(i, value_type(x, JMATH::getZero<ordinate_type>()));
186 }
187
188 return i->getY();
189 }
container_type::iterator iterator
T getZero()
Get zero value for a given data type.
Definition JZero.hh:26

◆ getSize()

virtual int JTOOLS::JCollection< JElement2D_t, JDistance_t >::getSize ( ) const
inlineoverridevirtualinherited

Get number of elements.

Returns
number of elements

Implements JTOOLS::JAbstractCollection< JElement2D_t::abscissa_type >.

Definition at line 197 of file JCollection.hh.

198 {
199 return (int) this->size();
200 }

◆ getX()

virtual abscissa_type JTOOLS::JCollection< JElement2D_t, JDistance_t >::getX ( int index) const
inlineoverridevirtualinherited

Get abscissa value.

Parameters
indexindex
Returns
abscissa value

Implements JTOOLS::JAbstractCollection< JElement2D_t::abscissa_type >.

Definition at line 209 of file JCollection.hh.

210 {
211 return this->at(index).getX();
212 }

◆ getXmin()

virtual abscissa_type JTOOLS::JCollection< JElement2D_t, JDistance_t >::getXmin ( ) const
inlineoverridevirtualinherited

Get minimal abscissa value.

Returns
abscissa value

Implements JTOOLS::JAbstractCollection< JElement2D_t::abscissa_type >.

Definition at line 220 of file JCollection.hh.

221 {
222 return this->begin()->getX();
223 }

◆ getXmax()

virtual abscissa_type JTOOLS::JCollection< JElement2D_t, JDistance_t >::getXmax ( ) const
inlineoverridevirtualinherited

Get maximal abscissa value.

Returns
abscissa value

Implements JTOOLS::JAbstractCollection< JElement2D_t::abscissa_type >.

Definition at line 231 of file JCollection.hh.

232 {
233 return this->rbegin()->getX();
234 }

◆ getY() [1/2]

const ordinate_type & JTOOLS::JCollection< JElement2D_t, JDistance_t >::getY ( int index) const
inlineinherited

Get ordinate value.

Parameters
indexindex
Returns
ordinate value

Definition at line 244 of file JCollection.hh.

245 {
246 return this->at(index).getY();
247 }

◆ getY() [2/2]

ordinate_type & JTOOLS::JCollection< JElement2D_t, JDistance_t >::getY ( int index)
inlineinherited

Get ordinate value.

Parameters
indexindex
Returns
ordinate value

Definition at line 256 of file JCollection.hh.

257 {
258 return this->at(index).getY();
259 }

◆ transform()

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::transform ( const transformer_type & transformer)
inlineinherited

Transform collection.

Parameters
transformerelement transformer

Definition at line 267 of file JCollection.hh.

268 {
269 for (iterator i = this->begin(); i != this->end(); ++i) {
270 *i = transformer(*i);
271 }
272
273 sort();
274 }

◆ sort()

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::sort ( )
inlineinherited

Sort elements.

Definition at line 280 of file JCollection.hh.

281 {
282 std::sort(this->begin(), this->end(), compare);
283 }

◆ lower_bound() [1/2]

const_iterator JTOOLS::JCollection< JElement2D_t, JDistance_t >::lower_bound ( typename JClass< abscissa_type >::argument_type x) const
inlineinherited

Get first position of element i, where x >= i->getX().

Parameters
xabscissa value
Returns
position of corresponding element

Definition at line 292 of file JCollection.hh.

293 {
294 return std::lower_bound(this->begin(), this->end(), x, compare);
295 }

◆ lower_bound() [2/2]

iterator JTOOLS::JCollection< JElement2D_t, JDistance_t >::lower_bound ( typename JClass< abscissa_type >::argument_type x)
inlineinherited

Get first position of element i, where x >= i->getX().

Parameters
xabscissa value
Returns
position of corresponding element

Definition at line 304 of file JCollection.hh.

305 {
306 return std::lower_bound(this->begin(), this->end(), x, compare);
307 }

◆ insert()

pair_type JTOOLS::JCollection< JElement2D_t, JDistance_t >::insert ( const value_type & element)
inlineinherited

Insert element.

Parameters
elementelement
Returns
(iterator, status), where status is true if inserted; else false

Definition at line 316 of file JCollection.hh.

317 {
318 iterator i = this->lower_bound(element.getX());
319
320 if (i == this->end() || this->getDistance(element.getX(), i->getX()) > 0.0)
321 return pair_type(container_type::insert(i, element), true);
322 else
323 return pair_type(this->end(), false);
324 }
std::pair< const_iterator, bool > pair_type

◆ configure() [1/3]

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::configure ( const JAbstractCollection< abscissa_type > & bounds)
inlineinherited

Configure collection.

Parameters
boundsabscissa values

Definition at line 332 of file JCollection.hh.

333 {
335 }
void configure(const JAbstractCollection< abscissa_type > &bounds)

◆ configure() [2/3]

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::configure ( const JAbstractCollection< abscissa_type > & bounds,
typename JClass< ordinate_type >::argument_type value )
inlineinherited

Configure collection.

Parameters
boundsabscissa values
valueordinate value

Definition at line 344 of file JCollection.hh.

346 {
347 this->resize(bounds.getSize());
348
349 for (iterator i = this->begin(); i != this->end(); ++i) {
350
351 const abscissa_type x = bounds.getX(std::distance(this->begin(),i));
352
353 *i = value_type(x,value);
354 }
355 }
void resize(typename container_type::size_type size)
JElement2D_t::abscissa_type abscissa_type

◆ configure() [3/3]

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::configure ( const JAbstractCollection< abscissa_type > & bounds,
const JFunction1D_t & function )
inlineinherited

Configure collection.

Parameters
boundsabscissa values
functionfunction

Definition at line 365 of file JCollection.hh.

367 {
368 using namespace JLANG;
369
370 collection_type* out = (is_identical(*this, function) ? new collection_type() : this);
371
372 for (int i = 0; i != bounds.getSize(); ++i) {
373
374 const abscissa_type x = bounds.getX(i);
375
376 out->put(x, function(x));
377 }
378
379 if (is_identical(*this, function)) {
380
381 this->swap(*out);
382
383 delete out;
384 }
385 }
JCollection< JElement2D_t, JDistance_t > collection_type
Auxiliary classes and methods for language specific functionality.
bool is_identical(JFirst_t &first, JSecond_t &second)
Check if two objects are indentical.

◆ is_compatible()

bool JTOOLS::JCollection< JElement2D_t, JDistance_t >::is_compatible ( const JCollection< JElement2D_t > & collection) const
inlineinherited

Test whether collections are compatible.

Parameters
collectioncollection
Returns
true if collections are compatible; else false

Definition at line 394 of file JCollection.hh.

395 {
396 if (this->empty() || collection.empty()) {
397
398 return true;
399
400 } else {
401
402 const double precision = JDistance<abscissa_type>::precision;
403
404 const_iterator p = this->begin();
405 const_iterator q = collection.begin();
406
407 if (getDistance(p->getX(), q->getX()) > precision) {
408
409 do {
410 ++p;
411 } while (p != this->end() && getDistance(p->getX(), q->getX()) > precision);
412
413 } else if (getDistance(q->getX(), p->getX()) > precision) {
414
415 do {
416 ++q;
417 } while (q != collection.end() && getDistance(q->getX(), p->getX()) > precision);
418 }
419
420 for ( ; p != this->end() && q != collection.end(); ++p, ++q) {
421 if (fabs(getDistance(p->getX(), q->getX())) > precision) {
422 return false;
423 }
424 }
425
426 return true;
427 }
428 }
static double precision
Default precision.
Definition JDistance.hh:44

◆ in_range()

bool JTOOLS::JCollection< JElement2D_t, JDistance_t >::in_range ( typename JClass< abscissa_type >::argument_type x) const
inlineinherited

Check if given abscissa is in range of this collection.

Parameters
xabscissa value
Returns
true if in tange: else false

Definition at line 437 of file JCollection.hh.

438 {
439 if (!this->empty())
440 return (this->getDistance(this->getXmin(), x) >= 0.0 &&
441 this->getDistance(this->getXmax(), x) <= 0.0);
442 else
443 return false;
444 }
virtual abscissa_type getXmin() const override
virtual abscissa_type getXmax() const override

◆ negate()

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::negate ( )
inlineinherited

Negate collection.

Returns
this collection

Definition at line 452 of file JCollection.hh.

453 {
454 for (iterator i = this->begin(); i != this->end(); ++i) {
455 i->getY() = -i->getY();
456 }
457
458 return *this;
459 }

◆ add() [1/3]

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::add ( const JCollection< JElement2D_t > & collection)
inlineinherited

Add collection.

Parameters
collectioncollection
Returns
this collection

Definition at line 468 of file JCollection.hh.

469 {
470 if (!collection.empty()) {
471
472 if (this->empty()) {
473
474 for (const_iterator i = collection.begin(); i != collection.end(); ++i) {
475 this->put(i->getX(), +i->getY());
476 }
477
478 } else if (this->is_compatible(collection)) {
479
480 const double precision = JDistance<abscissa_type>::precision;
481
482 iterator p = this->begin();
483 const_iterator q = collection.begin();
484
485 if (getDistance(p->getX(), q->getX()) > precision) {
486
487 do {
488 ++p;
489 } while (p != this->end() && getDistance(p->getX(), q->getX()) > precision);
490
491 } else if (getDistance(q->getX(), p->getX()) > precision) {
492
493 do {
494 ++q;
495 } while (q != collection.end() && getDistance(q->getX(), p->getX()) > precision);
496 }
497
498 const_iterator i = q;
499
500 for ( ; p != this->end() && i != collection.end(); ++p, ++i) {
501 p->getY() += i->getY();
502 }
503
504 for ( ; i != collection.end(); ++i) {
505 this->put(i->getX(), +i->getY());
506 }
507
508 for (i = collection.begin(); i != q; ++i) {
509 this->put(i->getX(), +i->getY());
510 }
511 }
512 }
513
514 return *this;
515 }
bool is_compatible(const JCollection &collection) const
void put(typename JClass< key_type > ::argument_type key, typename JClass< mapped_type >::argument_type value)

◆ add() [2/3]

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::add ( typename JClass< ordinate_type >::argument_type value)
inlineinherited

Add offset.

Parameters
valueoffset
Returns
this collection

Definition at line 616 of file JCollection.hh.

617 {
618 for (iterator i = this->begin(); i != this->end(); ++i) {
619 i->getY() += value;
620 }
621
622 return *this;
623 }

◆ add() [3/3]

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::add ( const JFunction1D_t & function)
inlineinherited

Add function.

Parameters
functionfunction
Returns
this collection

Definition at line 649 of file JCollection.hh.

650 {
651 for (iterator i = this->begin(); i != this->end(); ++i) {
652 i->getY() += function(i->getX());
653 }
654
655 return *this;
656 }

◆ sub() [1/3]

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::sub ( const JCollection< JElement2D_t > & collection)
inlineinherited

Subtract collection.

Parameters
collectioncollection
Returns
this collection

Definition at line 524 of file JCollection.hh.

525 {
526 if (!collection.empty()) {
527
528 if (this->empty()) {
529
530 for (const_iterator i = collection.begin(); i != collection.end(); ++i) {
531 this->put(i->getX(), -i->getY());
532 }
533
534 } else if (this->is_compatible(collection)) {
535
536 const double precision = JDistance<abscissa_type>::precision;
537
538 iterator p = this->begin();
539 const_iterator q = collection.begin();
540
541 if (getDistance(p->getX(), q->getX()) > precision) {
542
543 do {
544 ++p;
545 } while (p != this->end() && getDistance(p->getX(), q->getX()) > precision);
546
547 } else if (getDistance(q->getX(), p->getX()) > precision) {
548
549 do {
550 ++q;
551 } while (q != collection.end() && getDistance(q->getX(), p->getX()) > precision);
552 }
553
554 const_iterator i = q;
555
556 for ( ; p != this->end() && i != collection.end(); ++p, ++i) {
557 p->getY() -= i->getY();
558 }
559
560 for ( ; i != collection.end(); ++i) {
561 this->put(i->getX(), -i->getY());
562 }
563
564 for (i = collection.begin(); i != q; ++i) {
565 this->put(i->getX(), -i->getY());
566 }
567
568 } else {
569
570 THROW(JException, "JCollection::add() collections incompatible.");
571 }
572 }
573
574 return *this;
575 }

◆ sub() [2/3]

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::sub ( typename JClass< ordinate_type >::argument_type value)
inlineinherited

Subtract offset.

Parameters
valueoffset
Returns
this collection

Definition at line 632 of file JCollection.hh.

633 {
634 for (iterator i = this->begin(); i != this->end(); ++i) {
635 i->getY() -= value;
636 }
637
638 return *this;
639 }

◆ sub() [3/3]

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::sub ( const JFunction1D_t & function)
inlineinherited

Subtract function.

Parameters
functionfunction
Returns
this collection

Definition at line 666 of file JCollection.hh.

667 {
668 for (iterator i = this->begin(); i != this->end(); ++i) {
669 i->getY() -= function(i->getX());
670 }
671
672 return *this;
673 }

◆ mul() [1/2]

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::mul ( const double value)
inlineinherited

Scale contents.

Parameters
valuemultiplication factor
Returns
this collection

Definition at line 584 of file JCollection.hh.

585 {
586 for (iterator i = this->begin(); i != this->end(); ++i) {
587 i->getY() *= value;
588 }
589
590 return *this;
591 }

◆ mul() [2/2]

template<class JFirst_t , class JSecond_t >
JFirst_t & JMATH::JMath< JFirst_t, JSecond_t >::mul ( const JSecond_t & object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 354 of file JMath.hh.

355 {
356 return static_cast<JFirst_t&>(*this) = JFirst_t().mul(static_cast<const JFirst_t&>(*this), object);
357 }

◆ div()

JCollection & JTOOLS::JCollection< JElement2D_t, JDistance_t >::div ( const double value)
inlineinherited

Scale contents.

Parameters
valuedivision factor
Returns
this collection

Definition at line 600 of file JCollection.hh.

601 {
602 for (iterator i = this->begin(); i != this->end(); ++i) {
603 i->getY() /= value;
604 }
605
606 return *this;
607 }

◆ getComparator()

const JComparator & JTOOLS::JCollection< JElement2D_t, JDistance_t >::getComparator ( ) const
inlineinherited

Get comparator.

Returns
comparator

Definition at line 780 of file JCollection.hh.

781 {
782 return compare;
783 }

◆ resize()

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::resize ( typename container_type::size_type size)
inlineprotectedinherited

Resize collection.

Parameters
sizesize

Definition at line 804 of file JCollection.hh.

805 {
806 container_type::resize(size);
807 }

◆ erase()

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::erase ( )
privateinherited

◆ push_back()

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::push_back ( )
privateinherited

◆ pop_back()

void JTOOLS::JCollection< JElement2D_t, JDistance_t >::pop_back ( )
privateinherited

◆ operator[]() [1/2]

const mapped_type & JTOOLS::JMappableCollection< JElement2D_t::abscissa_type, JElement2D_t::ordinate_type >::operator[] ( typename JClass< key_type >::argument_type key) const
inlineinherited

Get mapped value.

Parameters
keykey
Returns
value

Definition at line 73 of file JMappableCollection.hh.

74 {
75 return get(key);
76 }

◆ operator[]() [2/2]

mapped_type & JTOOLS::JMappableCollection< JElement2D_t::abscissa_type, JElement2D_t::ordinate_type >::operator[] ( typename JClass< key_type >::argument_type key)
inlineinherited

Get mapped value.

Parameters
keykey
Returns
value

Definition at line 85 of file JMappableCollection.hh.

86 {
87 return get(key);
88 }

◆ put()

void JTOOLS::JMappableCollection< JElement2D_t::abscissa_type, JElement2D_t::ordinate_type >::put ( typename JClass< key_type > ::argument_type key,
typename JClass< mapped_type >::argument_type value )
inlineinherited

Put pair-wise element (key,value) into collection.

Parameters
keykey
valuevalue

Definition at line 97 of file JMappableCollection.hh.

99 {
100 get(key) = value;
101 }

◆ is_equal()

bool JTOOLS::JAbstractCollection< JElement2D_t::abscissa_type >::is_equal ( const JAbstractCollection< JElement2D_t::abscissa_type > & collection) const
inlineinherited

Test whether abstract collections are equal.

Parameters
collectionabstract collection
Returns
true if collections are equals; else false

Definition at line 72 of file JAbstractCollection.hh.

73 {
74 if (this->getSize() == collection.getSize()) {
75
76 for (int i = 0; i != this->getSize(); ++i) {
77
78 if (this->getX(i) != collection.getX(i)) {
79 return false;
80 }
81 }
82
83 return true;
84 }
85
86 return false;
87 }
virtual abscissa_type getX(int index) const=0

Member Data Documentation

◆ getDistance

JDistance_t JTOOLS::JCollection< JElement2D_t, JDistance_t >::getDistance
inherited

Function object for distance evaluation.

Definition at line 789 of file JCollection.hh.

◆ compare

JComparator JTOOLS::JCollection< JElement2D_t, JDistance_t >::compare
protectedinherited

Function object for comparison.

Definition at line 796 of file JCollection.hh.


The documentation for this class was generated from the following file: