The skqfit.asmjacp Module

References:

G W Forbes, “Characterizing the shape of freeform optics”, Opt. Express 20(3), 2483-2499 (2012)

class skqfit.asmjacp.AsymJacobiP(nmax)[source]

Bases: object

Generate asymmetric Jacobi like polynominals needed for the freeform fit as defined in the reference document [A.1]

The Jacobi P polynominals can generate large values that lead to a double overflow for large m and n values. It is tested to (1500, 1500) for (m,n). Exceeding these values may lead to overflow events.

The scipi.special.jacobi function is has a 1.5:1 performance advantage over the current implementation but it doesn’t support the normalization and can lead to an overflow condition for n or m over 500.

build_recursion(m)[source]

Build the recurssion coefficients and saves them as a sequence of tuples. These are the coefficients to build the m type polynominals up to order n.

jmat_u_x(jmat, uv, xv)[source]

Builds the asymmetric Jacobi P polynomial as defined in [2] A.1 for all of the x values with the scaling factor of u**m which extends the range of usable (m,n) values before an overflow condition occurs.

jmat_x(jmat, xv)[source]

Builds the asymmetric Jacobi P polynomial as defined in [2] A.1 for all a vector of x values.

jvec_u_x(jvec, u, x)[source]

Builds the asymmetric Jacobi P polynomial for a single x as defined in [2] A.1 for all of the x values with the scaling factor of u**m which extends the range of usable (m,n) values.

jvec_x(jvec, x)[source]

Builds the sequence of jacobi polynomials for the value x based on [A.2-5]