fn end_exemptions_poly(
        &self,
        trace_primitive_root: &FieldElement<F>,
        trace_length: usize,
    ) -> Polynomial<FieldElement<F>> {
        let one_poly = Polynomial::new_monomial(FieldElement::<F>::one(), 0);
        if self.end_exemptions() == 0 {
            return one_poly;
        }
        let period = self.period();
        // FIXME: CHECK IF WE NEED TO CHANGE THE NEW MONOMIAL'S ARGUMENTS TO trace_root^(offset * trace_length / period) INSTEAD OF ONE!!!!
        (1..=self.end_exemptions())
            .map(|exemption| trace_primitive_root.pow(trace_length - exemption * period))
            .fold(one_poly, |acc, offset| {
                acc * (Polynomial::new_monomial(FieldElement::<F>::one(), 1) - offset)
            })
    }
Method for calculating the end exemptions polynomial.

This polynomial is used to compute zerofiers of the constraint, and the default
implementation should normally not be changed.
crates/provers/stark/src/constraints/transition.rs