Package org.apfloat.internal
Class DoubleAdditionStrategy
 java.lang.Object

 org.apfloat.internal.DoubleBaseMath

 org.apfloat.internal.DoubleAdditionStrategy

 All Implemented Interfaces:
Serializable
,AdditionStrategy<Double>
public class DoubleAdditionStrategy extends DoubleBaseMath implements AdditionStrategy<Double>
Basic addition strategy for thedouble
element type. Since:
 1.7.0
 Version:
 1.7.0
 Author:
 Mikko Tommila
 See Also:
 Serialized Form


Constructor Summary
Constructors Constructor Description DoubleAdditionStrategy(int radix)
Creates an addition strategy using the specified radix.

Method Summary
Modifier and Type Method Description Double
add(DataStorage.Iterator src1, DataStorage.Iterator src2, Double carry, DataStorage.Iterator dst, long size)
Addition in some base.Double
divide(DataStorage.Iterator src1, Double src2, Double carry, DataStorage.Iterator dst, long size)
Division in some base.Double
multiplyAdd(DataStorage.Iterator src1, DataStorage.Iterator src2, Double src3, Double carry, DataStorage.Iterator dst, long size)
Multiplication and addition in some base.Double
subtract(DataStorage.Iterator src1, DataStorage.Iterator src2, Double carry, DataStorage.Iterator dst, long size)
Subtraction in some base.Double
zero()
Returns the zero element.
Methods inherited from class org.apfloat.internal.DoubleBaseMath
baseAdd, baseDivide, baseMultiplyAdd, baseSubtract




Method Detail

add
public Double add(DataStorage.Iterator src1, DataStorage.Iterator src2, Double carry, DataStorage.Iterator dst, long size) throws ApfloatRuntimeException
Description copied from interface:AdditionStrategy
Addition in some base. Adds the data words ofsrc1
andsrc2
and stores the result todst
.src2
may benull
, in which case it is ignored (only the carry is propagated).Essentially calculates
dst[i] = src1[i] + src2[i]
. Specified by:
add
in interfaceAdditionStrategy<Double>
 Parameters:
src1
 First source data sequence. Can benull
, in which case it's ignored.src2
 Second source data sequence. Can benull
, in which case it's ignored.carry
 Input carry bit. This is added to the first (rightmost) word in the accessed sequence.dst
 Destination data sequence.size
 Number of elements to process. Returns:
 Overflow carry bit. Propagated carry bit from the addition of the last (leftmost) word in the accessed sequence.
 Throws:
ApfloatRuntimeException

subtract
public Double subtract(DataStorage.Iterator src1, DataStorage.Iterator src2, Double carry, DataStorage.Iterator dst, long size) throws ApfloatRuntimeException
Description copied from interface:AdditionStrategy
Subtraction in some base. Subtracts the data words ofsrc1
andsrc2
and stores the result todst
.src1
andsrc2
may benull
, in which case they are ignored (the values are assumed to be zero and only the carry is propagated).Essentially calculates
dst[i] = src1[i]  src2[i]
. Specified by:
subtract
in interfaceAdditionStrategy<Double>
 Parameters:
src1
 First source data sequence. Can benull
, in which case the input values are assumed to be zero.src2
 Second source data sequence. Can benull
, in which case it's ignored, or can be the same asdst
.carry
 Input carry bit. This is subtracted from the first (rightmost) word in the accessed sequence.dst
 Destination data sequence.size
 Number of elements to process. Returns:
 Overflow carry bit. Propagated carry bit from the subtraction of the last (leftmost) word in the accessed sequence. The value is
1
if the carry is set, and0
otherwise.  Throws:
ApfloatRuntimeException

multiplyAdd
public Double multiplyAdd(DataStorage.Iterator src1, DataStorage.Iterator src2, Double src3, Double carry, DataStorage.Iterator dst, long size) throws ApfloatRuntimeException
Description copied from interface:AdditionStrategy
Multiplication and addition in some base. Multiplies the data words ofsrc1
bysrc3
and adds the result to the words insrc2
, and stores the result todst
.src2
may benull
, in which case it is ignored (the values are assumed to be zero).Assumes that the result from the addition doesn't overflow the upper result word (to larger than the base). This is the case e.g. when using this method to perform an arbitrary precision multiplication.
Essentially calculates
dst[i] = src1[i] * src3 + src2[i]
. Specified by:
multiplyAdd
in interfaceAdditionStrategy<Double>
 Parameters:
src1
 First source data sequence.src2
 Second source data sequence. Can benull
, in which case it's ignored, or can be the same asdst
.src3
 Multiplicand. All elements ofsrc1
are multiplied by this value.carry
 Input carry word. This is added to the first (rightmost) word in the accessed sequence.dst
 Destination data sequence.size
 Number of elements to process. Returns:
 Overflow carry word. Propagated carry word from the multiplication and addition of the last (leftmost) word in the accessed sequence.
 Throws:
ApfloatRuntimeException

divide
public Double divide(DataStorage.Iterator src1, Double src2, Double carry, DataStorage.Iterator dst, long size) throws ApfloatRuntimeException
Description copied from interface:AdditionStrategy
Division in some base. Divides the data words ofsrc1
bysrc2
and stores the result todst
.src1
may benull
, in which case it is ignored (the values are assumed to be zero and only the carry division is propagated).Essentially calculates
dst[i] = src1[i] / src2
. Specified by:
divide
in interfaceAdditionStrategy<Double>
 Parameters:
src1
 First source data sequence. Can benull
, in which case the input values are assumed to be zero.src2
 Divisor. All elements ofsrc1
are divided by this value.carry
 Input carry word. Used as the upper word for the division of the first input element. This should be the remainder word returned from the previous block processed.dst
 Destination data sequence.size
 Number of elements to process. Returns:
 Remainder word of the propagated division of the last (rightmost) word in the accessed sequence.
 Throws:
ApfloatRuntimeException

zero
public Double zero()
Description copied from interface:AdditionStrategy
Returns the zero element. Specified by:
zero
in interfaceAdditionStrategy<Double>
 Returns:
 Zero of the correct element type.

