Feature: Polynomials and rational functions #469
@ -416,35 +416,59 @@ public interface PolynomialSpaceOverRing<C, P: Polynomial<C>, A: Ring<C>> : Poly
|
|||||||
public override val constantOne: C get() = ring.one
|
public override val constantOne: C get() = ring.one
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||||
public interface MultivariatePolynomialSpace<C, V, P: Polynomial<C>>: PolynomialSpace<C, P> {
|
public interface MultivariatePolynomialSpace<C, V, P: Polynomial<C>>: PolynomialSpace<C, P> {
|
||||||
|
@JvmName("VariableIntPlus")
|
||||||
public operator fun V.plus(other: Int): P
|
public operator fun V.plus(other: Int): P
|
||||||
|
@JvmName("VariableIntMinus")
|
||||||
public operator fun V.minus(other: Int): P
|
public operator fun V.minus(other: Int): P
|
||||||
|
@JvmName("VariableIntMinusTimes")
|
||||||
public operator fun V.times(other: Int): P
|
public operator fun V.times(other: Int): P
|
||||||
|
|
||||||
|
@JvmName("IntVariablePlus")
|
||||||
public operator fun Int.plus(other: V): P
|
public operator fun Int.plus(other: V): P
|
||||||
|
@JvmName("IntVariableMinus")
|
||||||
public operator fun Int.minus(other: V): P
|
public operator fun Int.minus(other: V): P
|
||||||
|
@JvmName("IntVariableTimes")
|
||||||
public operator fun Int.times(other: V): P
|
public operator fun Int.times(other: V): P
|
||||||
|
|
||||||
|
@JvmName("ConstantVariablePlus")
|
||||||
public operator fun C.plus(other: V): P
|
public operator fun C.plus(other: V): P
|
||||||
|
@JvmName("ConstantVariableMinus")
|
||||||
public operator fun C.minus(other: V): P
|
public operator fun C.minus(other: V): P
|
||||||
|
@JvmName("ConstantVariableTimes")
|
||||||
public operator fun C.times(other: V): P
|
public operator fun C.times(other: V): P
|
||||||
|
|
||||||
|
@JvmName("VariableConstantPlus")
|
||||||
public operator fun V.plus(other: C): P
|
public operator fun V.plus(other: C): P
|
||||||
|
@JvmName("VariableConstantMinus")
|
||||||
public operator fun V.minus(other: C): P
|
public operator fun V.minus(other: C): P
|
||||||
|
@JvmName("VariableConstantTimes")
|
||||||
public operator fun V.times(other: C): P
|
public operator fun V.times(other: C): P
|
||||||
|
|
||||||
|
@JvmName("VariableUnaryPlus")
|
||||||
public operator fun V.unaryPlus(): P
|
public operator fun V.unaryPlus(): P
|
||||||
|
@JvmName("VariableUnaryMinus")
|
||||||
public operator fun V.unaryMinus(): P
|
public operator fun V.unaryMinus(): P
|
||||||
|
@JvmName("VariablePlus")
|
||||||
public operator fun V.plus(other: V): P
|
public operator fun V.plus(other: V): P
|
||||||
|
@JvmName("VariableMinus")
|
||||||
public operator fun V.minus(other: V): P
|
public operator fun V.minus(other: V): P
|
||||||
|
@JvmName("VariableTimes")
|
||||||
public operator fun V.times(other: V): P
|
public operator fun V.times(other: V): P
|
||||||
|
|
||||||
|
@JvmName("VariablePolynomialPlus")
|
||||||
public operator fun V.plus(other: P): P
|
public operator fun V.plus(other: P): P
|
||||||
|
@JvmName("VariablePolynomialMinus")
|
||||||
public operator fun V.minus(other: P): P
|
public operator fun V.minus(other: P): P
|
||||||
|
@JvmName("VariablePolynomialTimes")
|
||||||
public operator fun V.times(other: P): P
|
public operator fun V.times(other: P): P
|
||||||
|
|
||||||
|
@JvmName("PolynomialVariablePlus")
|
||||||
public operator fun P.plus(other: V): P
|
public operator fun P.plus(other: V): P
|
||||||
|
@JvmName("PolynomialVariableMinus")
|
||||||
public operator fun P.minus(other: V): P
|
public operator fun P.minus(other: V): P
|
||||||
|
@JvmName("PolynomialVariableTimes")
|
||||||
public operator fun P.times(other: V): P
|
public operator fun P.times(other: V): P
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1308,48 +1308,78 @@ public abstract class PolynomialSpaceOfFractions<
|
|||||||
public override val one: R get() = constructRationalFunction(polynomialOne)
|
public override val one: R get() = constructRationalFunction(polynomialOne)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||||
public interface MultivariateRationalFunctionalSpace<
|
public interface MultivariateRationalFunctionalSpace<
|
||||||
C,
|
C,
|
||||||
V,
|
V,
|
||||||
P: Polynomial<C>,
|
P: Polynomial<C>,
|
||||||
R: RationalFunction<C, P>
|
R: RationalFunction<C, P>
|
||||||
>: RationalFunctionalSpace<C, P, R> {
|
>: RationalFunctionalSpace<C, P, R> {
|
||||||
|
@JvmName("VariableIntPlus")
|
||||||
public operator fun V.plus(other: Int): P
|
public operator fun V.plus(other: Int): P
|
||||||
|
@JvmName("VariableIntMinus")
|
||||||
public operator fun V.minus(other: Int): P
|
public operator fun V.minus(other: Int): P
|
||||||
|
@JvmName("VariableIntMinusTimes")
|
||||||
public operator fun V.times(other: Int): P
|
public operator fun V.times(other: Int): P
|
||||||
|
|
||||||
|
@JvmName("IntVariablePlus")
|
||||||
public operator fun Int.plus(other: V): P
|
public operator fun Int.plus(other: V): P
|
||||||
|
@JvmName("IntVariableMinus")
|
||||||
public operator fun Int.minus(other: V): P
|
public operator fun Int.minus(other: V): P
|
||||||
|
@JvmName("IntVariableTimes")
|
||||||
public operator fun Int.times(other: V): P
|
public operator fun Int.times(other: V): P
|
||||||
|
|
||||||
|
@JvmName("ConstantVariablePlus")
|
||||||
public operator fun C.plus(other: V): P
|
public operator fun C.plus(other: V): P
|
||||||
|
@JvmName("ConstantVariableMinus")
|
||||||
public operator fun C.minus(other: V): P
|
public operator fun C.minus(other: V): P
|
||||||
|
@JvmName("ConstantVariableTimes")
|
||||||
public operator fun C.times(other: V): P
|
public operator fun C.times(other: V): P
|
||||||
|
|
||||||
|
@JvmName("VariableConstantPlus")
|
||||||
public operator fun V.plus(other: C): P
|
public operator fun V.plus(other: C): P
|
||||||
|
@JvmName("VariableConstantMinus")
|
||||||
public operator fun V.minus(other: C): P
|
public operator fun V.minus(other: C): P
|
||||||
|
@JvmName("VariableConstantTimes")
|
||||||
public operator fun V.times(other: C): P
|
public operator fun V.times(other: C): P
|
||||||
|
|
||||||
|
@JvmName("VariableUnaryPlus")
|
||||||
public operator fun V.unaryPlus(): P
|
public operator fun V.unaryPlus(): P
|
||||||
|
@JvmName("VariableUnaryMinus")
|
||||||
public operator fun V.unaryMinus(): P
|
public operator fun V.unaryMinus(): P
|
||||||
|
@JvmName("VariablePlus")
|
||||||
public operator fun V.plus(other: V): P
|
public operator fun V.plus(other: V): P
|
||||||
|
@JvmName("VariableMinus")
|
||||||
public operator fun V.minus(other: V): P
|
public operator fun V.minus(other: V): P
|
||||||
|
@JvmName("VariableTimes")
|
||||||
public operator fun V.times(other: V): P
|
public operator fun V.times(other: V): P
|
||||||
|
|
||||||
|
@JvmName("VariablePolynomialPlus")
|
||||||
public operator fun V.plus(other: P): P
|
public operator fun V.plus(other: P): P
|
||||||
|
@JvmName("VariablePolynomialMinus")
|
||||||
public operator fun V.minus(other: P): P
|
public operator fun V.minus(other: P): P
|
||||||
|
@JvmName("VariablePolynomialTimes")
|
||||||
public operator fun V.times(other: P): P
|
public operator fun V.times(other: P): P
|
||||||
|
|
||||||
|
@JvmName("PolynomialVariablePlus")
|
||||||
public operator fun P.plus(other: V): P
|
public operator fun P.plus(other: V): P
|
||||||
|
@JvmName("PolynomialVariableMinus")
|
||||||
public operator fun P.minus(other: V): P
|
public operator fun P.minus(other: V): P
|
||||||
|
@JvmName("PolynomialVariableTimes")
|
||||||
public operator fun P.times(other: V): P
|
public operator fun P.times(other: V): P
|
||||||
|
|
||||||
|
@JvmName("VariableRationalFunctionPlus")
|
||||||
public operator fun V.plus(other: R): R
|
public operator fun V.plus(other: R): R
|
||||||
|
@JvmName("VariableRationalFunctionMinus")
|
||||||
public operator fun V.minus(other: R): R
|
public operator fun V.minus(other: R): R
|
||||||
|
@JvmName("VariableRationalFunctionTimes")
|
||||||
public operator fun V.times(other: R): R
|
public operator fun V.times(other: R): R
|
||||||
|
|
||||||
|
@JvmName("RationalFunctionVariablePlus")
|
||||||
public operator fun R.plus(other: V): R
|
public operator fun R.plus(other: V): R
|
||||||
|
@JvmName("RationalFunctionVariableMinus")
|
||||||
public operator fun R.minus(other: V): R
|
public operator fun R.minus(other: V): R
|
||||||
|
@JvmName("RationalFunctionVariableTimes")
|
||||||
public operator fun R.times(other: V): R
|
public operator fun R.times(other: V): R
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1403,6 +1433,7 @@ public interface MultivariateRationalFunctionalSpaceOverPolynomialSpace<
|
|||||||
AP: PolynomialSpace<C, P>,
|
AP: PolynomialSpace<C, P>,
|
||||||
> : RationalFunctionalSpaceOverPolynomialSpace<C, P, R, AP>, MultivariateRationalFunctionalSpace<C, V, P, R>
|
> : RationalFunctionalSpaceOverPolynomialSpace<C, P, R, AP>, MultivariateRationalFunctionalSpace<C, V, P, R>
|
||||||
|
|
||||||
|
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||||
public interface MultivariateRationalFunctionalSpaceOverMultivariatePolynomialSpace<
|
public interface MultivariateRationalFunctionalSpaceOverMultivariatePolynomialSpace<
|
||||||
C,
|
C,
|
||||||
V,
|
V,
|
||||||
@ -1410,34 +1441,57 @@ public interface MultivariateRationalFunctionalSpaceOverMultivariatePolynomialSp
|
|||||||
R: RationalFunction<C, P>,
|
R: RationalFunction<C, P>,
|
||||||
AP: MultivariatePolynomialSpace<C, V, P>,
|
AP: MultivariatePolynomialSpace<C, V, P>,
|
||||||
> : MultivariateRationalFunctionalSpaceOverPolynomialSpace<C, V, P, R, AP> {
|
> : MultivariateRationalFunctionalSpaceOverPolynomialSpace<C, V, P, R, AP> {
|
||||||
|
@JvmName("VariableIntPlus")
|
||||||
public override operator fun V.plus(other: Int): P = polynomialRing { this@plus + other }
|
public override operator fun V.plus(other: Int): P = polynomialRing { this@plus + other }
|
||||||
|
@JvmName("VariableIntMinus")
|
||||||
public override operator fun V.minus(other: Int): P = polynomialRing { this@minus - other }
|
public override operator fun V.minus(other: Int): P = polynomialRing { this@minus - other }
|
||||||
|
@JvmName("VariableIntMinusTimes")
|
||||||
public override operator fun V.times(other: Int): P = polynomialRing { this@times * other }
|
public override operator fun V.times(other: Int): P = polynomialRing { this@times * other }
|
||||||
|
|
||||||
|
@JvmName("IntVariablePlus")
|
||||||
public override operator fun Int.plus(other: V): P = polynomialRing { this@plus + other }
|
public override operator fun Int.plus(other: V): P = polynomialRing { this@plus + other }
|
||||||
|
@JvmName("IntVariableMinus")
|
||||||
public override operator fun Int.minus(other: V): P = polynomialRing { this@minus - other }
|
public override operator fun Int.minus(other: V): P = polynomialRing { this@minus - other }
|
||||||
|
@JvmName("IntVariableTimes")
|
||||||
public override operator fun Int.times(other: V): P = polynomialRing { this@times * other }
|
public override operator fun Int.times(other: V): P = polynomialRing { this@times * other }
|
||||||
|
|
||||||
|
@JvmName("ConstantVariablePlus")
|
||||||
public override operator fun C.plus(other: V): P = polynomialRing { this@plus + other }
|
public override operator fun C.plus(other: V): P = polynomialRing { this@plus + other }
|
||||||
|
@JvmName("ConstantVariableMinus")
|
||||||
public override operator fun C.minus(other: V): P = polynomialRing { this@minus - other }
|
public override operator fun C.minus(other: V): P = polynomialRing { this@minus - other }
|
||||||
|
@JvmName("ConstantVariableTimes")
|
||||||
public override operator fun C.times(other: V): P = polynomialRing { this@times * other }
|
public override operator fun C.times(other: V): P = polynomialRing { this@times * other }
|
||||||
|
|
||||||
|
@JvmName("VariableConstantPlus")
|
||||||
public override operator fun V.plus(other: C): P = polynomialRing { this@plus + other }
|
public override operator fun V.plus(other: C): P = polynomialRing { this@plus + other }
|
||||||
|
@JvmName("VariableConstantMinus")
|
||||||
public override operator fun V.minus(other: C): P = polynomialRing { this@minus - other }
|
public override operator fun V.minus(other: C): P = polynomialRing { this@minus - other }
|
||||||
|
@JvmName("VariableConstantTimes")
|
||||||
public override operator fun V.times(other: C): P = polynomialRing { this@times * other }
|
public override operator fun V.times(other: C): P = polynomialRing { this@times * other }
|
||||||
|
|
||||||
|
@JvmName("VariableUnaryPlus")
|
||||||
public override operator fun V.unaryPlus(): P = polynomialRing { +this@unaryPlus }
|
public override operator fun V.unaryPlus(): P = polynomialRing { +this@unaryPlus }
|
||||||
|
@JvmName("VariableUnaryMinus")
|
||||||
public override operator fun V.unaryMinus(): P = polynomialRing { -this@unaryMinus }
|
public override operator fun V.unaryMinus(): P = polynomialRing { -this@unaryMinus }
|
||||||
|
@JvmName("VariablePlus")
|
||||||
public override operator fun V.plus(other: V): P = polynomialRing { this@plus + other }
|
public override operator fun V.plus(other: V): P = polynomialRing { this@plus + other }
|
||||||
|
@JvmName("VariableMinus")
|
||||||
public override operator fun V.minus(other: V): P = polynomialRing { this@minus - other }
|
public override operator fun V.minus(other: V): P = polynomialRing { this@minus - other }
|
||||||
|
@JvmName("VariableTimes")
|
||||||
public override operator fun V.times(other: V): P = polynomialRing { this@times * other }
|
public override operator fun V.times(other: V): P = polynomialRing { this@times * other }
|
||||||
|
|
||||||
|
@JvmName("VariablePolynomialPlus")
|
||||||
public override operator fun V.plus(other: P): P = polynomialRing { this@plus + other }
|
public override operator fun V.plus(other: P): P = polynomialRing { this@plus + other }
|
||||||
|
@JvmName("VariablePolynomialMinus")
|
||||||
public override operator fun V.minus(other: P): P = polynomialRing { this@minus - other }
|
public override operator fun V.minus(other: P): P = polynomialRing { this@minus - other }
|
||||||
|
@JvmName("VariablePolynomialTimes")
|
||||||
public override operator fun V.times(other: P): P = polynomialRing { this@times * other }
|
public override operator fun V.times(other: P): P = polynomialRing { this@times * other }
|
||||||
|
|
||||||
|
@JvmName("PolynomialVariablePlus")
|
||||||
public override operator fun P.plus(other: V): P = polynomialRing { this@plus + other }
|
public override operator fun P.plus(other: V): P = polynomialRing { this@plus + other }
|
||||||
|
@JvmName("PolynomialVariableMinus")
|
||||||
public override operator fun P.minus(other: V): P = polynomialRing { this@minus - other }
|
public override operator fun P.minus(other: V): P = polynomialRing { this@minus - other }
|
||||||
|
@JvmName("PolynomialVariableTimes")
|
||||||
public override operator fun P.times(other: V): P = polynomialRing { this@times * other }
|
public override operator fun P.times(other: V): P = polynomialRing { this@times * other }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1466,38 +1520,45 @@ public interface MultivariateRationalFunctionalSpaceOverMultivariatePolynomialSp
|
|||||||
public override val P.countOfVariables: Int get() = polynomialRing { countOfVariables }
|
public override val P.countOfVariables: Int get() = polynomialRing { countOfVariables }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||||
public abstract class MultivariatePolynomialSpaceOfFractions<
|
public abstract class MultivariatePolynomialSpaceOfFractions<
|
||||||
C,
|
C,
|
||||||
V,
|
V,
|
||||||
P: Polynomial<C>,
|
P: Polynomial<C>,
|
||||||
R: RationalFunction<C, P>,
|
R: RationalFunction<C, P>,
|
||||||
> : MultivariateRationalFunctionalSpace<C, V, P, R>, PolynomialSpaceOfFractions<C, P, R>() {
|
> : MultivariateRationalFunctionalSpace<C, V, P, R>, PolynomialSpaceOfFractions<C, P, R>() {
|
||||||
|
@JvmName("VariableRationalFunctionPlus")
|
||||||
public override operator fun V.plus(other: R): R =
|
public override operator fun V.plus(other: R): R =
|
||||||
constructRationalFunction(
|
constructRationalFunction(
|
||||||
this * other.denominator + other.numerator,
|
this * other.denominator + other.numerator,
|
||||||
other.denominator
|
other.denominator
|
||||||
)
|
)
|
||||||
|
@JvmName("VariableRationalFunctionMinus")
|
||||||
public override operator fun V.minus(other: R): R =
|
public override operator fun V.minus(other: R): R =
|
||||||
constructRationalFunction(
|
constructRationalFunction(
|
||||||
this * other.denominator - other.numerator,
|
this * other.denominator - other.numerator,
|
||||||
other.denominator
|
other.denominator
|
||||||
)
|
)
|
||||||
|
@JvmName("VariableRationalFunctionTimes")
|
||||||
public override operator fun V.times(other: R): R =
|
public override operator fun V.times(other: R): R =
|
||||||
constructRationalFunction(
|
constructRationalFunction(
|
||||||
this * other.numerator,
|
this * other.numerator,
|
||||||
other.denominator
|
other.denominator
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@JvmName("RationalFunctionVariablePlus")
|
||||||
public override operator fun R.plus(other: V): R =
|
public override operator fun R.plus(other: V): R =
|
||||||
constructRationalFunction(
|
constructRationalFunction(
|
||||||
numerator + denominator * other,
|
numerator + denominator * other,
|
||||||
denominator
|
denominator
|
||||||
)
|
)
|
||||||
|
@JvmName("RationalFunctionVariableMinus")
|
||||||
public override operator fun R.minus(other: V): R =
|
public override operator fun R.minus(other: V): R =
|
||||||
constructRationalFunction(
|
constructRationalFunction(
|
||||||
numerator - denominator * other,
|
numerator - denominator * other,
|
||||||
denominator
|
denominator
|
||||||
)
|
)
|
||||||
|
@JvmName("RationalFunctionVariableTimes")
|
||||||
public override operator fun R.times(other: V): R =
|
public override operator fun R.times(other: V): R =
|
||||||
constructRationalFunction(
|
constructRationalFunction(
|
||||||
numerator * other,
|
numerator * other,
|
||||||
|
Loading…
Reference in New Issue
Block a user