Extreme Optimization™: Complexity made simple.

Numerical Components
for .NET

  • Home
  • Features
    • Math Library
    • Vector and Matrix Library
    • Statistics Library
    • Performance
    • Usability
  • Documentation
    • Introduction
    • Math Library User's Guide
    • Vector and Matrix Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Resources
    • Downloads
    • QuickStart Samples
    • Sample Applications
    • Frequently Asked Questions
    • Technical Support
  • Blog
  • Order
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Contact us
Introduction
Deployment Guide
Using Parallelism
Expand Mathematics Library User's GuideMathematics Library User's Guide
Expand Vector and Matrix Library User's GuideVector and Matrix Library User's Guide
Expand Statistics Library User's GuideStatistics Library User's Guide
Expand ReferenceReference
  • Home
    • Features
    • Solutions
    • Documentation
    • QuickStart Samples
    • Sample Applications
    • Downloads
    • Technical Support
    • Download trial
    • How to buy
    • Blog
    • Company
    • Resources
  • Documentation
    • Introduction
    • Deployment Guide
    • Using Parallelism
    • Mathematics Library User's Guide
    • Vector and Matrix Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Reference
    • Extreme.Mathematics Namespace
    • Extreme.Mathematics.Algorithms Namespace
    • Extreme.Mathematics.Calculus Namespace
    • Extreme.Mathematics.Calculus.OrdinaryDifferentialEquations Namespace
    • Extreme.Mathematics.Curves Namespace
    • Extreme.Mathematics.Curves.Nonlinear Namespace
    • Extreme.Mathematics.EquationSolvers Namespace
    • Extreme.Mathematics.Generic Namespace
    • Extreme.Mathematics.Generic.LinearAlgebra Namespace
    • Extreme.Mathematics.Generic.LinearAlgebra.Providers Namespace
    • Extreme.Mathematics.LinearAlgebra Namespace
    • Extreme.Mathematics.LinearAlgebra.Complex Namespace
    • Extreme.Mathematics.LinearAlgebra.Complex.Decompositions Namespace
    • Extreme.Mathematics.LinearAlgebra.IO Namespace
    • Extreme.Mathematics.LinearAlgebra.IterativeSolvers Namespace
    • Extreme.Mathematics.LinearAlgebra.IterativeSolvers.Preconditioners Namespace
    • Extreme.Mathematics.LinearAlgebra.Providers Namespace
    • Extreme.Mathematics.LinearAlgebra.Sparse Namespace
    • Extreme.Mathematics.Optimization Namespace
    • Extreme.Mathematics.Optimization.LineSearches Namespace
    • Extreme.Mathematics.SignalProcessing Namespace
    • Extreme.Statistics Namespace
    • Extreme.Statistics.Distributions Namespace
    • Extreme.Statistics.IO Namespace
    • Extreme.Statistics.Multivariate Namespace
    • Extreme.Statistics.Random Namespace
    • Extreme.Statistics.Tests Namespace
    • Extreme.Statistics.TimeSeriesAnalysis Namespace
  • Extreme.Mathematics Namespace
    • AccuracyGoal Structure
    • AlgorithmStatus Enumeration
    • ArrayMath Class
    • BigFloat Class
    • BigInteger Structure
    • BigRational Structure
    • ComplexMatrix Class
    • ComplexVector Class
    • Constants Class
    • ConvergenceCriterion Enumeration
    • DecimalMath Class
    • DimensionMismatchException Class
    • DimensionType Enumeration
    • DoubleComparer Class
    • DoubleComplex Structure
    • Elementary Class
    • EquationSolving Class
    • FunctionMath Class
    • IntegerMath Class
    • Intent Enumeration
    • Interval Structure
    • Interval(T) Structure
    • IPermutable Interface
    • MachineConstants Class
    • Matrix Class
    • MatrixDiagonal Enumeration
    • MatrixElementOrder Enumeration
    • MatrixNorm Enumeration
    • MatrixOperationSide Enumeration
    • MatrixTriangle Enumeration
    • NumericalDifferentiation Class
    • NumericalIntegration Class
    • Permutation Class
    • RoundingMode Enumeration
    • SingleComparer Class
    • SingleComplex Structure
    • SingleComplexMatrix Class
    • SingleComplexVector Class
    • SingleInterval Structure
    • SingleMatrix Class
    • SingleMatrixFiller Delegate
    • SingleVector Class
    • SingleVectorFiller Delegate
    • SolutionReport(T) Class
    • Special Class
    • SymbolicMath Class
    • TotalLossOfPrecisionException Class
    • TransposeOperation Enumeration
    • Vector Class
  • SingleComplex Structure
    • Members
    • Constructors
    • Fields
    • Methods
    • Operators and Type Conversions
    • Properties
