Changeset 1103 in Sophya for trunk/SophyaLib/TArray/utilarr.h


Ignore:
Timestamp:
Jul 27, 2000, 2:00:10 AM (25 years ago)
Author:
ansari
Message:

Suite operations entre matrices de <> MemOrg, Amelioration des Sequences - Reza 27/7/2000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/TArray/utilarr.h

    r956 r1103  
    77
    88#include "machdefs.h"
     9#include "mutyv.h"
     10
    911#include <stdlib.h>
     12#include <vector>
    1013
    1114namespace SOPHYA {   
     
    2629//////////////////////////////////////////////////////////
    2730//! Class to generate a random sequence of values
    28 class RandomSequence {
     31class Sequence {
     32public:
     33  virtual ~Sequence();
     34  virtual MuTyV & Value(uint_8 k) const = 0;
     35  inline MuTyV & operator () (uint_8 k) const { return(Value(k)) ; }
     36};
     37
     38class RandomSequence : public Sequence {
    2939public:
    3040  //! to define the generator type
     
    3444    };
    3545
    36   RandomSequence(int typ = RandomSequence::Gaussian, double m=0., double s=1.);
    37   double Rand();
     46  explicit RandomSequence(int typ = RandomSequence::Gaussian, double m=0., double s=1.);
     47  virtual  ~RandomSequence();
     48  virtual MuTyV & Value(uint_8 k) const ;
     49  double   Rand();
     50
    3851protected:
    3952  int typ_;            //!< random generation type
    4053  double mean_, sig_;  //!< generation parameters mean and sigma (if needed)
     54  mutable MuTyV retv_;
    4155};
    4256
     
    4458//////////////////////////////////////////////////////////
    4559//! Class to generate a sequence of values
    46 class Sequence {
     60class RegularSequence : public Sequence {
    4761public:
    48   explicit Sequence (double start=0., double step=1., Arr_DoubleFunctionOfX f=NULL);
    49   explicit Sequence (RandomSequence rseq);
     62  explicit RegularSequence (double start=0., double step=1., Arr_DoubleFunctionOfX f=NULL);
     63  virtual  ~RegularSequence();
    5064
    5165  //! return start value of the sequence
     
    5367  //! return step value of the sequence
    5468  inline double & Step() { return step_; }
    55   double operator () (uint_4 k);
     69
     70  virtual MuTyV & Value(uint_8 k) const ;
     71
    5672protected:
    5773  double start_;              //!< start value of the sequence
    5874  double step_;               //!< step value of the sequence
    5975  Arr_DoubleFunctionOfX myf_; //!< pointer to the sequence function
    60   bool fgrseq_;               //!< true if RandomSequence is used
    61   RandomSequence rseq_;       //!< RandomSequence
     76  mutable MuTyV retv_;
    6277};
     78
     79class EnumeratedSequence : public Sequence  {
     80public:
     81  virtual ~EnumeratedSequence();
     82  virtual MuTyV & Value(uint_8 k) const ;
     83  EnumeratedSequence & operator , (MuTyV const & v);
     84private:
     85  vector<MuTyV> vecv_;
     86  mutable MuTyV retv_;
     87};
     88
     89inline EnumeratedSequence operator , (MuTyV const & a, MuTyV const & b)
     90{ EnumeratedSequence seq;   return ((seq,a),b) ; }
    6391
    6492//////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.