
Fixed tab indenting as well as some of the block comments at the top of a few of the files. Signed-off-by: Nathaniel Graham <ngraham@lanl.gov>
151 строка
3.5 KiB
Java
151 строка
3.5 KiB
Java
/*
|
|
* Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
|
|
* University Research and Technology
|
|
* Corporation. All rights reserved.
|
|
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
* of Tennessee Research Foundation. All rights
|
|
* reserved.
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
* University of Stuttgart. All rights reserved.
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
* All rights reserved.
|
|
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
|
|
* reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
package mpi;
|
|
|
|
import java.nio.*;
|
|
|
|
/**
|
|
* This class wraps a complex number stored in a buffer.
|
|
*/
|
|
public final class DoubleComplex
|
|
{
|
|
private final int offset;
|
|
private final DoubleBuffer buffer;
|
|
|
|
private DoubleComplex(DoubleBuffer buffer, int index)
|
|
{
|
|
this.buffer = buffer;
|
|
this.offset = index * 2;
|
|
}
|
|
|
|
/**
|
|
* Wraps a complex number stored in a buffer
|
|
* @param buffer buffer
|
|
* @return complex number
|
|
*/
|
|
public static DoubleComplex get(DoubleBuffer buffer)
|
|
{
|
|
return new DoubleComplex(buffer, 0);
|
|
}
|
|
|
|
/**
|
|
* Wraps the complex number at the specified position
|
|
* of an array of complex numbers stored in a buffer.
|
|
* @param buffer buffer
|
|
* @param index index
|
|
* @return complex number
|
|
*/
|
|
public static DoubleComplex get(DoubleBuffer buffer, int index)
|
|
{
|
|
return new DoubleComplex(buffer, index);
|
|
}
|
|
|
|
/**
|
|
* Wraps a complex number stored in the first two values of an array.
|
|
* @param array array
|
|
* @return complex number
|
|
*/
|
|
public static DoubleComplex get(double[] array)
|
|
{
|
|
return new DoubleComplex(DoubleBuffer.wrap(array), 0);
|
|
}
|
|
|
|
/**
|
|
* Wraps the complex number at the specified position of
|
|
* an array of complex numbers stored in an array of doubles.
|
|
* @param array array
|
|
* @param index index
|
|
* @return complex number
|
|
*/
|
|
public static DoubleComplex get(double[] array, int index)
|
|
{
|
|
return new DoubleComplex(DoubleBuffer.wrap(array), index);
|
|
}
|
|
|
|
/**
|
|
* Wraps a complex number stored in a buffer
|
|
* @param buffer buffer
|
|
* @return complex number
|
|
*/
|
|
public static DoubleComplex get(ByteBuffer buffer)
|
|
{
|
|
return new DoubleComplex(buffer.asDoubleBuffer(), 0);
|
|
}
|
|
|
|
/**
|
|
* Wraps the complex number at the specified position
|
|
* of an array of complex numbers stored in a buffer.
|
|
* @param buffer buffer
|
|
* @param index index
|
|
* @return complex number
|
|
*/
|
|
public static DoubleComplex get(ByteBuffer buffer, int index)
|
|
{
|
|
return new DoubleComplex(buffer.asDoubleBuffer(), index);
|
|
}
|
|
|
|
/**
|
|
* Gets the real value.
|
|
* @return real value
|
|
*/
|
|
public double getReal()
|
|
{
|
|
return buffer.get(offset);
|
|
}
|
|
|
|
/**
|
|
* Gets the imaginary value.
|
|
* @return imaginary value.
|
|
*/
|
|
public double getImag()
|
|
{
|
|
return buffer.get(offset + 1);
|
|
}
|
|
|
|
/**
|
|
* Puts the real value.
|
|
* @param real real value
|
|
*/
|
|
public void putReal(double real)
|
|
{
|
|
buffer.put(offset, real);
|
|
}
|
|
|
|
/**
|
|
* Puts the imaginary value.
|
|
* @param imag imaginary value
|
|
*/
|
|
public void putImag(double imag)
|
|
{
|
|
buffer.put(offset + 1, imag);
|
|
}
|
|
|
|
/**
|
|
* Gets the buffer where the complex number is stored.
|
|
* @return buffer where the complex number is stored
|
|
*/
|
|
public DoubleBuffer getBuffer()
|
|
{
|
|
return offset == 0 ? buffer : MPI.slice(buffer, offset);
|
|
}
|
|
|
|
} // DoubleComplex
|