Feature: Polynomials and rational functions #469
@ -14,52 +14,84 @@ import space.kscience.kmath.operations.Ring
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a [ListPolynomial] instance with given [coefficients]. The collection of coefficients will be reversed if
|
* Constructs a [ListPolynomial] instance with provided [coefficients]. The collection of coefficients will be reversed
|
||||||
* [reverse] parameter is true.
|
* if [reverse] parameter is true.
|
||||||
*/
|
*/
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
public fun <C> ListPolynomial(coefficients: List<C>, reverse: Boolean = false): ListPolynomial<C> =
|
public fun <C> ListPolynomial(coefficients: List<C>, reverse: Boolean = false): ListPolynomial<C> =
|
||||||
ListPolynomial(with(coefficients) { if (reverse) reversed() else this })
|
ListPolynomial(with(coefficients) { if (reverse) reversed() else this })
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a [ListPolynomial] instance with given [coefficients]. The collection of coefficients will be reversed if
|
* Constructs a [ListPolynomial] instance with provided [coefficients]. The collection of coefficients will be reversed
|
||||||
* [reverse] parameter is true.
|
* if [reverse] parameter is true.
|
||||||
*/
|
*/
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
public fun <C> ListPolynomial(vararg coefficients: C, reverse: Boolean = false): ListPolynomial<C> =
|
public fun <C> ListPolynomial(vararg coefficients: C, reverse: Boolean = false): ListPolynomial<C> =
|
||||||
ListPolynomial(with(coefficients) { if (reverse) reversed() else toList() })
|
ListPolynomial(with(coefficients) { if (reverse) reversed() else toList() })
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents [this] constant as a [ListPolynomial].
|
||||||
|
*/
|
||||||
public fun <C> C.asListPolynomial() : ListPolynomial<C> = ListPolynomial(listOf(this))
|
public fun <C> C.asListPolynomial() : ListPolynomial<C> = ListPolynomial(listOf(this))
|
||||||
|
|
||||||
|
|
||||||
// Waiting for context receivers :( FIXME: Replace with context receivers when they will be available
|
// Waiting for context receivers :( FIXME: Replace with context receivers when they will be available
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs [ListRationalFunction] instance with numerator and denominator constructed with provided
|
||||||
|
* [numeratorCoefficients] and [denominatorCoefficients]. The both collections of coefficients will be reversed if
|
||||||
|
* [reverse] parameter is true.
|
||||||
|
*/
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
public fun <C> ListRationalFunction(numeratorCoefficients: List<C>, denominatorCoefficients: List<C>, reverse: Boolean = false): ListRationalFunction<C> =
|
public fun <C> ListRationalFunction(numeratorCoefficients: List<C>, denominatorCoefficients: List<C>, reverse: Boolean = false): ListRationalFunction<C> =
|
||||||
ListRationalFunction<C>(
|
ListRationalFunction<C>(
|
||||||
ListPolynomial( with(numeratorCoefficients) { if (reverse) reversed() else this } ),
|
ListPolynomial( with(numeratorCoefficients) { if (reverse) reversed() else this } ),
|
||||||
ListPolynomial( with(denominatorCoefficients) { if (reverse) reversed() else this } )
|
ListPolynomial( with(denominatorCoefficients) { if (reverse) reversed() else this } )
|
||||||
)
|
)
|
||||||
@Suppress("FunctionName")
|
/**
|
||||||
public fun <C, A: Ring<C>> ListRationalFunctionSpace<C, A>.ListRationalFunction(numerator: ListPolynomial<C>): ListRationalFunction<C> =
|
* Constructs [ListRationalFunction] instance with provided [numerator] and unit denominator.
|
||||||
ListRationalFunction<C>(numerator, polynomialOne)
|
*/
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
public fun <C, A: Ring<C>> A.ListRationalFunction(numerator: ListPolynomial<C>): ListRationalFunction<C> =
|
public fun <C, A: Ring<C>> A.ListRationalFunction(numerator: ListPolynomial<C>): ListRationalFunction<C> =
|
||||||
ListRationalFunction<C>(numerator, ListPolynomial(listOf(one)))
|
ListRationalFunction<C>(numerator, ListPolynomial(listOf(one)))
|
||||||
|
/**
|
||||||
|
* Constructs [ListRationalFunction] instance with provided [numerator] and unit denominator.
|
||||||
|
*/
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
public fun <C, A: Ring<C>> ListRationalFunctionSpace<C, A>.ListRationalFunction(numeratorCoefficients: List<C>, reverse: Boolean = false): ListRationalFunction<C> =
|
public fun <C, A: Ring<C>> ListRationalFunctionSpace<C, A>.ListRationalFunction(numerator: ListPolynomial<C>): ListRationalFunction<C> =
|
||||||
ListRationalFunction<C>(
|
ListRationalFunction<C>(numerator, polynomialOne)
|
||||||
ListPolynomial( with(numeratorCoefficients) { if (reverse) reversed() else this } ),
|
/**
|
||||||
polynomialOne
|
* Constructs [ListRationalFunction] instance with numerator constructed with provided [numeratorCoefficients] and unit
|
||||||
)
|
* denominator. The collection of numerator coefficients will be reversed if [reverse] parameter is true.
|
||||||
|
*/
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
public fun <C, A: Ring<C>> A.ListRationalFunction(numeratorCoefficients: List<C>, reverse: Boolean = false): ListRationalFunction<C> =
|
public fun <C, A: Ring<C>> A.ListRationalFunction(numeratorCoefficients: List<C>, reverse: Boolean = false): ListRationalFunction<C> =
|
||||||
ListRationalFunction<C>(
|
ListRationalFunction<C>(
|
||||||
ListPolynomial( with(numeratorCoefficients) { if (reverse) reversed() else this } ),
|
ListPolynomial( with(numeratorCoefficients) { if (reverse) reversed() else this } ),
|
||||||
ListPolynomial(listOf(one))
|
ListPolynomial(listOf(one))
|
||||||
)
|
)
|
||||||
|
/**
|
||||||
|
* Constructs [ListRationalFunction] instance with numerator constructed with provided [numeratorCoefficients] and unit
|
||||||
|
* denominator. The collection of numerator coefficients will be reversed if [reverse] parameter is true.
|
||||||
|
*/
|
||||||
|
@Suppress("FunctionName")
|
||||||
|
public fun <C, A: Ring<C>> ListRationalFunctionSpace<C, A>.ListRationalFunction(numeratorCoefficients: List<C>, reverse: Boolean = false): ListRationalFunction<C> =
|
||||||
|
ListRationalFunction<C>(
|
||||||
|
ListPolynomial( with(numeratorCoefficients) { if (reverse) reversed() else this } ),
|
||||||
|
polynomialOne
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents [this] constant as a rational function.
|
||||||
|
*/ // FIXME: When context receivers will be ready, delete this function and uncomment the following two
|
||||||
|
public fun <C, A: Ring<C>> C.asListRationalFunction(ring: A) : ListRationalFunction<C> = ring.ListRationalFunction(asListPolynomial())
|
||||||
|
///**
|
||||||
|
// * Represents [this] constant as a rational function.
|
||||||
|
// */
|
||||||
//context(A)
|
//context(A)
|
||||||
//public fun <C, A: Ring<C>> C.asListRationalFunction() : ListRationalFunction<C> = ListRationalFunction(asListPolynomial())
|
//public fun <C, A: Ring<C>> C.asListRationalFunction() : ListRationalFunction<C> = ListRationalFunction(asListPolynomial())
|
||||||
|
///**
|
||||||
|
// * Represents [this] constant as a rational function.
|
||||||
|
// */
|
||||||
//context(ListRationalFunctionSpace<C, A>)
|
//context(ListRationalFunctionSpace<C, A>)
|
||||||
//public fun <C, A: Ring<C>> C.asListRationalFunction() : ListRationalFunction<C> = ListRationalFunction(asListPolynomial())
|
//public fun <C, A: Ring<C>> C.asListRationalFunction() : ListRationalFunction<C> = ListRationalFunction(asListPolynomial())
|
Loading…
Reference in New Issue
Block a user