source: Sophya/trunk/SophyaLib/TArray/utilarr.h@ 882

Last change on this file since 882 was 850, checked in by ansari, 25 years ago

Corrections divers + RansomSequence - Reza 10/4/2000

File size: 1.6 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2// Utility classes for template numerical arrays
3// R. Ansari, C.Magneville 03/2000
4
5#ifndef UtilArray_SEEN
6#define UtilArray_SEEN
7
8#include "machdefs.h"
9#include <stdlib.h>
10
11namespace SOPHYA {
12
13/* Quelques utilitaires pour les tableaux (Array) */
14
15typedef double (* Arr_DoubleFunctionOfX) (double x);
16typedef float (* Arr_FloatFunctionOfX) (float x);
17
18class RandomSequence {
19public:
20 enum { Gaussian = 0, Flat = 1 };
21 RandomSequence(int typ = RandomSequence::Gaussian, double m=0., double s=1.);
22 double Rand();
23protected:
24 int typ_;
25 double mean_, sig_;
26};
27
28
29class Sequence {
30public:
31 explicit Sequence (double start=0., double step=1., Arr_DoubleFunctionOfX f=NULL);
32 explicit Sequence (RandomSequence rseq);
33 inline double & Start() { return start_; }
34 inline double & Step() { return step_; }
35 double operator () (uint_4 k);
36protected:
37 double start_, step_;
38 Arr_DoubleFunctionOfX myf_;
39 bool fgrseq_;
40 RandomSequence rseq_;
41};
42
43class Range {
44public:
45 explicit Range(uint_4 start=0, uint_4 end=0, uint_4 size=1, uint_4 step=1);
46 inline uint_4 & Start() { return start_; }
47 inline uint_4 & End() { return end_; }
48 inline uint_4 & Size() { return size_; }
49 inline uint_4 & Step() { return step_; }
50protected:
51 uint_4 start_, end_, size_, step_ ;
52};
53
54class IdentityMatrix {
55public:
56 explicit IdentityMatrix(double diag=1., uint_4 n=0);
57 inline uint_4 Size() { return size_; }
58 inline double Diag() { return diag_; }
59protected:
60 uint_4 size_;
61 double diag_;
62};
63
64} // Fin du namespace
65
66#endif
67
Note: See TracBrowser for help on using the repository browser.