458901bb2ab6fdfdf5fad6177cd5ded571d95bb7
should have added them from beginning instead of giving custom names to them. Will not be deleting that.
More Math
Adds math nodes for numbers and types which do not need it. I got inspired by was_extras node.
WARNING This node is not compatible to ComfyUI-Impact-Pack and ComfyUI-Ovi which forces older antlr version
Quickstart
- Install ComfyUI.
- Clone this repository into
ComfyUI/custom_nodes. - Restart ComfyUI.
You can also get the node from comfy manager under the name of More math.
Features
- functions and variables in math expressions
- Nodes for CONDITIONING, LATENT, IMAGE, NOISE, FLOAT, VIDEO and AUDIO
Operators
- Math:
+,-,*,/,%,^,|| - Boolean:
<,<=,>,>=,==,!=(false = 0.0,true = 1.0) - Lists:
[v1, v2, ...](Vector math supported, only usefull inconv)
Functions
Basic Math
abs(x)or|x|: Absolute value. For floatabs(x)and|x|are the same. For tensorabs(x)calculates element-wise absolute value and for|x|it calculates L2 norm (euclidean norm).sqrt(x): Square root.ln(x): Natural logarithm (base e).log(x): Logarithm base 10.exp(x): Exponential function (e^x).pow(x, y): Power function (x^y).floor(x): Rounds down to nearest integer.ceil(x): Rounds up to nearest integer.round(x): Rounds to nearest integer.fract(x): Returns the fractional part of x (x - floor(x)).sign(x): Returns -1 for negative, 1 for positive, 0 for zero.gamma(x): Gamma function.
Trigonometric
sin(x),cos(x),tan(x)asin(x),acos(x),atan(x)atan2(y, x): Arctangent of y/x, handling quadrants.
Hyperbolic
sinh(x),cosh(x),tanh(x)asinh(x),acosh(x),atanh(x)
Machine Learning / Activation
relu(x): Rectified Linear Unit (max(0, x)).gelu(x): Gaussian Error Linear Unit.softplus(x): Softplus function (log(1 + e^x)).sigm(x): Sigmoid function (1 / (1 + e^-x)).
Shaders / Interpolation
clamp(x, min, max): Constrains x to be between min and max.lerp(a, b, w): Linear interpolation:a + (b - a) * w.step(x, edge): Returns 1.0 if x >= edge, else 0.0.smoothstep(x, edge0, edge1): Hermite interpolation between edge0 and edge1.
Aggregates & Tensor Operations
tmin(x, y): Element-wise minimum of x and y.tmax(x, y): Element-wise maximum of x and y.smin(x, ...): Scalar minimum. Returns the single smallest value across all input tensors/values.smax(x, ...): Scalar maximum. Returns the single largest value across all input tensors/values.tnorm(x): Tensor Normalizes x (L2 norm along last dimension).snorm(x): Scalar L2 norm of the entire tensor.swap(tensor, dim, index1, index2): Swaps two slices of a tensor along a specified dimension. (Tensor only)
Advanced Tensor Operations (Tensor Only)
-
map(tensor, c1, ...): Remapstensorusing source coordinates.- Up to 3 coordinate mapping functions can be provided which map to the last (up to 3) dimensions of the tensor.
- If less than 3 functions are provided and shape of tensor > 3, the remaining dimensions are assumed to be identity functions.
-
conv(tensor, kw, [kh], [kd], k_expr): Applies a convolution totensor.k_exprcan be a math expression (usingkX,kY,kZ) or a list literal.
-
permute(tensor, [dims]): Rearranges the dimensions of the tensor. (e.g.,permute(a, [2, 3, 0, 1]))
FFT (Tensor Only)
fft(x): Fast Fourier Transform (Time to Frequency).ifft(x): Inverse Fast Fourier Transform (Frequency to Time).angle(x): Returns the element-wise angle (phase) of the complex tensor.
Utility
print(x): Prints the value of x to the console and returns x.print_shape(x)orpshp: Prints the shape of x to the console and returns x.
Variables
-
Common variables (except FLOAT, MODEL, VAE and CLIP):
D{N}- position in n-th dimension of tensor (for example D0, D1, D2, ...)S{N}- size of n-th dimension of tensor (for example S0, S1, S2, ...)
-
common inputs (matches node input type):
a,b,c,d
-
Extra floats:
w,x,y,z
-
INSIDE IFFT
Forfrequency_count– frequency count (freq domain, iFFT only)Korfrequency– isotropic frequency (Euclidean norm of indices, iFFT only)Kx,Ky,K_dimN- frequency index for specific dimensionFx,Fy,F_dimN- frequency count for specific dimension
-
IMAGE and LATENT:
Corchannel- channel of imageX- position X in image. 0 is in top leftY- position Y in image. 0 is in top leftWorwidth- width of image. y/width = 1Horheight- height of image. x/height = 1Bor 'batch' - position in batchTorbatch_count- number of batchesNorchannel_count- count of channels
-
IMAGE KERNEL:
kX,kY- position in kernel. Centered at 0.0.kW,kernel_width- width of kernel.kH,kernel_height- height of kernel.kD,kernel_depth- depth of kernel.
-
AUDIO:
Bor 'batch' - position in batchNorchannel_count- count of channelsCorchannel- channel of audioSorsample– current audio sample- 'T' or 'sample_count` - audio lenght in samples
Rorsample_rate– sample rate
-
VIDEO
- refer to
IMAGE and LATENTfor visual part (butbatchisframeandbatch_countisframe_count) - refer to
AUDIOfor sound part
- refer to
-
NOISE
- refer to
IMAGE and LATENTfor most variables Iorinput_latent– latent used as input to generate noise before noise is generated into it
- refer to
-
CONDITIONING and FLOAT
- no additional variables
Forfrequency_count– frequency count (freq domain, iFFT only)Korfrequency– isotropic frequency (Euclidean norm of indices, iFFT only)Kx,Ky,Kz,Kw,Kv,Ku,K_dimN- frequency index for specific dimensionFx,Fy,Fz,Fw,Fv,Fu,F_dimN- frequency count for specific dimension
-
Constants:
e,pi
Languages
Python
96.3%
JavaScript
1.4%
ANTLR
1.2%
PowerShell
0.6%
Vue
0.5%