private static Expression ComplexConstant(Complex value) { if (value.Real != 0.0) { if (value.Imaginary() != 0.0) { return(Expression.Call( new Func <double, double, Complex>(MathUtils.MakeComplex).GetMethodInfo(), Constant(value.Real), Constant(value.Imaginary()) )); } else { return(Expression.Call( new Func <double, Complex>(MathUtils.MakeReal).GetMethodInfo(), Constant(value.Real) )); } } else { return(Expression.Call( new Func <double, Complex>(MathUtils.MakeImaginary).GetMethodInfo(), Constant(value.Imaginary()) )); } }