# FLASH4.5 API

Generated from /asc/asci2/site/flashcode/secure/release_4p5/source/numericalTools/Roots/Roots_x4Polynomial.F90 with ROBODoc v4.99.8 on Tue Mar 05 16:16:15 2019

## [Functions] source/numericalTools/Roots/Roots_x4Polynomial

[top][index]

NAME

```  Roots_x4Polynomial
```

SYNOPSIS

```  call Roots_x4Polynomial (real,              intent (in)  :: q3,
real,              intent (in)  :: q2,
real,              intent (in)  :: q1,
real,              intent (in)  :: q0,
integer,           intent (out) :: nReal,
real,              intent (out) :: root (1:4,1:2),
logical, optional, intent (in)  :: printInfo,
integer, optional, intent (in)  :: printUnit)
```

DESCRIPTION

```  Calculates all real + complex roots of the quartic polynomial:

x^4 + q3 * x^3 + q2 * x^2 + q1 * x + q0

An option for printing a detailed info about the intermediate stages in solving
the quartic is available. Since the code has not yet been extensively tested,
this enables a detailed check in case something went wrong and the roots obtained
are not proper.

The quartic root solver can handle any size of quartic coefficients and there is
no danger of overflow, due to proper rescaling of the quartic polynomial.

The order of the roots is as follows:

1) For real roots, the order is according to their algebraic value
on the number scale (largest positive first, largest negative last).

2) For complex conjugate pair roots, the order is according to the
algebraic value of their real parts (largest positive first). If
the real parts are equal, the order is according to the algebraic
value of their imaginary parts (largest first).

3) All real roots preceede the complex ones.
```

ARGUMENTS

```  q3         : coefficient of x^3 term
q2         : coefficient of x^2 term
q1         : coefficient of x term
q0         : independent coefficient
nReal      : number of different real roots found
root (n,1) : real part of n-th root
root (n,2) : imaginary part of n-th root
printInfo  : if given and true, detailed info will be printed about intermediate stages
printUnit  : the unit ID, where the info will be printed
```

NOTES

```  If omitting 'printUnit' but specifying 'printInfo' as true, the info will be printed
on default output monitor. Giving just 'printUnit' does not do anything, unless 'printInfo'
is given and set to true.
```