fix Swift type-check complexity in LSV crossover detection

This commit is contained in:
jess 2026-04-02 18:18:45 -07:00
parent 491befa8c6
commit 95997e4fd5
1 changed files with 7 additions and 3 deletions

View File

@ -79,9 +79,13 @@ func detectLsvPeaks(_ points: [LsvPoint]) -> [LsvPeak] {
for i in 1..<smoothed.count { for i in 1..<smoothed.count {
let prev = smoothed[i - 1] let prev = smoothed[i - 1]
let curr = smoothed[i] let curr = smoothed[i]
if prev.sign != curr.sign && prev != 0 { let crossed = (prev > 0 && curr < 0) || (prev < 0 && curr > 0)
let frac = abs(prev) / (abs(prev) + abs(curr)) if crossed {
let vCross = vVals[i - 1] + frac * (vVals[i] - vVals[i - 1]) let aPrev = abs(prev)
let aCurr = abs(curr)
let frac = aPrev / (aPrev + aCurr)
let dv = vVals[i] - vVals[i - 1]
let vCross = vVals[i - 1] + frac * dv
peaks.append(LsvPeak(vMv: vCross, iUa: 0, kind: .crossover)) peaks.append(LsvPeak(vMv: vCross, iUa: 0, kind: .crossover))
break break
} }