SPN algorithms