from typing import Final, Literal as L
import numpy as np
from ._polybase import ABCPolyBase
from ._polytypes import (
_Array1,
_Array2,
_FuncBinOp,
_FuncCompanion,
_FuncDer,
_FuncFit,
_FuncFromRoots,
_FuncGauss,
_FuncInteg,
_FuncLine,
_FuncPoly2Ortho,
_FuncPow,
_FuncRoots,
_FuncUnOp,
_FuncVal,
_FuncVal2D,
_FuncVal3D,
_FuncValFromRoots,
_FuncVander,
_FuncVander2D,
_FuncVander3D,
_FuncWeight,
)
from .polyutils import trimcoef as legtrim
__all__ = [
"legzero",
"legone",
"legx",
"legdomain",
"legline",
"legadd",
"legsub",
"legmulx",
"legmul",
"legdiv",
"legpow",
"legval",
"legder",
"legint",
"leg2poly",
"poly2leg",
"legfromroots",
"legvander",
"legfit",
"legtrim",
"legroots",
"Legendre",
"legval2d",
"legval3d",
"leggrid2d",
"leggrid3d",
"legvander2d",
"legvander3d",
"legcompanion",
"leggauss",
"legweight",
]
poly2leg: _FuncPoly2Ortho[L["poly2leg"]]
leg2poly: _FuncUnOp[L["leg2poly"]]
legdomain: Final[_Array2[np.float64]]
legzero: Final[_Array1[np.int_]]
legone: Final[_Array1[np.int_]]
legx: Final[_Array2[np.int_]]
legline: _FuncLine[L["legline"]]
legfromroots: _FuncFromRoots[L["legfromroots"]]
legadd: _FuncBinOp[L["legadd"]]
legsub: _FuncBinOp[L["legsub"]]
legmulx: _FuncUnOp[L["legmulx"]]
legmul: _FuncBinOp[L["legmul"]]
legdiv: _FuncBinOp[L["legdiv"]]
legpow: _FuncPow[L["legpow"]]
legder: _FuncDer[L["legder"]]
legint: _FuncInteg[L["legint"]]
legval: _FuncVal[L["legval"]]
legval2d: _FuncVal2D[L["legval2d"]]
legval3d: _FuncVal3D[L["legval3d"]]
legvalfromroots: _FuncValFromRoots[L["legvalfromroots"]]
leggrid2d: _FuncVal2D[L["leggrid2d"]]
leggrid3d: _FuncVal3D[L["leggrid3d"]]
legvander: _FuncVander[L["legvander"]]
legvander2d: _FuncVander2D[L["legvander2d"]]
legvander3d: _FuncVander3D[L["legvander3d"]]
legfit: _FuncFit[L["legfit"]]
legcompanion: _FuncCompanion[L["legcompanion"]]
legroots: _FuncRoots[L["legroots"]]
leggauss: _FuncGauss[L["leggauss"]]
legweight: _FuncWeight[L["legweight"]]
class Legendre(ABCPolyBase[L["P"]]): ...