Safe Haskell | None |
---|---|
Language | Haskell2010 |
- (%) :: (IsPolynomial poly, Division (Coefficient poly)) => Coefficient poly -> Coefficient poly -> poly
- newtype Scalar r = Scalar {
- runScalar :: r
- (.*.) :: Module (Scalar r) m => r -> m -> m
- od :: QuasiQuoter
- type Ordinal n = Ordinal Nat n
- enumOrdinal :: Sing Nat n -> [Ordinal n]
- logBase2 :: Int -> Int
- ceilingLogBase2 :: Int -> Int
- module AlgebraicPrelude
- module Algebra.Ring.Polynomial.Monomial
- module Algebra.Ring.Polynomial.Class
- type Polynomial r = OrderedPolynomial r Grevlex
- transformMonomial :: (IsMonomialOrder m o, CoeffRing k, KnownNat m) => (Monomial n -> Monomial m) -> OrderedPolynomial k o n -> OrderedPolynomial k o m
- castPolynomial :: (CoeffRing r, KnownNat n, KnownNat m, IsMonomialOrder n o, IsMonomialOrder m o') => OrderedPolynomial r o n -> OrderedPolynomial r o' m
- changeOrder :: (CoeffRing k, Eq (Monomial n), IsMonomialOrder n o, IsMonomialOrder n o', KnownNat n) => o' -> OrderedPolynomial k o n -> OrderedPolynomial k o' n
- changeOrderProxy :: (CoeffRing k, Eq (Monomial n), IsMonomialOrder n o, IsMonomialOrder n o', KnownNat n) => Proxy o' -> OrderedPolynomial k o n -> OrderedPolynomial k o' n
- scastPolynomial :: (IsMonomialOrder n o, IsMonomialOrder m o', KnownNat m, CoeffRing r, KnownNat n) => SNat m -> OrderedPolynomial r o n -> OrderedPolynomial r o' m
- newtype OrderedPolynomial r order n = Polynomial {
- _terms :: Map (OrderedMonomial order n) r
- allVars :: forall k ord n. (IsMonomialOrder n ord, CoeffRing k, KnownNat n) => Sized n (OrderedPolynomial k ord n)
- substVar :: (CoeffRing r, KnownNat n, IsMonomialOrder n ord, (1 :<= n) ~ True) => Ordinal n -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n
- homogenize :: forall k ord n. (CoeffRing k, KnownNat n, IsMonomialOrder (n + 1) ord, IsMonomialOrder n ord) => OrderedPolynomial k ord n -> OrderedPolynomial k ord (n + 1)
- unhomogenize :: forall k ord n. (CoeffRing k, KnownNat n, IsMonomialOrder n ord, IsMonomialOrder (n + 1) ord) => OrderedPolynomial k ord (Succ n) -> OrderedPolynomial k ord n
- normalize :: DecidableZero r => OrderedPolynomial r order n -> OrderedPolynomial r order n
- varX :: forall r n order. (CoeffRing r, KnownNat n, IsMonomialOrder n order, (0 :< n) ~ True) => OrderedPolynomial r order n
- getTerms :: OrderedPolynomial k order n -> [(k, OrderedMonomial order n)]
- shiftR :: forall k r n ord. (CoeffRing r, KnownNat n, IsMonomialOrder n ord, IsMonomialOrder (k + n) ord) => SNat k -> OrderedPolynomial r ord n -> OrderedPolynomial r ord (k :+ n)
- orderedBy :: OrderedPolynomial k o n -> o -> OrderedPolynomial k o n
- mapCoeff :: (KnownNat n, CoeffRing b, IsMonomialOrder n ord) => (a -> b) -> OrderedPolynomial a ord n -> OrderedPolynomial b ord n
- reversal :: (CoeffRing k, IsMonomialOrder 1 o) => Int -> OrderedPolynomial k o 1 -> OrderedPolynomial k o 1
- padeApprox :: (Field r, DecidableUnits r, CoeffRing r, ZeroProductSemiring r, IsMonomialOrder 1 order) => Natural -> Natural -> OrderedPolynomial r order 1 -> (OrderedPolynomial r order 1, OrderedPolynomial r order 1)
- eval :: (CoeffRing r, IsMonomialOrder n order, KnownNat n) => Sized n r -> OrderedPolynomial r order n -> r
- evalUnivariate :: (CoeffRing b, IsMonomialOrder 1 order) => b -> OrderedPolynomial b order 1 -> b
- substUnivariate :: (Module (Scalar r) b, Unital b, CoeffRing r, IsMonomialOrder 1 order) => b -> OrderedPolynomial r order 1 -> b
- minpolRecurrent :: forall k. (Eq k, ZeroProductSemiring k, DecidableUnits k, DecidableZero k, Field k) => Natural -> [k] -> Polynomial k 1
- class IsOrder n ordering where
- newtype PadPolyL n ord poly = PadPolyL {
- runPadPolyL :: OrderedPolynomial poly (Graded ord) n
- padLeftPoly :: (IsMonomialOrder n ord, IsPolynomial poly) => Sing n -> ord -> poly -> PadPolyL n ord poly
- module Algebra.Ring.Ideal
- module Algebra.Normed
- module Algebra.Internal
Documentation
(%) :: (IsPolynomial poly, Division (Coefficient poly)) => Coefficient poly -> Coefficient poly -> poly infixl 7 Source #
provides almost the same type-instances as Scalar
rr
,
but it can also behave as a
over Module
r
itself.
od :: QuasiQuoter #
Quasiquoter for ordinal indexed by GHC's built-n
.Nat
Since 0.7.0.0
ceilingLogBase2 :: Int -> Int Source #
module AlgebraicPrelude
type Polynomial r = OrderedPolynomial r Grevlex Source #
transformMonomial :: (IsMonomialOrder m o, CoeffRing k, KnownNat m) => (Monomial n -> Monomial m) -> OrderedPolynomial k o n -> OrderedPolynomial k o m Source #
castPolynomial :: (CoeffRing r, KnownNat n, KnownNat m, IsMonomialOrder n o, IsMonomialOrder m o') => OrderedPolynomial r o n -> OrderedPolynomial r o' m Source #
changeOrder :: (CoeffRing k, Eq (Monomial n), IsMonomialOrder n o, IsMonomialOrder n o', KnownNat n) => o' -> OrderedPolynomial k o n -> OrderedPolynomial k o' n Source #
changeOrderProxy :: (CoeffRing k, Eq (Monomial n), IsMonomialOrder n o, IsMonomialOrder n o', KnownNat n) => Proxy o' -> OrderedPolynomial k o n -> OrderedPolynomial k o' n Source #
scastPolynomial :: (IsMonomialOrder n o, IsMonomialOrder m o', KnownNat m, CoeffRing r, KnownNat n) => SNat m -> OrderedPolynomial r o n -> OrderedPolynomial r o' m Source #
newtype OrderedPolynomial r order n Source #
n-ary polynomial ring over some noetherian ring R.
Polynomial | |
|
allVars :: forall k ord n. (IsMonomialOrder n ord, CoeffRing k, KnownNat n) => Sized n (OrderedPolynomial k ord n) Source #
substVar :: (CoeffRing r, KnownNat n, IsMonomialOrder n ord, (1 :<= n) ~ True) => Ordinal n -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n Source #
substVar n f
substitutes n
-th variable with polynomial f
,
without changing arity.
homogenize :: forall k ord n. (CoeffRing k, KnownNat n, IsMonomialOrder (n + 1) ord, IsMonomialOrder n ord) => OrderedPolynomial k ord n -> OrderedPolynomial k ord (n + 1) Source #
Calculate the homogenized polynomial of given one, with additional variable is the last variable.
unhomogenize :: forall k ord n. (CoeffRing k, KnownNat n, IsMonomialOrder n ord, IsMonomialOrder (n + 1) ord) => OrderedPolynomial k ord (Succ n) -> OrderedPolynomial k ord n Source #
normalize :: DecidableZero r => OrderedPolynomial r order n -> OrderedPolynomial r order n Source #
varX :: forall r n order. (CoeffRing r, KnownNat n, IsMonomialOrder n order, (0 :< n) ~ True) => OrderedPolynomial r order n Source #
getTerms :: OrderedPolynomial k order n -> [(k, OrderedMonomial order n)] Source #
shiftR :: forall k r n ord. (CoeffRing r, KnownNat n, IsMonomialOrder n ord, IsMonomialOrder (k + n) ord) => SNat k -> OrderedPolynomial r ord n -> OrderedPolynomial r ord (k :+ n) Source #
orderedBy :: OrderedPolynomial k o n -> o -> OrderedPolynomial k o n Source #
mapCoeff :: (KnownNat n, CoeffRing b, IsMonomialOrder n ord) => (a -> b) -> OrderedPolynomial a ord n -> OrderedPolynomial b ord n Source #
reversal :: (CoeffRing k, IsMonomialOrder 1 o) => Int -> OrderedPolynomial k o 1 -> OrderedPolynomial k o 1 Source #
padeApprox :: (Field r, DecidableUnits r, CoeffRing r, ZeroProductSemiring r, IsMonomialOrder 1 order) => Natural -> Natural -> OrderedPolynomial r order 1 -> (OrderedPolynomial r order 1, OrderedPolynomial r order 1) Source #
eval :: (CoeffRing r, IsMonomialOrder n order, KnownNat n) => Sized n r -> OrderedPolynomial r order n -> r Source #
Evaluate polynomial at some point.
evalUnivariate :: (CoeffRing b, IsMonomialOrder 1 order) => b -> OrderedPolynomial b order 1 -> b Source #
substUnivariate :: (Module (Scalar r) b, Unital b, CoeffRing r, IsMonomialOrder 1 order) => b -> OrderedPolynomial r order 1 -> b Source #
Substitute univariate polynomial using Horner's rule
minpolRecurrent :: forall k. (Eq k, ZeroProductSemiring k, DecidableUnits k, DecidableZero k, Field k) => Natural -> [k] -> Polynomial k 1 Source #
class IsOrder n ordering where Source #
Class to lookup ordering from its (type-level) name.
cmpMonomial :: Proxy ordering -> MonomialOrder n Source #
IsOrder n Grlex Source # | |
IsOrder n Lex Source # | |
IsOrder n Revlex Source # | |
IsOrder n Grevlex Source # | |
IsOrder n ord => IsOrder n (Graded ord) Source # | |
(KnownNat n, IsOrder n ord, SingI [Nat] ws) => IsOrder n (WeightOrder ws ord) Source # | |
(IsOrder n ord, IsOrder m ord', KnownNat m, KnownNat n, (~) Nat k ((+) n m)) => IsOrder k (ProductOrder n m ord ord') Source # | |
newtype PadPolyL n ord poly Source #
PadPolyL | |
|
padLeftPoly :: (IsMonomialOrder n ord, IsPolynomial poly) => Sing n -> ord -> poly -> PadPolyL n ord poly Source #
module Algebra.Ring.Ideal
module Algebra.Normed
module Algebra.Internal