Package | Description |
---|---|
com.imsl.math |
Mathematical functions and algorithms.
|
Modifier and Type | Field and Description |
---|---|
protected Complex[][] |
ComplexLU.factor
This is an n by n
Complex matrix containing
the LU factorization of the matrix A. |
static Complex |
Complex.i
The imaginary unit.
|
Complex[][] |
ComplexSparseMatrix.SparseArray.values
Jagged array containing sparse array values.
|
Modifier and Type | Method and Description |
---|---|
static Complex |
Complex.acos(Complex z)
Returns the inverse cosine (arc cosine) of a
Complex ,
with branch cuts outside the interval [-1,1] along the
real axis. |
static Complex |
Complex.acosh(Complex z)
\( \DeclareMathOperator{\arccosh}{arccosh} \)
Returns the inverse hyperbolic cosine (arc cosh) of a
Complex ,
with a branch cut at values less than one along the real axis. |
static Complex[][] |
ComplexMatrix.add(Complex[][] a,
Complex[][] b)
Add two rectangular
Complex arrays, a + b. |
static Complex |
Complex.add(Complex x,
Complex y)
Returns the sum of two
Complex objects, x+y. |
static Complex |
Complex.add(Complex x,
double y)
Returns the sum of a
Complex and a double , x+y. |
static Complex |
Complex.add(double x,
Complex y)
Returns the sum of a
double and a Complex , x+y. |
static Complex |
Complex.asin(Complex z)
\( \DeclareMathOperator{\arcsinh}{arcsinh} \)
Returns the inverse sine (arc sine) of a
Complex ,
with branch cuts outside the interval [-1,1] along the
real axis. |
static Complex |
Complex.asinh(Complex z)
Returns the inverse hyperbolic sine (arc sinh) of a
Complex ,
with branch cuts outside the interval [-i,i]. |
static Complex |
Complex.atan(Complex z)
\( \DeclareMathOperator{\arctanh}{arctanh} \)
Returns the inverse tangent (arc tangent) of a
Complex ,
with branch cuts outside the interval [-i,i] along the
imaginary axis. |
static Complex |
Complex.atanh(Complex z)
Returns the inverse hyperbolic tangent (arc tanh) of a
Complex ,
with branch cuts outside the interval [-1,1] on the real axis. |
Complex[] |
ComplexFFT.backward(Complex[] coef)
Compute the complex periodic sequence from its Fourier coefficients.
|
Complex[] |
ZeroPolynomial.computeRoots(Complex[] coef)
Computes the roots of the polynomial with Complex coefficients.
|
Complex[] |
ZeroPolynomial.computeRoots(double[] coef)
Computes the roots of the polynomial with real coefficients.
|
static Complex |
Complex.conjugate(Complex z)
Returns the complex conjugate of a
Complex object. |
static Complex |
Complex.cos(Complex z)
Returns the cosine of a
Complex . |
static Complex |
Complex.cosh(Complex z)
Returns the hyperbolic cosh of a
Complex . |
Complex |
ComplexLU.determinant()
Return the determinant of the matrix used to construct this instance.
|
static Complex |
Complex.divide(Complex x,
Complex y)
Returns the result of a
Complex object divided by a Complex object, x/y. |
static Complex |
Complex.divide(Complex x,
double y)
Returns the result of a
Complex object divided by a double , x/y. |
static Complex |
Complex.divide(double x,
Complex y)
Returns the result of a
double divided by a Complex object, x/y. |
static Complex |
Complex.exp(Complex z)
Returns the exponential of a
Complex z, exp(z). |
Complex[] |
ComplexFFT.forward(Complex[] seq)
Compute the Fourier coefficients of a complex periodic sequence.
|
Complex |
ComplexSparseMatrix.get(int iRow,
int jColumn)
Returns the value of an element in the matrix.
|
Complex[][] |
ComplexSVD.getInverse()
Compute the Moore-Penrose generalized inverse.
|
Complex[][] |
ComplexLU.getL()
Returns the lower triangular portion of the LU
factorization of A.
|
Complex[][] |
ComplexLU.getPermutationMatrix()
Returns the permutation matrix which results from the
LU factorization of A.
|
Complex |
ZeroPolynomial.getRoot(int index)
Returns a zero of the polynomial.
|
Complex[] |
ZeroPolynomial.getRoots()
Returns the zeros of the polynomial.
|
Complex[][] |
ComplexLU.getU()
Returns the unit upper triangular portion of the LU
factorization of A.
|
Complex[][] |
ComplexSVD.getU()
Returns the left singular vectors.
|
Complex[][] |
ComplexSVD.getV()
Returns the right singular vectors.
|
Complex[] |
Eigen.getValues()
Returns the eigenvalues of a matrix of type
double . |
Complex[] |
ComplexEigen.getValues()
Returns the eigenvalues of a matrix of type
Complex . |
Complex[][] |
Eigen.getVectors()
Returns the eigenvectors.
|
Complex[][] |
ComplexEigen.getVectors()
Returns the eigenvectors of the input matrix.
|
Complex[][] |
ComplexLU.inverse()
Returns the inverse of the matrix used to construct this instance.
|
static Complex |
Complex.log(Complex z)
Returns the logarithm of a
Complex z,
with a branch cut along the negative real axis. |
Complex[] |
ComplexSparseMatrix.multiply(Complex[] x)
Multiply the matrix by a vector.
|
static Complex[] |
ComplexMatrix.multiply(Complex[][] a,
Complex[] x)
Multiply the rectangular array a and the column vector x, both
Complex . |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
Complex[][] b)
Multiply two
Complex rectangular arrays, a * b. |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
Complex[][] b,
int numberOfThreads)
Multiply two
Complex rectangular arrays, a *
b , using multiple java.lang.Thread s. |
static Complex[] |
ComplexMatrix.multiply(Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[] x)
Multiply the rectangular array a and the column vector x, both
Complex . |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[][] b,
ComplexMatrix.MatrixType bType,
int numberOfThreads)
Multiply two
Complex rectangular arrays of type
MatrixType , a * b , using multiple
java.lang.Thread s. |
static Complex[] |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a)
Return the product of the row vector x and the rectangular array a, both
Complex . |
static Complex[] |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a,
ComplexMatrix.MatrixType aType)
Return the product of the row vector x and the rectangular array a, both
Complex . |
static Complex |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[] y,
boolean equalVectors)
Compute vector-matrix-vector product trans(conj(x)) * a * y.
|
static Complex[] |
ComplexSparseMatrix.multiply(Complex[] x,
ComplexSparseMatrix A)
Multiply row array
x and sparse matrix A ,
\(x^TA \). |
static Complex |
Complex.multiply(Complex x,
Complex y)
Returns the product of two
Complex objects, x * y. |
static Complex |
Complex.multiply(Complex x,
double y)
Returns the product of a
Complex object and a double ,
x * y. |
static Complex[] |
ComplexSparseMatrix.multiply(ComplexSparseMatrix A,
Complex[] x)
Multiply sparse matrix
A and column array x ,
\(A x\). |
static Complex |
Complex.multiply(double x,
Complex y)
Returns the product of a
double and a Complex object,
x * y. |
static Complex[] |
ComplexSparseMatrix.multiplyHermitian(ComplexSparseMatrix A,
Complex[] x)
Multiply sparse Hermitian matrix
A and column vector x . |
static Complex |
Complex.multiplyImag(Complex x,
double y)
Returns the product of a
Complex object and a pure
imaginary double , x * iy. |
static Complex |
Complex.multiplyImag(double x,
Complex y)
Returns the product of a pure imaginary
double and a
Complex object, ix * y. |
static Complex |
Complex.negate(Complex z)
Returns the negative of a
Complex object, -z. |
Complex |
ComplexSparseMatrix.plusEquals(int iRow,
int jColumn,
Complex x)
Adds a value to an element in the matrix.
|
static Complex |
Complex.pow(Complex x,
Complex y)
Returns the
Complex x raised to the Complex y power. |
static Complex |
Complex.pow(Complex z,
double x)
Returns the
Complex z raised to the x power,
with a branch cut for the first parameter (z) along the
negative real axis. |
static Complex |
Complex.sin(Complex z)
Returns the sine of a
Complex . |
static Complex |
Complex.sinh(Complex z)
Returns the hyperbolic sine of a
Complex . |
Complex[] |
ComplexSparseCholesky.solve(Complex[] b)
Computes the solution of a sparse Hermitian positive definite
system of linear equations \(Ax=b\).
|
Complex[] |
ComplexLU.solve(Complex[] b)
Return the solution x of the linear system Ax = b using the LU
factorization of A.
|
Complex[] |
ComplexSuperLU.solve(Complex[] b)
Computation of the solution vector for the system
\( Ax = b\).
|
static Complex[] |
ComplexLU.solve(Complex[][] a,
Complex[] b)
Solve Ax = b for x using the LU factorization of A.
|
Complex[] |
ComplexSuperLU.solveConjugateTranspose(Complex[] b)
Computation of the solution vector for the system
\( A^Hx = b\).
|
Complex[] |
ComplexLU.solveTranspose(Complex[] b)
Return the solution x of the linear system \(A^T x = b\).
|
Complex[] |
ComplexSuperLU.solveTranspose(Complex[] b)
Computation of the solution vector for the system
\( A^Tx = b\).
|
static Complex |
Complex.sqrt(Complex z)
Returns the square root of a
Complex ,
with a branch cut along the negative real axis. |
static Complex[][] |
ComplexMatrix.subtract(Complex[][] a,
Complex[][] b)
Subtract two
Complex rectangular arrays, a - b. |
static Complex |
Complex.subtract(Complex x,
Complex y)
Returns the difference of two
Complex objects, x-y. |
static Complex |
Complex.subtract(Complex x,
double y)
Returns the difference of a
Complex object and a double , x-y. |
static Complex |
Complex.subtract(double x,
Complex y)
Returns the difference of a
double and a Complex object, x-y. |
static Complex |
Complex.tan(Complex z)
Returns the tangent of a
Complex . |
static Complex |
Complex.tanh(Complex z)
Returns the hyperbolic tanh of a
Complex . |
Complex[][] |
ComplexSparseMatrix.toDenseMatrix()
Returns the sparse matrix as a dense matrix.
|
static Complex[][] |
ComplexMatrix.transpose(Complex[][] a)
Return the transpose of a
Complex matrix. |
static Complex |
Complex.valueOf(String s)
Parses a
String into a Complex . |
Modifier and Type | Method and Description |
---|---|
static double |
Complex.abs(Complex z)
Returns the absolute value (modulus) of a
Complex , |z|. |
static Complex |
Complex.acos(Complex z)
Returns the inverse cosine (arc cosine) of a
Complex ,
with branch cuts outside the interval [-1,1] along the
real axis. |
static Complex |
Complex.acosh(Complex z)
\( \DeclareMathOperator{\arccosh}{arccosh} \)
Returns the inverse hyperbolic cosine (arc cosh) of a
Complex ,
with a branch cut at values less than one along the real axis. |
static Complex[][] |
ComplexMatrix.add(Complex[][] a,
Complex[][] b)
Add two rectangular
Complex arrays, a + b. |
static Complex[][] |
ComplexMatrix.add(Complex[][] a,
Complex[][] b)
Add two rectangular
Complex arrays, a + b. |
static Complex |
Complex.add(Complex x,
Complex y)
Returns the sum of two
Complex objects, x+y. |
static ComplexSparseMatrix |
ComplexSparseMatrix.add(Complex alpha,
Complex beta,
ComplexSparseMatrix A,
ComplexSparseMatrix B)
Performs element-wise addition of two complex sparse matrices
A , B of type
ComplexSparseMatrix ,
\(C \leftarrow \alpha A + \beta B.\) |
static Complex |
Complex.add(Complex x,
double y)
Returns the sum of a
Complex and a double , x+y. |
static Complex |
Complex.add(double x,
Complex y)
Returns the sum of a
double and a Complex , x+y. |
static double |
Complex.argument(Complex z)
Returns the argument (phase) of a
Complex , in radians,
with a branch cut along the negative real axis. |
static Complex |
Complex.asin(Complex z)
\( \DeclareMathOperator{\arcsinh}{arcsinh} \)
Returns the inverse sine (arc sine) of a
Complex ,
with branch cuts outside the interval [-1,1] along the
real axis. |
static Complex |
Complex.asinh(Complex z)
Returns the inverse hyperbolic sine (arc sinh) of a
Complex ,
with branch cuts outside the interval [-i,i]. |
static Complex |
Complex.atan(Complex z)
\( \DeclareMathOperator{\arctanh}{arctanh} \)
Returns the inverse tangent (arc tangent) of a
Complex ,
with branch cuts outside the interval [-i,i] along the
imaginary axis. |
static Complex |
Complex.atanh(Complex z)
Returns the inverse hyperbolic tangent (arc tanh) of a
Complex ,
with branch cuts outside the interval [-1,1] on the real axis. |
Complex[] |
ComplexFFT.backward(Complex[] coef)
Compute the complex periodic sequence from its Fourier coefficients.
|
static void |
ComplexMatrix.checkMatrix(Complex[][] a)
Check that all of the rows in the
Complex matrix have the
same length. |
static void |
ComplexMatrix.CheckMatrix(Complex[][] a)
Deprecated.
Use
ComplexMatrix.checkMatrix(Complex[][]) instead. |
static void |
ComplexMatrix.checkSquareMatrix(Complex[][] a)
Check that the
Complex matrix is square. |
static void |
ComplexMatrix.CheckSquareMatrix(Complex[][] a)
Deprecated.
Use
ComplexMatrix.checkSquareMatrix(Complex[][]) instead. |
int |
Complex.compareTo(Complex z)
Compares two
Complex objects. |
Complex[] |
ZeroPolynomial.computeRoots(Complex[] coef)
Computes the roots of the polynomial with Complex coefficients.
|
double |
ComplexLU.condition(Complex[][] a)
Return an estimate of the reciprocal of the \(L_1\) condition number.
|
static Complex |
Complex.conjugate(Complex z)
Returns the complex conjugate of a
Complex object. |
static Complex |
Complex.cos(Complex z)
Returns the cosine of a
Complex . |
static Complex |
Complex.cosh(Complex z)
Returns the hyperbolic cosh of a
Complex . |
static Complex |
Complex.divide(Complex x,
Complex y)
Returns the result of a
Complex object divided by a Complex object, x/y. |
static Complex |
Complex.divide(Complex x,
double y)
Returns the result of a
Complex object divided by a double , x/y. |
static Complex |
Complex.divide(double x,
Complex y)
Returns the result of a
double divided by a Complex object, x/y. |
boolean |
Complex.equals(Complex z)
Compares with another
Complex . |
static Complex |
Complex.exp(Complex z)
Returns the exponential of a
Complex z, exp(z). |
Complex[] |
ComplexFFT.forward(Complex[] seq)
Compute the Fourier coefficients of a complex periodic sequence.
|
static double |
ComplexMatrix.frobeniusNorm(Complex[][] a)
Return the Frobenius norm of a
Complex matrix. |
static double |
Complex.imag(Complex z)
Returns the imaginary part of a
Complex object. |
static double |
ComplexMatrix.infinityNorm(Complex[][] a)
Return the infinity norm of a
Complex matrix. |
static boolean |
ComplexMatrix.isHermitian(Complex[][] a)
Check if the
Complex matrix is Hermitian. |
static boolean |
ComplexMatrix.isSymmetric(Complex[][] a)
Check if the
Complex matrix is symmetric. |
static Complex |
Complex.log(Complex z)
Returns the logarithm of a
Complex z,
with a branch cut along the negative real axis. |
Complex[] |
ComplexSparseMatrix.multiply(Complex[] x)
Multiply the matrix by a vector.
|
static Complex[] |
ComplexMatrix.multiply(Complex[][] a,
Complex[] x)
Multiply the rectangular array a and the column vector x, both
Complex . |
static Complex[] |
ComplexMatrix.multiply(Complex[][] a,
Complex[] x)
Multiply the rectangular array a and the column vector x, both
Complex . |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
Complex[][] b)
Multiply two
Complex rectangular arrays, a * b. |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
Complex[][] b)
Multiply two
Complex rectangular arrays, a * b. |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
Complex[][] b,
int numberOfThreads)
Multiply two
Complex rectangular arrays, a *
b , using multiple java.lang.Thread s. |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
Complex[][] b,
int numberOfThreads)
Multiply two
Complex rectangular arrays, a *
b , using multiple java.lang.Thread s. |
static Complex[] |
ComplexMatrix.multiply(Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[] x)
Multiply the rectangular array a and the column vector x, both
Complex . |
static Complex[] |
ComplexMatrix.multiply(Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[] x)
Multiply the rectangular array a and the column vector x, both
Complex . |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[][] b,
ComplexMatrix.MatrixType bType,
int numberOfThreads)
Multiply two
Complex rectangular arrays of type
MatrixType , a * b , using multiple
java.lang.Thread s. |
static Complex[][] |
ComplexMatrix.multiply(Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[][] b,
ComplexMatrix.MatrixType bType,
int numberOfThreads)
Multiply two
Complex rectangular arrays of type
MatrixType , a * b , using multiple
java.lang.Thread s. |
static Complex[] |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a)
Return the product of the row vector x and the rectangular array a, both
Complex . |
static Complex[] |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a)
Return the product of the row vector x and the rectangular array a, both
Complex . |
static Complex[] |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a,
ComplexMatrix.MatrixType aType)
Return the product of the row vector x and the rectangular array a, both
Complex . |
static Complex[] |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a,
ComplexMatrix.MatrixType aType)
Return the product of the row vector x and the rectangular array a, both
Complex . |
static Complex |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[] y,
boolean equalVectors)
Compute vector-matrix-vector product trans(conj(x)) * a * y.
|
static Complex |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[] y,
boolean equalVectors)
Compute vector-matrix-vector product trans(conj(x)) * a * y.
|
static Complex |
ComplexMatrix.multiply(Complex[] x,
Complex[][] a,
ComplexMatrix.MatrixType aType,
Complex[] y,
boolean equalVectors)
Compute vector-matrix-vector product trans(conj(x)) * a * y.
|
static Complex[] |
ComplexSparseMatrix.multiply(Complex[] x,
ComplexSparseMatrix A)
Multiply row array
x and sparse matrix A ,
\(x^TA \). |
static Complex |
Complex.multiply(Complex x,
Complex y)
Returns the product of two
Complex objects, x * y. |
static Complex |
Complex.multiply(Complex x,
double y)
Returns the product of a
Complex object and a double ,
x * y. |
static Complex[] |
ComplexSparseMatrix.multiply(ComplexSparseMatrix A,
Complex[] x)
Multiply sparse matrix
A and column array x ,
\(A x\). |
static Complex |
Complex.multiply(double x,
Complex y)
Returns the product of a
double and a Complex object,
x * y. |
static Complex[] |
ComplexSparseMatrix.multiplyHermitian(ComplexSparseMatrix A,
Complex[] x)
Multiply sparse Hermitian matrix
A and column vector x . |
static Complex |
Complex.multiplyImag(Complex x,
double y)
Returns the product of a
Complex object and a pure
imaginary double , x * iy. |
static Complex |
Complex.multiplyImag(double x,
Complex y)
Returns the product of a pure imaginary
double and a
Complex object, ix * y. |
static Complex |
Complex.negate(Complex z)
Returns the negative of a
Complex object, -z. |
static double |
ComplexMatrix.oneNorm(Complex[][] a)
Return the
Complex matrix one norm. |
Complex |
ComplexSparseMatrix.plusEquals(int iRow,
int jColumn,
Complex x)
Adds a value to an element in the matrix.
|
static Complex |
Complex.pow(Complex x,
Complex y)
Returns the
Complex x raised to the Complex y power. |
static Complex |
Complex.pow(Complex z,
double x)
Returns the
Complex z raised to the x power,
with a branch cut for the first parameter (z) along the
negative real axis. |
static double |
Complex.real(Complex z)
Returns the real part of a
Complex object. |
void |
ComplexSparseMatrix.set(int iRow,
int jColumn,
Complex x)
Sets the value of an element in the matrix.
|
static Complex |
Complex.sin(Complex z)
Returns the sine of a
Complex . |
static Complex |
Complex.sinh(Complex z)
Returns the hyperbolic sine of a
Complex . |
Complex[] |
ComplexSparseCholesky.solve(Complex[] b)
Computes the solution of a sparse Hermitian positive definite
system of linear equations \(Ax=b\).
|
Complex[] |
ComplexLU.solve(Complex[] b)
Return the solution x of the linear system Ax = b using the LU
factorization of A.
|
Complex[] |
ComplexSuperLU.solve(Complex[] b)
Computation of the solution vector for the system
\( Ax = b\).
|
static Complex[] |
ComplexLU.solve(Complex[][] a,
Complex[] b)
Solve Ax = b for x using the LU factorization of A.
|
static Complex[] |
ComplexLU.solve(Complex[][] a,
Complex[] b)
Solve Ax = b for x using the LU factorization of A.
|
Complex[] |
ComplexSuperLU.solveConjugateTranspose(Complex[] b)
Computation of the solution vector for the system
\( A^Hx = b\).
|
Complex[] |
ComplexLU.solveTranspose(Complex[] b)
Return the solution x of the linear system \(A^T x = b\).
|
Complex[] |
ComplexSuperLU.solveTranspose(Complex[] b)
Computation of the solution vector for the system
\( A^Tx = b\).
|
static Complex |
Complex.sqrt(Complex z)
Returns the square root of a
Complex ,
with a branch cut along the negative real axis. |
static Complex[][] |
ComplexMatrix.subtract(Complex[][] a,
Complex[][] b)
Subtract two
Complex rectangular arrays, a - b. |
static Complex[][] |
ComplexMatrix.subtract(Complex[][] a,
Complex[][] b)
Subtract two
Complex rectangular arrays, a - b. |
static Complex |
Complex.subtract(Complex x,
Complex y)
Returns the difference of two
Complex objects, x-y. |
static Complex |
Complex.subtract(Complex x,
double y)
Returns the difference of a
Complex object and a double , x-y. |
static Complex |
Complex.subtract(double x,
Complex y)
Returns the difference of a
double and a Complex object, x-y. |
static Complex |
Complex.tan(Complex z)
Returns the tangent of a
Complex . |
static Complex |
Complex.tanh(Complex z)
Returns the hyperbolic tanh of a
Complex . |
static Complex[][] |
ComplexMatrix.transpose(Complex[][] a)
Return the transpose of a
Complex matrix. |
Constructor and Description |
---|
Complex(Complex z)
Constructs a
Complex equal to the argument. |
ComplexEigen(Complex[][] a)
Constructor for the computation of the eigenvalues and eigenvectors
of a complex square matrix.
|
ComplexLU(Complex[][] a)
Creates the LU factorization of a square matrix of type
Complex . |
ComplexSparseMatrix(int nRows,
int nColumns,
int[][] index,
Complex[][] values)
Constructs a sparse matrix from SparseArray (Java Sparse Array) data.
|
ComplexSVD(Complex[][] a)
Construct the singular value decomposition of a rectangular matrix with
default tolerance.
|
ComplexSVD(Complex[][] a,
double tol)
Construct the singular value decomposition of a rectangular matrix with
a given tolerance.
|
Copyright © 2020 Rogue Wave Software. All rights reserved.