Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
Python Linting / Run Pylint (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.10, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.11, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.12, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-unix-nightly (12.1, , linux, 3.11, [self-hosted Linux], nightly) (push) Has been cancelled
Execution Tests / test (macos-latest) (push) Has been cancelled
Execution Tests / test (ubuntu-latest) (push) Has been cancelled
Execution Tests / test (windows-latest) (push) Has been cancelled
Test server launches without errors / test (push) Has been cancelled
Unit Tests / test (macos-latest) (push) Has been cancelled
Unit Tests / test (ubuntu-latest) (push) Has been cancelled
Unit Tests / test (windows-2022) (push) Has been cancelled
Includes 30 custom nodes committed directly, 7 Civitai-exclusive loras stored via Git LFS, and a setup script that installs all dependencies and downloads HuggingFace-hosted models on vast.ai. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
906 B
Python
25 lines
906 B
Python
from functools import reduce
|
|
from itertools import cycle
|
|
from math import factorial
|
|
|
|
import numpy as np
|
|
import scipy.sparse as sp
|
|
|
|
|
|
def difference(derivative, accuracy=1):
|
|
# Central differences implemented based on the article here:
|
|
# http://web.media.mit.edu/~crtaylor/calculator.html
|
|
derivative += 1
|
|
radius = accuracy + derivative // 2 - 1
|
|
points = range(-radius, radius + 1)
|
|
coefficients = np.linalg.inv(np.vander(points))
|
|
return coefficients[-derivative] * factorial(derivative - 1), points
|
|
|
|
|
|
def operator(shape, *differences):
|
|
# Credit to Philip Zucker for figuring out
|
|
# that kronsum's argument order is reversed.
|
|
# Without that bit of wisdom I'd have lost it.
|
|
differences = zip(shape, cycle(differences))
|
|
factors = (sp.diags(*diff, shape=(dim,) * 2) for dim, diff in differences)
|
|
return reduce(lambda a, f: sp.kronsum(f, a, format='csc'), factors) |