source: Sophya/trunk/SophyaLib/TArray/matharr.h@ 1412

Last change on this file since 1412 was 1226, checked in by ansari, 25 years ago

Transformation des noms de fcts math avec Majuscule (sqrt->Sqrt) pour les Arrays - CMV+Reza 11/10/2000

File size: 3.8 KB
Line 
1// This may look like C code, but it is really -*- C++ -*-
2// Usuall mathematical functions and operations on arrays
3// R. Ansari, C.Magneville 03/2000
4
5#ifndef MathArray_SEEN
6#define MathArray_SEEN
7
8#include "machdefs.h"
9#include <math.h>
10#include "tarray.h"
11
12namespace SOPHYA {
13
14//! Class for simple mathematical operation on arrays
15template <class T>
16class MathArray {
17public:
18// Applying a function
19 // Replaces the input array content with the result f(x)
20 virtual TArray<T>& ApplyFunctionInPlace(TArray<T> & a, Arr_DoubleFunctionOfX f);
21 virtual TArray<T>& ApplyFunctionInPlace(TArray<T> & a, Arr_FloatFunctionOfX f);
22 // Creates a new array and fills it with f(x)
23 virtual TArray<T> ApplyFunction(TArray<T> const & a, Arr_DoubleFunctionOfX f);
24 virtual TArray<T> ApplyFunction(TArray<T> const & a, Arr_FloatFunctionOfX f);
25 // Computing Mean-Sigma
26 virtual double MeanSigma(TArray<T> const & a, double & mean, double & sig);
27};
28
29////////////////////////////////////////////////
30// Calcul de fonctions usuelles
31
32// see below for g++
33/*! \ingroup TArray \fn Fabs(const TArray<T>& a)
34 \brief computation on TArray */
35template <class T>
36inline TArray<T> Fabs(const TArray<T>& a)
37 { MathArray<T> ma; return( ma.ApplyFunction(a, fabs) ); }
38
39/*! \ingroup TArray \fn Sqrt(const TArray<T>& a)
40 \brief computation on TArray */
41template <class T>
42inline TArray<T> Sqrt(const TArray<T>& a)
43 { MathArray<T> ma; return( ma.ApplyFunction(a, sqrt) ); }
44
45/*! \ingroup TArray \fn Sin(const TArray<T>& a)
46 \brief computation on TArray */
47template <class T>
48inline TArray<T> Sin(const TArray<T>& a)
49 { MathArray<T> ma; return( ma.ApplyFunction(a, sin) ); }
50
51/*! \ingroup TArray \fn Cos(const TArray<T>& a)
52 \brief computation on TArray */
53template <class T>
54inline TArray<T> Cos(const TArray<T>& a)
55 { MathArray<T> ma; return( ma.ApplyFunction(a, cos) ); }
56
57/*! \ingroup TArray \fn tan(const TArray<T>& a)
58 \brief computation on TArray */
59template <class T>
60inline TArray<T> Tan(const TArray<T>& a)
61 { MathArray<T> ma; return( ma.ApplyFunction(a, tan) ); }
62
63/*! \ingroup TArray \fn Asin(const TArray<T>& a)
64 \brief computation on TArray */
65template <class T>
66inline TArray<T> Asin(const TArray<T>& a)
67 { MathArray<T> ma; return( ma.ApplyFunction(a, asin) ); }
68
69/*! \ingroup TArray \fn Acos(const TArray<T>& a)
70 \brief computation on TArray */
71template <class T>
72inline TArray<T> Acos(const TArray<T>& a)
73 { MathArray<T> ma; return( ma.ApplyFunction(a, acos) ); }
74
75/*! \ingroup TArray \fn Atan(const TArray<T>& a)
76 \brief computation on TArray */
77template <class T>
78inline TArray<T> Atan(const TArray<T>& a)
79 { MathArray<T> ma; return( ma.ApplyFunction(a, atan) ); }
80
81/*! \ingroup TArray \fn Exp(const TArray<T>& a)
82 \brief computation on TArray */
83template <class T>
84inline TArray<T> Exp(const TArray<T>& a)
85 { MathArray<T> ma; return( ma.ApplyFunction(a, exp) ); }
86
87/*! \ingroup TArray \fn Log(const TArray<T>& a)
88 \brief computation on TArray */
89template <class T>
90inline TArray<T> Log(const TArray<T>& a)
91 { MathArray<T> ma; return( ma.ApplyFunction(a, log) ); }
92
93/*! \ingroup TArray \fn Log10(const TArray<T>& a)
94 \brief computation on TArray */
95template <class T>
96inline TArray<T> Log10(const TArray<T>& a)
97 { MathArray<T> ma; return( ma.ApplyFunction(a, log10) ); }
98
99
100/*! \ingroup TArray \fn MeanSigma(const TArray<T>&,double&,double&)
101 \brief Return \b mean and \b sigma of elements of array \b a */
102template <class T>
103inline double MeanSigma(const TArray<T>& a, double & mean, double & sig)
104 { MathArray<T> ma; return( ma.MeanSigma(a, mean, sig) ); }
105
106/*! \ingroup TArray \fn Mean(const TArray<T>&)
107 \brief Return \b mean of elements of array \b a */
108template <class T>
109inline double Mean(const TArray<T>& a)
110 { MathArray<T> ma; double mean, sig; return( ma.MeanSigma(a, mean, sig) ); }
111
112} // Fin du namespace
113
114#endif
Note: See TracBrowser for help on using the repository browser.