# polynomial ring

Published articles for polynomial ring.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## CKKS -- Polynomials, the Canonical Embedding, and Encoding

DevFeed: [CKKS -- Polynomials, the Canonical Embedding, and Encoding](<https://devfeed.tech/articles/ckks-polynomials-the-canonical-embedding-and-encoding-40495.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2026/04/29/ckks-polynomials-the-canonical-embedding-and-encoding/>)

Published: 2026-04-29T12:25:44Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [homomorphic encryption](<https://devfeed.tech/topics/homomorphic-encryption.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [ckks](<https://devfeed.tech/tags/ckks.md>), [ckks-tutorial](<https://devfeed.tech/tags/ckks-tutorial.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [encoding](<https://devfeed.tech/tags/encoding.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [homomorphic-encryption](<https://devfeed.tech/tags/homomorphic-encryption.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [neural-network](<https://devfeed.tech/tags/neural-network.md>), [polynomial-ring](<https://devfeed.tech/tags/polynomial-ring.md>), [polynomials](<https://devfeed.tech/tags/polynomials.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [technical](<https://devfeed.tech/tags/technical.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial introduces the CKKS homomorphic encryption scheme and develops mathematical background on the polynomial ring used in its basic formulation and the canonical embedding used to encode cleartext messages as plaintexts. It also outlines CKKS's history, including its support for approximate arithmetic and later bootstrapping improvements.

### Source excerpt

Table of Contents In this tutorial series, I will introduce the CKKS homomorphic encryption scheme from the ground up, in rather intricate detail. Each article in this series corresponds to a pull request on a GitHub repository. The code for this article is in this pull request. Follow along by cloning the repository and checking out the code at the relevant commit. This first article will cover some of the mathematical background necessary in the formulation of the CKKS encryption scheme, specifically the polynomial ring used in the most basic version of CKKS, and the canonical embedding used to encode cleartext messages as plaintexts.

## MLIR -- Dialect Conversion

DevFeed: [MLIR -- Dialect Conversion](<https://devfeed.tech/articles/mlir-dialect-conversion-40479.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2023/10/23/mlir-dialect-conversion/>)

Published: 2023-10-23T06:00:00Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Tutorial](<https://devfeed.tech/topics/tutorial.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [heir](<https://devfeed.tech/tags/heir.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [mlir](<https://devfeed.tech/tags/mlir.md>), [polynomial-ring](<https://devfeed.tech/tags/polynomial-ring.md>), [polynomials](<https://devfeed.tech/tags/polynomials.md>), [primer](<https://devfeed.tech/tags/primer.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This tutorial introduces MLIR dialect conversion and incremental lowering, explaining how a custom dialect can be lowered to standard MLIR dialects. It focuses on the type obstacle: changing value types can temporarily invalidate downstream users, requiring special handling during conversion.

### Source excerpt

Table of Contents In previous articles we defined a dialect, and wrote various passes to optimize and canonicalize a program using that dialect. However, one of the main tenets of MLIR is "incremental lowering," the idea that there are lots of levels of IR granularity, and you incrementally lower different parts of the IR, only discarding information when it's no longer useful for optimizations. In this article we'll see the first step of that: lowering the poly dialect to a combination of standard MLIR dialects, using the so-called dialect conversion infrastructure to accomplish it.

## Negacyclic Polynomial Multiplication

DevFeed: [Negacyclic Polynomial Multiplication](<https://devfeed.tech/articles/negacyclic-polynomial-multiplication-40460.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2022/12/09/negacyclic-polynomial-multiplication/>)

Published: 2022-12-09T13:35:45Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [polynomials](<https://devfeed.tech/topics/polynomials.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [homomorphic encryption](<https://devfeed.tech/topics/homomorphic-encryption.md>), [Encryption](<https://devfeed.tech/topics/encryption.md>), [Python](<https://devfeed.tech/topics/python.md>), [GitHub](<https://devfeed.tech/topics/github.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [complex-twist](<https://devfeed.tech/tags/complex-twist.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [fourier-transform](<https://devfeed.tech/tags/fourier-transform.md>), [github](<https://devfeed.tech/tags/github.md>), [homomorphic-encryption](<https://devfeed.tech/tags/homomorphic-encryption.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [negacyclic](<https://devfeed.tech/tags/negacyclic.md>), [polynomial-ring](<https://devfeed.tech/tags/polynomial-ring.md>), [polynomials](<https://devfeed.tech/tags/polynomials.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

This tutorial explains three techniques for computing negacyclic polynomial products, including the simpler cyclic product as a precursor. It places these operations in the context of lattice cryptography and fully homomorphic encryption and provides Python code on GitHub.

### Source excerpt

In this article I'll cover three techniques to compute special types of polynomial products that show up in lattice cryptography and fully homomorphic encryption. Namely, the negacyclic polynomial product, which is the product of two polynomials in the quotient ring $\mathbb{Z}[x] / (x^N + 1)$. As a precursor to the negacyclic product, we'll cover the simpler cyclic product. All of the Python code written for this article is on GitHub.

## Programming with Finite Fields

DevFeed: [Programming with Finite Fields](<https://devfeed.tech/articles/programming-with-finite-fields-40350.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/03/13/programming-with-finite-fields/>)

Published: 2014-03-13T10:00:11Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [math](<https://devfeed.tech/topics/math.md>), [Python](<https://devfeed.tech/topics/python.md>), [Code](<https://devfeed.tech/topics/code.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [decorators](<https://devfeed.tech/tags/decorators.md>), [division-algorithm](<https://devfeed.tech/tags/division-algorithm.md>), [elliptic-curves](<https://devfeed.tech/tags/elliptic-curves.md>), [euclidean-algorithm](<https://devfeed.tech/tags/euclidean-algorithm.md>), [euclidean-domain](<https://devfeed.tech/tags/euclidean-domain.md>), [factoring](<https://devfeed.tech/tags/factoring.md>), [field-characteristic](<https://devfeed.tech/tags/field-characteristic.md>), [finite-fields](<https://devfeed.tech/tags/finite-fields.md>), [gcd](<https://devfeed.tech/tags/gcd.md>), [math](<https://devfeed.tech/tags/math.md>), [operator-overloading](<https://devfeed.tech/tags/operator-overloading.md>), [polynomial-ring](<https://devfeed.tech/tags/polynomial-ring.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [python](<https://devfeed.tech/tags/python.md>), [randomized-algorithm](<https://devfeed.tech/tags/randomized-algorithm.md>), [typecasting](<https://devfeed.tech/tags/typecasting.md>)

### AI overview

This tutorial explains how to implement number types in Python for arithmetic over finite fields. It introduces integers modulo a prime as a finite field and lays groundwork for later elliptic-curve arithmetic.

### Source excerpt

Back when I was first exposed to programming language design, I decided it would be really cool if there were a language that let you define your own number types and then do all your programming within those number types. And since I get excited about math, I think of really exotic number types (Boolean rings, Gaussian integers, Octonions, oh my!). I imagined it would be a language feature, so I could do something like this:

## (Finite) Fields -- A Primer

DevFeed: [(Finite) Fields -- A Primer](<https://devfeed.tech/articles/finite-fields-a-primer-40348.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/02/26/finite-fields-a-primer/>)

Published: 2014-02-26T10:00:01Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [complex-numbers](<https://devfeed.tech/tags/complex-numbers.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [euclidean-domains](<https://devfeed.tech/tags/euclidean-domains.md>), [field](<https://devfeed.tech/tags/field.md>), [field-characteristic](<https://devfeed.tech/tags/field-characteristic.md>), [finite-fields](<https://devfeed.tech/tags/finite-fields.md>), [groups](<https://devfeed.tech/tags/groups.md>), [ideals](<https://devfeed.tech/tags/ideals.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [monoids](<https://devfeed.tech/tags/monoids.md>), [operations](<https://devfeed.tech/tags/operations.md>), [polynomial-ring](<https://devfeed.tech/tags/polynomial-ring.md>), [vector-spaces](<https://devfeed.tech/tags/vector-spaces.md>)

### AI overview

This primer introduces fields as commutative rings with 0 and 1 in which every nonzero element has a multiplicative inverse. It defines the field axioms, places fields within related algebraic structures, and raises the question of finite fields.

### Source excerpt

So far on this blog we've given some introductory notes on a few kinds of algebraic structures in mathematics (most notably groups and rings, but also monoids). Fields are the next natural step in the progression. If the reader is comfortable with rings, then a field is extremely simple to describe: they're just commutative rings with 0 and 1, where every nonzero element has a multiplicative inverse. We'll give a list of all of the properties that go into this "simple" definition in a moment, but an even more simple way to describe a field is as a place where "arithmetic makes sense.

## Sums of k Powers

DevFeed: [Sums of k Powers](<https://devfeed.tech/articles/sums-of-k-powers-40216.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2011/07/01/sums-of-k-powers/>)

Published: 2011-07-01T12:52:29Z

Content type: article

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [polynomials](<https://devfeed.tech/topics/polynomials.md>), [context](<https://devfeed.tech/topics/context.md>)

Tags: [complex-numbers](<https://devfeed.tech/tags/complex-numbers.md>), [factoring](<https://devfeed.tech/tags/factoring.md>), [finite-fields](<https://devfeed.tech/tags/finite-fields.md>), [induction](<https://devfeed.tech/tags/induction.md>), [polynomial-ring](<https://devfeed.tech/tags/polynomial-ring.md>), [polynomials](<https://devfeed.tech/tags/polynomials.md>)

### AI overview

The article proves the geometric-series identity for sums of powers using base-k notation, polynomial factorization, and mathematical induction. It also explains extensions of the identity to fields such as the complex numbers and finite fields.

### Source excerpt

Problem: Prove that for all $ n,k \in \mathbb{N}, k > 1$, we have $$\sum \limits_{i=0}^{n} k^i = \frac{k^{n+1}-1}{k-1}$$ Solution: Representing the numbers in base $ k$, we have that each term of the sum is all 0's except for a 1 in the $ i$th place. Hence, the sum of all terms is the $ n$-digit number comprised of all 1's. Multiplying by $ k-1$ gives us the $ n$-digit number where every digit is $ k-1$.