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.
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.