Documentation

HexPolyFast.Interpolation

An opaque reusable interpolation plan at a distinct point sequence.

Instances For

    Build a reusable interpolation plan exactly when the points are distinct.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Hex.DensePoly.InterpPlan.build?_eq_none_iff {F : Type u} [DecidableEq F] [Lean.Grind.Field F] (mul : MulPlan F) (points : Array F) :
      build? mul points = none ↔ ¬points.toList.Nodup

      Plan construction fails exactly when the point sequence has a duplicate.

      Planned interpolation points.

      Equations
      Instances For

        Number of planned interpolation points.

        Equations
        Instances For
          @[simp]

          The points accessor has the advertised plan size.

          The cached multipoint plan used for derivative evaluation.

          Equations
          Instances For
            @[simp]

            The nested evaluation plan uses the same point sequence.

            @[simp]

            The nested evaluation plan has the same size.

            Interpolate a matching value array, rejecting only a count mismatch.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem Hex.DensePoly.InterpPlan.interpolate?_eq_none_iff {F : Type u} [DecidableEq F] [Lean.Grind.Field F] (plan : InterpPlan F) (values : Array F) :
              plan.interpolate? values = none ↔ values.size ≠ plan.size

              Interpolation rejects exactly a mismatch between point and value counts.

              theorem Hex.DensePoly.InterpPlan.interpolate?_sound {F : Type u} [DecidableEq F] [Lean.Grind.Field F] (plan : InterpPlan F) (values : Array F) (p : DensePoly F) (hsome : plan.interpolate? values = some p) :
              p.size ≤ plan.size ∧ ∀ (i : Nat) (hi : i < plan.size), p.eval plan.points[i] = values.getD i 0

              A successful interpolation has the requested values and no more coefficients than there are points.

              theorem Hex.DensePoly.InterpPlan.interpolate?_unique {F : Type u} [DecidableEq F] [Lean.Grind.Field F] (plan : InterpPlan F) (values : Array F) (p q : DensePoly F) (hsome : plan.interpolate? values = some p) (hqsize : q.size ≤ plan.size) (hqvalues : ∀ (i : Nat) (hi : i < plan.size), q.eval plan.points[i] = values.getD i 0) :
              q = p

              The successful interpolation is the unique polynomial of size at most the point count with the supplied values.