Тип complex
Встроенный тип complex представляет из себя структуру с двумя полями типа double:
struct complex
|
Мы описываем её в разделе о конвертации типов, потому что она "превращает" два числа double в новую сущность, в чем-то по похожему принципу, как структуры "превращаются" в массивы байтов и обратно. Кроме того, было бы в принципе затруднительно представлять этот тип без предварительного описания структур.
Структура complex не имеет конструктора, поэтому создавать комплексные числа следует с помощью списка инициализации.
complex c = {re, im}; |
Для комплексных чисел на данный момент доступны только простые арифметические операции и операции сравнения: =, +, -, *, /, +=, -=, *=, /=, ==, !=. Поддержка математических функций будет добавлена позднее.
Внимание! Комплексные переменные не могут быть описаны как входные (с помощью ключевого слова input) для MQL-программы.
Для описания комплексных (мнимых частей) констант используется суффикс 'i', например:
const complex x = 1 - 2i;
|
В следующем примере (скрипт Complex.mq5) создается комплексное число и возводится в квадрат.
input double r = 1;
|
С параметрами по умолчанию скрипт выведет строки:
c=(1,2) / ok
|
Здесь пары чисел в круглых скобках — это строковое представление комплексного числа.
Тип complex может передаваться по значению в качестве параметра MQL-функций (в отличие от обычных структур, которые передаются только по ссылке). Для функций, импортируемых из DLL, тип complex должен передаваться только по ссылке.