org.apfloat.internal.FloatBuilderFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of apfloat Show documentation
Show all versions of apfloat Show documentation
High performance arbitrary precision arithmetic library
package org.apfloat.internal;
import org.apfloat.ApfloatRuntimeException;
import org.apfloat.spi.AdditionBuilder;
import org.apfloat.spi.BuilderFactory;
import org.apfloat.spi.ApfloatBuilder;
import org.apfloat.spi.DataStorageBuilder;
import org.apfloat.spi.ConvolutionBuilder;
import org.apfloat.spi.NTTBuilder;
import org.apfloat.spi.MatrixBuilder;
import org.apfloat.spi.CarryCRTBuilder;
/**
* Factory class for getting instances of the various builder classes needed
* to build an ApfloatImpl
with the float
data element type.
*
* @version 1.7.0
* @author Mikko Tommila
*/
public class FloatBuilderFactory
implements BuilderFactory
{
/**
* Default constructor.
*/
public FloatBuilderFactory()
{
}
public ApfloatBuilder getApfloatBuilder()
{
return FloatBuilderFactory.apfloatBuilder;
}
public DataStorageBuilder getDataStorageBuilder()
{
return FloatBuilderFactory.dataStorageBuilder;
}
public AdditionBuilder getAdditionBuilder(Class elementType)
throws IllegalArgumentException
{
if (!Float.TYPE.equals(elementType))
{
throw new IllegalArgumentException("Unsupported element type: " + elementType);
}
@SuppressWarnings("unchecked")
AdditionBuilder additionBuilder = (AdditionBuilder) FloatBuilderFactory.additionBuilder;
return additionBuilder;
}
public ConvolutionBuilder getConvolutionBuilder()
{
return FloatBuilderFactory.convolutionBuilder;
}
public NTTBuilder getNTTBuilder()
{
return FloatBuilderFactory.nttBuilder;
}
public MatrixBuilder getMatrixBuilder()
{
return FloatBuilderFactory.matrixBuilder;
}
public CarryCRTBuilder getCarryCRTBuilder(Class elementArrayType)
throws IllegalArgumentException
{
if (!float[].class.equals(elementArrayType))
{
throw new IllegalArgumentException("Unsupported element array type: " + elementArrayType);
}
@SuppressWarnings("unchecked")
CarryCRTBuilder carryCRTBuilder = (CarryCRTBuilder) FloatBuilderFactory.carryCRTBuilder;
return carryCRTBuilder;
}
public Class> getElementType()
{
return Float.TYPE;
}
public Class> getElementArrayType()
{
return float[].class;
}
public int getElementSize()
{
return 4;
}
public void shutdown()
throws ApfloatRuntimeException
{
DiskDataStorage.cleanUp();
}
public void gc()
throws ApfloatRuntimeException
{
System.gc();
System.gc();
System.runFinalization();
DiskDataStorage.gc();
}
private static ApfloatBuilder apfloatBuilder = new FloatApfloatBuilder();
private static DataStorageBuilder dataStorageBuilder = new FloatDataStorageBuilder();
private static AdditionBuilder additionBuilder = new FloatAdditionBuilder();
private static ConvolutionBuilder convolutionBuilder = new FloatConvolutionBuilder();
private static NTTBuilder nttBuilder = new FloatNTTBuilder();
private static MatrixBuilder matrixBuilder = new FloatMatrixBuilder();
private static CarryCRTBuilder carryCRTBuilder = new FloatCarryCRTBuilder();
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy