Apply a digital filter (direct form II transposed): Difference between revisions

→‎{{header|ALGOL 68}}: check array bounds
(→‎{{header|ALGOL 68}}: check array bounds)
Line 120:
# the lower bounds of a, b, signal and result must all be equal #
PROC filter = ( []REAL a, b, signal, REF[]REAL result )VOID:
IF LWB a /= LWB b OR LWB a /= LWB signal OR LWB a /= LWB result THEN
BEGIN
print( ( "Array lower bounds must be equal for filter", newline ) );
stop
BEGINELSE
FOR i FROM LWB result TO UPB result DO result[ i ] := 0 OD;
FOR i FROM LWB signal TO UPB signal DO
Line 132 ⟶ 135:
result[ i ] := tmp / a[ LWB a ]
OD
ENDFI # filter # ;
[ 4 ]REAL a := []REAL( 1, -2.77555756e-16, 3.33333333e-01, -1.85037171e-17 );
[ 4 ]REAL b := []REAL( 0.16666667, 0.5, 0.5, 0.16666667 );
3,044

edits