Representations of the complex numbers
--------------------------------------

                 Key: MATH-667
                 URL: https://issues.apache.org/jira/browse/MATH-667
             Project: Commons Math
          Issue Type: Wish
            Reporter: Gilles
            Priority: Minor
             Fix For: 3.1


Several issues have been raised about the current behaviour of the "Complex" 
class, located in package "o.a.c.m.complex" (e.g. MATH-657, MATH-620).
The ensuing discussion revealed various, sometimes incompatible, requirements 
with focus on efficiency or consistency or backwards compatibility or 
comparison with other math packages (Octave) or faithfulness to standards 
(C99x).

It is thus proposed to create several classes, each with a clearly defined 
purpose.

The consensus seems to be that the first task is to implement a new 
"BasicComplex" class where the computational formulae (for computing real and 
imaginary part of a complex) will be applied directly without worrying about 
limiting cases (NaNs and infinities). Doing so will automatically produce a 
behaviour similar to the Java {{double}} primitive. It is also assumed that it 
will be the most efficient implementation for "normal" use (i.e. not involving 
limiting cases).
This task would consist in copying most of the code in the existing "Complex" 
class over to "BasicComplex". And similarly with "ComplexTest". Then, in 
"BasicComplex", one would remove all variables that refer to NaNs and 
infinities together with checks and special assignments, and adapt the unit 
tests along the way.

A new "ExtendedComplex" class would inherit from "BasicComplex". This class 
would aim at representing the compactified space of the complex numbers (one 
point-at-infinity).

A new "C99Complex" class would inherit from "BasicComplex". This class would 
aim at implementing the C99x standard.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to