NumDart

Complex numbers

The Complex type and its operations.

Complex holds a real and an imaginary part and supports +, -, * and /. Helper functions cover the rest: complexAbs, complexConjugate, complexExp, complexCos, complexMultiplyScalar, complexDivideScalar.

Complex numbersArithmetic, magnitude, conjugate and the complex exponential.
import 'dart:math' as math;

import 'package:scidart/numdart.dart';

String show(Complex z) =>
    '${z.real} ${z.imaginary < 0 ? '-' : '+'} ${z.imaginary.abs()}i';

void main() {
  var a = Complex(real: 3, imaginary: 4);
  var b = Complex.ri(1, -2);

  print('a + b = ${show(a + b)}');
  print('a * b = ${show(a * b)}');
  print('a / b = ${show(a / b)}');
  print('|a| = ${complexAbs(a)}');
  print('conj(a) = ${show(complexConjugate(a))}');
  // Euler: e^(i pi) = -1
  print('e^(i pi) = ${show(complexExp(Complex(imaginary: math.pi)))}');
}
Output
a + b = 4.0 + 2.0i
a * b = 11.0 - 2.0i
a / b = -1.0 + 2.0i
|a| = 5.0
conj(a) = 3.0 - 4.0i
e^(i pi) = -1.0 + 1.2246467991473532e-16i

Arrays of complex values are ArrayComplex, with element-wise versions such as arrayComplexAbs and arrayComplexConjugate. arrayToComplexArray converts a real Array.

Edit this guide on GitHub