pub fn foldings_polynomial<F: Field>(polynomial: &[F], challenges: &[F]) -> Vec<Vec<F>> {
    let challenges = strip_last(challenges);
    challenges
        .iter()
        .scan(polynomial.to_vec(), |polynomial, &challenge| {
            *polynomial = fold_polynomial(polynomial, challenge);
            polynomial.clone().into()
        })
        .collect()
}
/// The function for folding polynomials using given challenges for each round.
/// It skips the last challenge since the result can be obtained from asserted results.
The function for folding polynomials using given challenges for each round.
It skips the last challenge since the result can be obtained from asserted results.
The function for folding polynomials using given challenges for each round . It skips the last challenge since the result can be obtained from asserted results .
pub fn foldings_polynomial<F: Field>(polynomial: &[F], challenges: &[F]) -> Vec<Vec<F>> {
    let challenges = strip_last(challenges);
    challenges
        .iter()
        .scan(polynomial.to_vec(), |polynomial, &challenge| {
            *polynomial = fold_polynomial(polynomial, challenge);
            polynomial.clone().into()
        })
        .collect()
}
pub fn foldings_polynomial < F : Field > ( polynomial : & [ F ] , challenges : & [ F ] ) -> Vec < Vec < F > > { let challenges = strip_last ( challenges ) ; challenges . iter ( ) . scan ( polynomial . to_vec ( ) , | polynomial , & challenge | { * polynomial = fold_polynomial ( polynomial , challenge ) ; polynomial . clone ( ) . into ( ) } ) . collect ( ) }
The function for folding polynomials using given challenges for each round.
The function for folding polynomials using given challenges for each round .
polynomial
&[F]
challenges
&[F]