org.apache.poi.ss.formula.functions
Class Complex

java.lang.Object
  extended by org.apache.poi.ss.formula.functions.Complex
All Implemented Interfaces:
FreeRefFunction, Function, Function2Arg, Function3Arg

public class Complex
extends java.lang.Object
implements FreeRefFunction

Implementation for Excel COMPLEX () function.

Syntax:
COMPLEX (real_num,i_num,suffix )

Converts real and imaginary coefficients into a complex number of the form x + yi or x + yj.

All complex number functions accept "i" and "j" for suffix, but neither "I" nor "J". Using uppercase results in the #VALUE! error value. All functions that accept two or more complex numbers require that all suffixes match.

real_num The real coefficient of the complex number. If this argument is nonnumeric, this function returns the #VALUE! error value.

i_num The imaginary coefficient of the complex number. If this argument is nonnumeric, this function returns the #VALUE! error value.

suffix The suffix for the imaginary component of the complex number.


Field Summary
static java.lang.String DEFAULT_SUFFIX
           
static FreeRefFunction instance
           
static java.lang.String SUPPORTED_SUFFIX
           
 
Constructor Summary
Complex()
           
 
Method Summary
 ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval real_num, ValueEval i_num)
          see Function.evaluate(ValueEval[], int, int)
 ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval real_num, ValueEval i_num, ValueEval suffix)
          see Function.evaluate(ValueEval[], int, int)
 ValueEval evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex)
           
 ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

instance

public static final FreeRefFunction instance

DEFAULT_SUFFIX

public static final java.lang.String DEFAULT_SUFFIX
See Also:
Constant Field Values

SUPPORTED_SUFFIX

public static final java.lang.String SUPPORTED_SUFFIX
See Also:
Constant Field Values
Constructor Detail

Complex

public Complex()
Method Detail

evaluate

public ValueEval evaluate(int srcRowIndex,
                          int srcColumnIndex,
                          ValueEval real_num,
                          ValueEval i_num)
Description copied from interface: Function2Arg
see Function.evaluate(ValueEval[], int, int)

Specified by:
evaluate in interface Function2Arg

evaluate

public ValueEval evaluate(int srcRowIndex,
                          int srcColumnIndex,
                          ValueEval real_num,
                          ValueEval i_num,
                          ValueEval suffix)
Description copied from interface: Function3Arg
see Function.evaluate(ValueEval[], int, int)

Specified by:
evaluate in interface Function3Arg

evaluate

public ValueEval evaluate(ValueEval[] args,
                          OperationEvaluationContext ec)
Specified by:
evaluate in interface FreeRefFunction
Parameters:
args - the pre-evaluated arguments for this function. args is never null, nor are any of its elements.
ec - primarily used to identify the source cell containing the formula being evaluated. may also be used to dynamically create reference evals.
Returns:
never null. Possibly an instance of ErrorEval in the case of a specified Excel error (Exceptions are never thrown to represent Excel errors).

evaluate

public final ValueEval evaluate(ValueEval[] args,
                                int srcRowIndex,
                                int srcColumnIndex)
Specified by:
evaluate in interface Function
Parameters:
args - the evaluated function arguments. Empty values are represented with BlankEval or MissingArgEval, never null.
srcRowIndex - row index of the cell containing the formula under evaluation
srcColumnIndex - column index of the cell containing the formula under evaluation
Returns:
The evaluated result, possibly an ErrorEval, never null. Note - Excel uses the error code #NUM! instead of IEEE NaN, so when numeric functions evaluate to Double.NaN be sure to translate the result to ErrorEval.NUM_ERROR.