# mpolynomials: Simple multivariate polynomials.

[ algebra, gpl, library, math ] [ Propose Tags ]

Manipulation of multivariate polynomials on a ring. ## Modules

[Index] [Quick Jump]

#### Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.1.0 CHANGELOG.md base (>=4.7 && <5), containers (>=0.6.4.1), extra (>=1.7.10), numeric-prelude (>=0.4.4), text (>=1.2.5.0) [details] GPL-3.0-only 2022 Stéphane Laurent Stéphane Laurent laurent_step@outlook.fr Math, Algebra https://github.com/stla/mpolynomials#readme head: git clone https://github.com/stla/mpolynomials by stla at 2022-12-11T18:46:32Z NixOS:0.1.1.0 1 direct, 0 indirect [details] 102 total (1 in the last 30 days) (no votes yet) [estimated by Bayesian average] λ λ λ Docs available Last success reported on 2022-12-11

[back to package description]

# mpolynomials

import Math.Algebra.MultiPol
x = lone 1 :: Polynomial Double
y = lone 2 :: Polynomial Double
z = lone 3 :: Polynomial Double
poly = (2 *^ (x^**^3 ^*^ y ^*^ z) ^+^ x^**^2) ^*^ (4 *^ (x ^*^ y ^*^ z))
poly
-- M (Monomial {coefficient = 4.0, powers = fromList [3,1,1]})
-- :+:
-- M (Monomial {coefficient = 8.0, powers = fromList [4,2,2]})
prettyPol show "x" poly
-- "(4.0) * x^(3, 1, 1) + (8.0) * x^(4, 2, 2)"


More generally, one can use the type Polynomial a as long as the type a has the instances Eq and Algebra.Ring (defined in the numeric-prelude library). For example a = Rational:

import Math.Algebra.MultiPol
import Data.Ratio
x = lone 1 :: Polynomial Rational
y = lone 2 :: Polynomial Rational
z = lone 3 :: Polynomial Rational
((2%3) *^ (x^**^3 ^*^ y ^*^ z) ^+^ x^**^2) ^*^ ((7%4) *^ (x ^*^ y ^*^ z))
-- M (Monomial {coefficient = 7 % 4, powers = fromList [3,1,1]})
-- :+:
-- M (Monomial {coefficient = 7 % 6, powers = fromList [4,2,2]})


Or a = Polynomial Double:

import Math.Algebra.MultiPol
p = lone 1 :: Polynomial Double
x = lone 1 :: Polynomial (Polynomial Double)
y = lone 2 :: Polynomial (Polynomial Double)
poly = (p *^ x) ^+^ (p *^ y)
poly ^**^ 2
-- (M (Monomial {
--   coefficient = M (Monomial {coefficient = 1.0, powers = fromList [0,2]}),
--   powers = fromList [0,2]})
-- :+:
--  M (Monomial {
--    coefficient = M (Monomial {coefficient = 2.0, powers = fromList [1,1]}),
--    powers = fromList [1,1]}))
-- :+:
--  M (Monomial {
--    coefficient = M (Monomial {coefficient = 1.0, powers = fromList [2,0]}),
--    powers = fromList [2,0]})
prettyPol (prettyPol show "a") "X" (poly ^**^ 2)
-- "((1.0) * a^(2)) * X^(0, 2) + ((2.0) * a^(2)) * X^(1, 1) + ((1.0) * a^(2)) * X^(2, 0)"


Evaluation:

import Math.Algebra.MultiPol
x = lone 1 :: Polynomial Double
y = lone 2 :: Polynomial Double
z = lone 3 :: Polynomial Double
poly = 2 *^ (x ^*^ y ^*^ z)
-- evaluate poly at x=2, y=1, z=2
evalPoly poly [2, 1, 2]
-- 8.0
{"ft_lang_label":"__label__en","ft_lang_prob":0.5018904,"math_prob":0.99695605,"size":1207,"snap":"2023-40-2023-50","text_gpt3_token_len":412,"char_repetition_ratio":0.098088115,"word_repetition_ratio":0.0,"special_character_ratio":0.31980115,"punctuation_ratio":0.218107,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.99980074,"pos_list":[0,1,2,3,4],"im_url_duplicate_count":[null,null,null,null,null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2023-12-09T18:22:08Z\",\"WARC-Record-ID\":\"<urn:uuid:4a2d0bb8-809c-4a2b-9efd-91e66145058b>\",\"Content-Length\":\"19291\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:58994f45-6add-47ab-a9e0-9b8191c4e851>\",\"WARC-Concurrent-To\":\"<urn:uuid:44f87513-8a28-43cd-b4bc-e636476d120f>\",\"WARC-IP-Address\":\"147.75.55.189\",\"WARC-Target-URI\":\"http://hackage-origin.haskell.org/package/mpolynomials\",\"WARC-Payload-Digest\":\"sha1:UCIPDEERCRZ5GD3ZQFHS6GFPCS57EY6A\",\"WARC-Block-Digest\":\"sha1:5Z77GKOPXNQWNE4BNWYLF6L6AIUPFT75\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2023/CC-MAIN-2023-50/CC-MAIN-2023-50_segments_1700679100942.92_warc_CC-MAIN-20231209170619-20231209200619-00708.warc.gz\"}"}