org.apache.poi.ss.formula.functions

## Class Complex

- java.lang.Object
- - 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.

  - If omitted, suffix is assumed to be "i".
  - If suffix is neither "i" nor "j", COMPLEX returns the #VALUE! error value.
  Author:
    cedric dot walter @ gmail dot com

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `DEFAULT_SUFFIX`
    `static FreeRefFunction` | `instance`
    `static java.lang.String` | `SUPPORTED_SUFFIX`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Complex()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`.

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.