Pipeline Composition
Normalize Scores Pipeline
Offset and Clamp
A simple pipeline can adjust raw readings and clamp each derived value before reporting.
Program
Play the program to choose an offset and watch each score pass through the same transform.
normalize_scores_pipeline.f90
Replay: real traced execution (multi-file project)
program normalize_scores_pipeline_demo
implicit none
integer :: raw(3)
integer :: offset
integer :: normalized(3)
integer :: i
raw = [2, 5, 9]
offset = 1
do i = 1, 3
normalized(i) = max(0, raw(i) + offset)
end do
print '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized(3)
end program normalize_scores_pipeline_demo
program normalize_scores_pipeline_demo
implicit none
integer :: raw(3)
integer :: offset
integer :: normalized(3)
integer :: i
raw = [2, 5, 9]
offset = -2
do i = 1, 3
normalized(i) = max(0, raw(i) + offset)
end do
print '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized(3)
end program normalize_scores_pipeline_demo
program normalize_scores_pipeline_demo
implicit none
integer :: raw(3)
integer :: offset
integer :: normalized(3)
integer :: i
raw = [2, 5, 9]
offset = 3
do i = 1, 3
normalized(i) = max(0, raw(i) + offset)
end do
print '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized(3)
end program normalize_scores_pipeline_demo
raw ← [2, 5, 9]
8raw = [2, 5, 9]9offset = 1values this step[2, 5, 9]rawoffset ← 1
8raw = [2, 5, 9]9offset = 110do i = 1, 3values this step1offseti ← 1
9offset = 110do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step1inormalized(1) ← 3
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step3normalized(1)2raw(1)1offseti ← 2
9offset = 110do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step2inormalized(2) ← 6
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step6normalized(2)5raw(2)1offseti ← 3
9offset = 110do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step3inormalized(3) ← 10
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step10normalized(3)9raw(3)1offsetprint '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized…
12 end do13 print '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized(3)14end program normalize_scores_pipeline_demooutput3 6 10values this step[3, 6, 10]normalized
raw ← [2, 5, 9]
8raw = [2, 5, 9]9offset = -2values this step[2, 5, 9]rawoffset ← -2
8raw = [2, 5, 9]9offset = -210do i = 1, 3values this step-2offseti ← 1
9offset = -210do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step1inormalized(1) ← 0
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step0normalized(1)2raw(1)-2offseti ← 2
9offset = -210do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step2inormalized(2) ← 3
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step3normalized(2)5raw(2)-2offseti ← 3
9offset = -210do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step3inormalized(3) ← 7
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step7normalized(3)9raw(3)-2offsetprint '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized…
12 end do13 print '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized(3)14end program normalize_scores_pipeline_demooutput0 3 7values this step[0, 3, 7]normalized
raw ← [2, 5, 9]
8raw = [2, 5, 9]9offset = 3values this step[2, 5, 9]rawoffset ← 3
8raw = [2, 5, 9]9offset = 310do i = 1, 3values this step3offseti ← 1
9offset = 310do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step1inormalized(1) ← 5
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step5normalized(1)2raw(1)3offseti ← 2
9offset = 310do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step2inormalized(2) ← 8
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step8normalized(2)5raw(2)3offseti ← 3
9offset = 310do i = 1, 311 normalized(i) = max(0, raw(i) + offset)values this step3inormalized(3) ← 12
10do i = 1, 311 normalized(i) = max(0, raw(i) + offset)12end dovalues this step12normalized(3)9raw(3)3offsetprint '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized…
12 end do13 print '(I0, 1X, I0, 1X, I0)', normalized(1), normalized(2), normalized(3)14end program normalize_scores_pipeline_demooutput5 8 12values this step[5, 8, 12]normalized
transform
Each raw reading is adjusted by the same offset.
clamp
`max(0, raw(i) + offset)` prevents negative normalized scores.
pipeline
The loop applies one transformation step to every element.