Allink  v0.1
Matematica.cpp
1 #include "../include/Matematica.h"
2 #include <time.h>
3 void SigErr(int IsWrong,const char * s, ...){
4 #ifdef DEBUG
5  if(IsWrong){
6  va_list args;
7  va_start(args, s);
8  fprintf(stderr, "Error: ");
9  vfprintf(stderr, s, args);
10  fprintf(stderr, "exiting the program\n");
11  va_end(args);
12  abort();
13  }
14 #else
15  return;
16 #endif
17 }
18 void abort_(const char * s, ...)
19 {
20 #ifdef DEBUG
21  va_list args;
22  va_start(args, s);
23  vfprintf(stderr, s, args);
24  fprintf(stderr, "\n");
25  va_end(args);
26  abort();
27 #else
28  return;
29 #endif
30 }
31 void Message(const char * s, ...)
32 {
33 #ifdef DEBUG
34  va_list args;
35  va_start(args, s);
36  vfprintf(stderr, s, args);
37  fprintf(stderr, "\n");
38  va_end(args);
39 #else
40  return;
41 #endif
42 }
44  time_t TempoSeme;
45  (void)time(&TempoSeme);
46  int seme = (int)(TempoSeme);
47  //seme = 2351653;
48  NPassi = (int)1000;
49  PrecMinimo=1e-6;
50 #ifdef __GSL__
51  rng = (gsl_rng *)malloc(sizeof(gsl_rng));
52  rng = gsl_rng_alloc(gsl_rng_mt19937);
53  //rng = gsl_rng_alloc(gsl_rng_tt800);
54  gsl_rng_set(rng, seme);
55 #else
56  time_t Now;
57  time( &Now );
58  unsigned long Seed = (unsigned long)Now;
59  init_genrand( Seed ) ;
60  seme = (int)TempoSeme;
61  // printf("seme %d\n",seme);
62 #endif
63  //SeGaussiano = 0;
64  //fp = new double;
66  // ElabFunc = &Matematica::Derivata;
67  Elab = &Matematica::Derivata;
68  SpMem.a2 = 0.;
69  SpMem.a1 = 0.;
70  // NTemp=0;
71  // Temp=0.;
72  // casuale=0.;
73  // segno=1;
74  // DeltaGauss=0.;
75  // SeGaussiano=0;
76  // matrix <double> F(4,4);
77 }
78 Matematica::~Matematica(){
79 #ifdef __GSL__
80  gsl_rng_free(rng);
81 #endif
82 }
83 int Matematica::Factorial(int times){
84  if(times <0)
85  printf("the number is negative %d\n",times);
86  int Resp=1;
87  for(int t=1;t<times;t++){
88  Resp *= t;
89  }
90  return Resp;
91 }
92 double Matematica::Binomial(int times,int n){
93  double Resp=1.;
94  Resp = (double)Factorial(times)/(double)(Factorial(n)*Factorial(times-n));
95  return Resp;
96 }
97 int NumeroStringa(const char *NumeroC){
98  int Cifra=0;
99  int Numero=0;
100  int FattoreDieci=1;
101  int Potenza = strlen(NumeroC);
102  for(int j=0;j<Potenza;j++){
103  switch (NumeroC[j]){
104  case '0':
105  Cifra=0;
106  break;
107  case '1':
108  Cifra=1;
109  break;
110  case '2':
111  Cifra=2;
112  break;
113  case '3':
114  Cifra=3;
115  break;
116  case '4':
117  Cifra=4;
118  break;
119  case '5':
120  Cifra=5;
121  break;
122  case '6':
123  Cifra=6;
124  break;
125  case '7':
126  Cifra=7;
127  break;
128  case '8':
129  Cifra=8;
130  break;
131  case '9':
132  Cifra=9;
133  break;
134  }
135  // cout << "Cifra " << Cifra << " Numero " << NumeroC[j] << " Potenza " << Potenza << endl;
136  FattoreDieci=1;
137  for(int i=Potenza-j;i>1;i--)
138  FattoreDieci *=10;
139  Numero+=Cifra*FattoreDieci;
140  }
141  return Numero;
142 }
double Binomial(int times, int n)
For the BSpline.
Definition: Matematica.cpp:92
int Factorial(int times)
Computes.
Definition: Matematica.cpp:83
void Derivata(double *st, double *sw, int NMass)
Derivate of.
FUNC Func
Pointer to a function.
Definition: Matematica.h:111
Matematica()
Constructor.
Definition: Matematica.cpp:43
double ContactAngle(double x)
Definition of the contact angle.
double a2
a0 + a1*x + a2*x^2 + a3*x^3 + a4^4
double a1
a0 + a1*x + a2*x^2 + a3*x^3 + a4^4