Collapse image Expand Image Copy image CopyHover image
         




SingleComplex Structure

Members See Also 
Represents a complex number.

Namespace: Extreme.Mathematics
Assembly: Extreme.Numerics.SinglePrecision.Net40 (in Extreme.Numerics.SinglePrecision.Net40.dll) Version: 4.0.10170.0 (4.0.11003.0)

Syntax

C#
[SerializableAttribute]
public struct SingleComplex : IEquatable<SingleComplex>, 
	IEquatable<float>
Visual Basic (Declaration)
<SerializableAttribute> _
Public Structure SingleComplex _
	Implements IEquatable(Of SingleComplex), IEquatable(Of Single)
Visual C++
[SerializableAttribute]
public value class SingleComplex : IEquatable<SingleComplex>, 
	IEquatable<float>
F#
[<SealedAttribute>]
[<SerializableAttribute>]
type SingleComplex =  
    struct
        interface IEquatable<SingleComplex>
        interface IEquatable<float32>
    end

Remarks

The SingleComplex value type represents a complex number made of float-precision, 64-bit real and imaginary parts.

SingleComplex numbers arise in algebra in the solution of quadratic equations. The equation x2= –1 does not have any real solutions. However, if we define a new number, i as the square root of -1, then we have two solutions: i and -i.

This, in turn, gives rise to an entirely new class of numbers of the form a + ib with a and b real, and i defined as above. These are the complex numbers.

The SingleComplex structure provides methods for all the common operations on complex numbers. The Re property returns the real component of the complex number, while Im returns the imaginary part. Because the complex numbers don't have a natural ordering, only equality and inequality operators are available.

Overloaded versions of the major arithmetic operators are provided for languages that support them. For languages that don't support operator overloading, equivalent staticSharedstaticstatic (Shared in Visual Basic) methods are supplied.

When performing binary operations, if one of the operands is a SingleComplex, then the other operand is required to be an integral type or a floating-point type (Single or Single) or a complex type (SingleComplex). Prior to performing the operation, if the other operand is not a SingleComplex, it is converted to SingleComplex, and the operation is performed using at least float precision. If the operation produces a numeric result, the type of the result is SingleComplex.

Exceptions to this are methods that return a real property of a complex number: Argument, Modulus, ModulusSquared and Abs(SingleComplex). These methods return a Single value.

The floating-point operators, including the assignment operators, do not throw exceptions. Instead, in exceptional situations, the result of a floating-point operation is zero, Infinity, or NaN, as described below:

Many elementary functions have been extended to the complex domain. These are implemented by static methods.

Some of these functions are multi-valued. If there is one real argument, then any symmetry or anti-symmetry about the origin is preserved. For example, the inverse sine function satisfies asin(-x) == -asin(x) for -1 <= x <= 1. The Asin(Single) method satisfies this relationship for any real value of x.

For complex arguments, the identity Conjugate(f(x)) == f(Conjugate(x)) is preserved. The branch cuts for all complex functions defined here are along either the real or the imaginary axis. Along the branch cuts, the functions have different values depending on whether the zero component is normal (positive) zero or negative zero.

The real and imaginary parts of SingleComplex numbers are float-precision floating-point numbers.

See Also

SingleComplex Members
Extreme.Mathematics Namespace

Send comments on this topic to support@extremeoptimization.com

Copyright (c) 2004-2011 ExoAnalytics Inc.

Copyright © 2003-2013, Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual Studio.NET, and the Optimized for Visual Studio logo
are registered trademarks of Microsoft Corporation.