galois.Poly.derivative(k: int = 1) Poly

Computes the \(k\)-th formal derivative \(\frac{d^k}{dx^k} f(x)\) of the polynomial \(f(x)\).

Parameters
k: int = 1

The number of derivatives to compute. 1 corresponds to \(p'(x)\), 2 corresponds to \(p''(x)\), etc. The default is 1.

Returns

The \(k\)-th formal derivative of the polynomial \(f(x)\).

Notes

For the polynomial

\[f(x) = a_d x^d + a_{d-1} x^{d-1} + \dots + a_1 x + a_0\]

the first formal derivative is defined as

\[f'(x) = (d) \cdot a_{d} x^{d-1} + (d-1) \cdot a_{d-1} x^{d-2} + \dots + (2) \cdot a_{2} x + a_1\]

where \(\cdot\) represents scalar multiplication (repeated addition), not finite field multiplication. The exponent that is “brought down” and multiplied by the coefficient is an integer, not a finite field element. For example, \(3 \cdot a = a + a + a\).

References

Examples

Compute the derivatives of a polynomial over \(\mathrm{GF}(2)\).

In [1]: f = galois.Poly.Random(7); f
Out[1]: Poly(x^7 + x^3 + x^2 + 1, GF(2))

In [2]: f.derivative()
Out[2]: Poly(x^6 + x^2, GF(2))

# p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
In [3]: f.derivative(GF.characteristic)
Out[3]: Poly(0, GF(2))

Compute the derivatives of a polynomial over \(\mathrm{GF}(7)\).

In [4]: GF = galois.GF(7)

In [5]: f = galois.Poly.Random(11, field=GF); f
Out[5]: Poly(2x^11 + 5x^10 + 6x^9 + 5x^8 + 6x^7 + x^6 + 4x^5 + x^4 + 6x^3 + 3x^2 + 6, GF(7))

In [6]: f.derivative()
Out[6]: Poly(x^10 + x^9 + 5x^8 + 5x^7 + 6x^5 + 6x^4 + 4x^3 + 4x^2 + 6x, GF(7))

In [7]: f.derivative(2)
Out[7]: Poly(3x^9 + 2x^8 + 5x^7 + 2x^4 + 3x^3 + 5x^2 + x + 6, GF(7))

In [8]: f.derivative(3)
Out[8]: Poly(6x^8 + 2x^7 + x^3 + 2x^2 + 3x + 1, GF(7))

# p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
In [9]: f.derivative(GF.characteristic)
Out[9]: Poly(0, GF(7))

Compute the derivatives of a polynomial over \(\mathrm{GF}(3^5)\).

In [10]: GF = galois.GF(3**5)

In [11]: f = galois.Poly.Random(7, field=GF); f
Out[11]: Poly(37x^7 + 35x^6 + 121x^5 + 233x^4 + 192x^3 + 96x^2 + 219x + 85, GF(3^5))

In [12]: f.derivative()
Out[12]: Poly(37x^6 + 242x^4 + 233x^3 + 183x + 219, GF(3^5))

In [13]: f.derivative(2)
Out[13]: Poly(242x^3 + 183, GF(3^5))

# p derivatives of a polynomial, where p is the field's characteristic, will always result in 0
In [14]: f.derivative(GF.characteristic)
Out[14]: Poly(0, GF(3^5))