in Diffusion/Common/Utils.swift [47:66]
func previewIndices(_ numInferenceSteps: Int, _ numPreviews: Int) -> [Bool] {
// Ensure valid parameters
guard numInferenceSteps > 0, numPreviews > 0 else {
return [Bool](repeating: false, count: numInferenceSteps)
}
// Compute the ideal (floating-point) step size, which represents the average number of steps between previews
let idealStep = Double(numInferenceSteps) / Double(numPreviews)
// Compute the actual steps at which previews should be made. For each preview, we multiply the ideal step size by the preview number, and round to the nearest integer.
// The result is converted to a `Set` for fast membership tests.
let previewIndices: Set<Int> = Set((0..<numPreviews).map { previewIndex in
return Int(round(Double(previewIndex) * idealStep))
})
// Construct an array of booleans where each value indicates whether or not a preview should be made at that step.
let previewArray = (0..<numInferenceSteps).map { previewIndices.contains($0) }
return previewArray
}