Iir1.Net 1.0.0

dotnet add package Iir1.Net --version 1.0.0
                    
NuGet\Install-Package Iir1.Net -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Iir1.Net" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Iir1.Net" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Iir1.Net" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Iir1.Net --version 1.0.0
                    
#r "nuget: Iir1.Net, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Iir1.Net@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Iir1.Net&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Iir1.Net&version=1.0.0
                    
Install as a Cake Tool

Iir1.Net

Iir1.Net is a faithful C# port of Bernd Porr's iir1 digital IIR filter library. It provides Butterworth, Chebyshev I, Chebyshev II, custom-pole, and RBJ filters while preserving the native implementation's coefficients, state progression, and sample-by-sample behavior.

The port targets .NET Standard 2.1, .NET 8, and .NET 10. Its parity suite contains 45 native scenarios captured independently with MSVC and GCC and runs 46 contract tests on both .NET 8 and .NET 10. Expected floating-point differences between native toolchains are handled with a strict 1e-14 absolute-or-relative tolerance; results that are bit-identical also pass directly. See Parity verification for the exact contract and regeneration procedure.

Install

dotnet add package Iir1.Net --version 1.0.0

Use

using Iir.Butterworth;

var filter = new LowPass();
filter.Setup(sampleRate: 48_000, cutoffFrequency: 2_000);

double output = filter.Filter(inputSample);

Butterworth, Chebyshev, and custom filters use direct-form II state by default; RBJ filters preserve the upstream direct-form I default. Generic filter types accept another ISectionState implementation when an application needs a different realization. Setup accepts frequencies in hertz; SetupN accepts frequencies normalized to the sample rate.

Repository layout

  • src is the source root for all solution projects.
  • src/Iir1.Net contains the package implementation.
  • src/Iir1.Net.Tests contains managed parity and behavior tests plus committed native fixtures.
  • src/Iir1.Net.Demo is a minimal executable example.
  • reference/iir1 is the exact upstream source revision used for verification.
  • tools/parity builds the native capture harness and regenerates fixtures.
  • tools/package validates and smoke-tests the package artifacts.

Build and test

Visual Studio 2022 or newer can open Iir1.Net.sln directly. The command-line equivalent is:

dotnet build Iir1.Net.sln -c Release
dotnet test src/Iir1.Net.Tests/Iir1.Net.Tests.csproj -c Release -f net8.0 --no-build
dotnet test src/Iir1.Net.Tests/Iir1.Net.Tests.csproj -c Release -f net10.0 --no-build

Initialize the pinned upstream source before regenerating parity data:

git submodule update --init --recursive

On Windows, tools/parity/scripts/regenerate-parity.ps1 prefers the installed Visual Studio C++ toolchain. The GCC profile accepts an explicit g++.exe through -Compiler. On Linux, use tools/parity/scripts/regenerate-parity.sh.

Attribution and license

The managed port is MIT-licensed; see LICENSE. The original iir1 copyright and license are preserved in THIRD_PARTY_NOTICES.md and LICENSES/iir1-MIT.txt.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.1

    • No dependencies.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 98 7/22/2026