Numero complesso (complex, complexf)

Il tipo integrato complex è una struttura con due campi double:

struct complex
  {
   double             real;   // parte reale
   double             imag;   // parte immaginaria
  };

Il tipo integrato complexf è una struttura con due campi float:

struct complexf
  {
   float              real;   // parte reale
   float              imag;   // parte immaginaria
  };

 

I tipi complex e complexf possono essere passati per valore come parametri delle funzioni MQL5 (a differenza delle strutture ordinarie, che vengono passate solo per riferimento). Per le funzioni importate da DLL, i tipi complex e complexf devono essere passati solo per riferimento.

Il suffisso 'i' viene usato per descrivere le costanti complesse:

complex square(complex c)
  {
   return(c*c);
  }  
void OnStart()
  {
   Print(square(1+2i));  // Una costante viene passata come parametro
  }
// Verrà emesso "(-3,4)", che è la rappresentazione come stringa del numero complesso 

Attualmente per i numeri complessi sono disponibili solo operazioni semplici: =, +, -, *, /, +=, -=, *=, /=, ==, !=.

Il supporto per funzioni matematiche aggiuntive verrà aggiunto in seguito, consentendo il calcolo del valore assoluto, seno, coseno e altre funzioni.

vectorc

Un array monodimensionale di numeri di tipo complex è destinato alla gestione dei numeri complessi. Nelle funzioni template è possibile usare la notazione vector<complex>.

matrixc

Un array bidimensionale di numeri di tipo complex è destinato alla gestione dei numeri complessi. Nelle funzioni template è possibile usare la notazione matrix<complex>.

vectorcf

Un array monodimensionale di numeri di tipo complexf è destinato alla gestione dei numeri complessi. Nelle funzioni template è possibile usare la notazione vector<complexf>.

matrixcf

Un array bidimensionale di numeri di tipo complexf è destinato alla gestione dei numeri complessi. Nelle funzioni template è possibile usare la notazione matrix<complexf>.