Class NDExpr
Abstract expression node. Subclasses describe computations over NDIter operands; Compile() produces an NDInnerLoopFunc.
public abstract class NDExpr
- Inheritance
-
NDExpr
- Derived
- Inherited Members
- Extension Methods
Properties
SupportsSimd
True if this node and its entire sub-tree have a SIMD emit path. Structural and type-independent — prefer SupportsSimdAt(NPTypeCode) for the compile decision, since some ops only vectorize at certain element types/runtimes.
public abstract bool SupportsSimd { get; }
Property Value
Methods
ACos(NDExpr)
public static NDExpr ACos(NDExpr x)
Parameters
xNDExpr
Returns
ASin(NDExpr)
public static NDExpr ASin(NDExpr x)
Parameters
xNDExpr
Returns
ATan(NDExpr)
public static NDExpr ATan(NDExpr x)
Parameters
xNDExpr
Returns
ATan2(NDExpr, NDExpr)
public static NDExpr ATan2(NDExpr y, NDExpr x)
Parameters
Returns
Abs(NDExpr)
public static NDExpr Abs(NDExpr x)
Parameters
xNDExpr
Returns
Add(NDExpr, NDExpr)
public static NDExpr Add(NDExpr a, NDExpr b)
Parameters
Returns
AppendSignature(StringBuilder)
Stable structural signature. Used to derive a cache key when the user doesn't supply one.
public abstract void AppendSignature(StringBuilder sb)
Parameters
Arr(NDArray)
Embed an NDArray directly as an expression leaf. np.evaluate binds every distinct array (by reference) to one iterator operand.
public static NDExpr Arr(NDArray array)
Parameters
arrayNDArray
Returns
BitwiseAnd(NDExpr, NDExpr)
public static NDExpr BitwiseAnd(NDExpr a, NDExpr b)
Parameters
Returns
BitwiseNot(NDExpr)
public static NDExpr BitwiseNot(NDExpr x)
Parameters
xNDExpr
Returns
BitwiseOr(NDExpr, NDExpr)
public static NDExpr BitwiseOr(NDExpr a, NDExpr b)
Parameters
Returns
BitwiseXor(NDExpr, NDExpr)
public static NDExpr BitwiseXor(NDExpr a, NDExpr b)
Parameters
Returns
Call(Delegate, params NDExpr[])
Invoke any delegate. Method-group arguments need a typed Func overload; use a cast or the typed overloads below.
public static NDExpr Call(Delegate func, params NDExpr[] args)
Parameters
Returns
Call(MethodInfo, params NDExpr[])
Invoke a static method (no target).
public static NDExpr Call(MethodInfo method, params NDExpr[] args)
Parameters
methodMethodInfoargsNDExpr[]
Returns
Call(MethodInfo, object, params NDExpr[])
Invoke an instance method on a target object.
public static NDExpr Call(MethodInfo method, object target, params NDExpr[] args)
Parameters
methodMethodInfotargetobjectargsNDExpr[]
Returns
Call<TR>(Func<TR>)
public static NDExpr Call<TR>(Func<TR> func)
Parameters
funcFunc<TR>
Returns
Type Parameters
TR
Call<T1, TR>(Func<T1, TR>, NDExpr)
public static NDExpr Call<T1, TR>(Func<T1, TR> func, NDExpr a1)
Parameters
Returns
Type Parameters
T1TR
Call<T1, T2, TR>(Func<T1, T2, TR>, NDExpr, NDExpr)
public static NDExpr Call<T1, T2, TR>(Func<T1, T2, TR> func, NDExpr a1, NDExpr a2)
Parameters
Returns
Type Parameters
T1T2TR
Call<T1, T2, T3, TR>(Func<T1, T2, T3, TR>, NDExpr, NDExpr, NDExpr)
public static NDExpr Call<T1, T2, T3, TR>(Func<T1, T2, T3, TR> func, NDExpr a1, NDExpr a2, NDExpr a3)
Parameters
Returns
Type Parameters
T1T2T3TR
Call<T1, T2, T3, T4, TR>(Func<T1, T2, T3, T4, TR>, NDExpr, NDExpr, NDExpr, NDExpr)
public static NDExpr Call<T1, T2, T3, T4, TR>(Func<T1, T2, T3, T4, TR> func, NDExpr a1, NDExpr a2, NDExpr a3, NDExpr a4)
Parameters
Returns
Type Parameters
T1T2T3T4TR
Cbrt(NDExpr)
public static NDExpr Cbrt(NDExpr x)
Parameters
xNDExpr
Returns
Ceil(NDExpr)
public static NDExpr Ceil(NDExpr x)
Parameters
xNDExpr
Returns
Clamp(NDExpr, NDExpr, NDExpr)
public static NDExpr Clamp(NDExpr x, NDExpr lo, NDExpr hi)
Parameters
Returns
Compile(NPTypeCode[], NPTypeCode, string?)
Compile the tree to an NDInnerLoopFunc.
public NDInnerLoopFunc Compile(NPTypeCode[] inputTypes, NPTypeCode outputType, string? cacheKey)
Parameters
inputTypesNPTypeCode[]outputTypeNPTypeCodecacheKeystring
Returns
CompileNumPy(NPTypeCode[], out NPTypeCode, string?)
Compile the tree with NumPy 2.x result_type semantics: every node
computes at its own NEP50-resolved dtype, conversions happen at
node edges, and the kernel reads each operand at its NATIVE dtype
(no iterator-side casting needed). resolvedType
receives the tree's result dtype — the output operand's dtype.
SIMD engages iff the whole tree resolves to one SIMD-capable dtype.
public NDInnerLoopFunc CompileNumPy(NPTypeCode[] inputTypes, out NPTypeCode resolvedType, string? cacheKey = null)
Parameters
inputTypesNPTypeCode[]resolvedTypeNPTypeCodecacheKeystring
Returns
Const(double)
Push a constant of the given .NET type. Value is converted to the output dtype when evaluated.
public static NDExpr Const(double value)
Parameters
valuedouble
Returns
Const(int)
public static NDExpr Const(int value)
Parameters
valueint
Returns
Const(long)
public static NDExpr Const(long value)
Parameters
valuelong
Returns
Const(float)
public static NDExpr Const(float value)
Parameters
valuefloat
Returns
Cos(NDExpr)
public static NDExpr Cos(NDExpr x)
Parameters
xNDExpr
Returns
Cosh(NDExpr)
public static NDExpr Cosh(NDExpr x)
Parameters
xNDExpr
Returns
Deg2Rad(NDExpr)
public static NDExpr Deg2Rad(NDExpr x)
Parameters
xNDExpr
Returns
Divide(NDExpr, NDExpr)
public static NDExpr Divide(NDExpr a, NDExpr b)
Parameters
Returns
EmitScalar(ILGenerator, NDExprCompileContext)
Emit scalar code. On exit, the evaluation stack must have exactly
one value of dtype ctx.OutputType.
public abstract void EmitScalar(ILGenerator il, NDExprCompileContext ctx)
Parameters
ilILGeneratorctxNDExprCompileContext
EmitVector(ILGenerator, NDExprCompileContext)
Emit vector code. On exit, the evaluation stack must have exactly
one Vector{W}<T> of element type ctx.OutputType.
Called only when SupportsSimd is true and all input
types equal the output type.
public abstract void EmitVector(ILGenerator il, NDExprCompileContext ctx)
Parameters
ilILGeneratorctxNDExprCompileContext
Equal(NDExpr, NDExpr)
public static NDExpr Equal(NDExpr a, NDExpr b)
Parameters
Returns
Exp(NDExpr)
public static NDExpr Exp(NDExpr x)
Parameters
xNDExpr
Returns
Exp2(NDExpr)
public static NDExpr Exp2(NDExpr x)
Parameters
xNDExpr
Returns
Expm1(NDExpr)
public static NDExpr Expm1(NDExpr x)
Parameters
xNDExpr
Returns
Floor(NDExpr)
public static NDExpr Floor(NDExpr x)
Parameters
xNDExpr
Returns
FloorDivide(NDExpr, NDExpr)
public static NDExpr FloorDivide(NDExpr a, NDExpr b)
Parameters
Returns
Greater(NDExpr, NDExpr)
public static NDExpr Greater(NDExpr a, NDExpr b)
Parameters
Returns
GreaterEqual(NDExpr, NDExpr)
public static NDExpr GreaterEqual(NDExpr a, NDExpr b)
Parameters
Returns
Input(int)
Reference the i-th operand of the iterator (0-based input index).
public static NDExpr Input(int index)
Parameters
indexint
Returns
IsFinite(NDExpr)
public static NDExpr IsFinite(NDExpr x)
Parameters
xNDExpr
Returns
IsInf(NDExpr)
public static NDExpr IsInf(NDExpr x)
Parameters
xNDExpr
Returns
IsNaN(NDExpr)
public static NDExpr IsNaN(NDExpr x)
Parameters
xNDExpr
Returns
Less(NDExpr, NDExpr)
public static NDExpr Less(NDExpr a, NDExpr b)
Parameters
Returns
LessEqual(NDExpr, NDExpr)
public static NDExpr LessEqual(NDExpr a, NDExpr b)
Parameters
Returns
Log(NDExpr)
public static NDExpr Log(NDExpr x)
Parameters
xNDExpr
Returns
Log10(NDExpr)
public static NDExpr Log10(NDExpr x)
Parameters
xNDExpr
Returns
Log1p(NDExpr)
public static NDExpr Log1p(NDExpr x)
Parameters
xNDExpr
Returns
Log2(NDExpr)
public static NDExpr Log2(NDExpr x)
Parameters
xNDExpr
Returns
LogicalNot(NDExpr)
public static NDExpr LogicalNot(NDExpr x)
Parameters
xNDExpr
Returns
Max(NDExpr)
One-pass fused maximum of the expression (NaN-propagating, like np.max).
public static NDExpr Max(NDExpr x)
Parameters
xNDExpr
Returns
Max(NDExpr, NDExpr)
public static NDExpr Max(NDExpr a, NDExpr b)
Parameters
Returns
Max(NDExpr, int, bool)
One-pass fused maximum of the expression along axis (NaN-propagating).
public static NDExpr Max(NDExpr x, int axis, bool keepdims = false)
Parameters
Returns
Mean(NDExpr)
One-pass fused arithmetic mean of the expression (ints→float64, floats preserved).
public static NDExpr Mean(NDExpr x)
Parameters
xNDExpr
Returns
Mean(NDExpr, int, bool)
One-pass fused arithmetic mean of the expression along axis.
public static NDExpr Mean(NDExpr x, int axis, bool keepdims = false)
Parameters
Returns
Min(NDExpr)
One-pass fused minimum of the expression (NaN-propagating, like np.min).
public static NDExpr Min(NDExpr x)
Parameters
xNDExpr
Returns
Min(NDExpr, NDExpr)
public static NDExpr Min(NDExpr a, NDExpr b)
Parameters
Returns
Min(NDExpr, int, bool)
One-pass fused minimum of the expression along axis (NaN-propagating).
public static NDExpr Min(NDExpr x, int axis, bool keepdims = false)
Parameters
Returns
Mod(NDExpr, NDExpr)
public static NDExpr Mod(NDExpr a, NDExpr b)
Parameters
Returns
Multiply(NDExpr, NDExpr)
public static NDExpr Multiply(NDExpr a, NDExpr b)
Parameters
Returns
Negate(NDExpr)
public static NDExpr Negate(NDExpr x)
Parameters
xNDExpr
Returns
NotEqual(NDExpr, NDExpr)
public static NDExpr NotEqual(NDExpr a, NDExpr b)
Parameters
Returns
Power(NDExpr, NDExpr)
public static NDExpr Power(NDExpr a, NDExpr b)
Parameters
Returns
Prod(NDExpr)
One-pass fused product of the expression.
public static NDExpr Prod(NDExpr x)
Parameters
xNDExpr
Returns
Prod(NDExpr, int, bool)
One-pass fused product of the expression along axis.
public static NDExpr Prod(NDExpr x, int axis, bool keepdims = false)
Parameters
Returns
Rad2Deg(NDExpr)
public static NDExpr Rad2Deg(NDExpr x)
Parameters
xNDExpr
Returns
Reciprocal(NDExpr)
public static NDExpr Reciprocal(NDExpr x)
Parameters
xNDExpr
Returns
Round(NDExpr)
public static NDExpr Round(NDExpr x)
Parameters
xNDExpr
Returns
Sign(NDExpr)
public static NDExpr Sign(NDExpr x)
Parameters
xNDExpr
Returns
Sin(NDExpr)
public static NDExpr Sin(NDExpr x)
Parameters
xNDExpr
Returns
Sinh(NDExpr)
public static NDExpr Sinh(NDExpr x)
Parameters
xNDExpr
Returns
Sqrt(NDExpr)
public static NDExpr Sqrt(NDExpr x)
Parameters
xNDExpr
Returns
Square(NDExpr)
public static NDExpr Square(NDExpr x)
Parameters
xNDExpr
Returns
Subtract(NDExpr, NDExpr)
public static NDExpr Subtract(NDExpr a, NDExpr b)
Parameters
Returns
Sum(NDExpr)
One-pass fused sum of the expression (NumPy dtype rules: int→int64, uint→uint64, floats preserved).
public static NDExpr Sum(NDExpr x)
Parameters
xNDExpr
Returns
Sum(NDExpr, int, bool)
One-pass fused sum of the expression along axis.
public static NDExpr Sum(NDExpr x, int axis, bool keepdims = false)
Parameters
Returns
SupportsSimdAt(NPTypeCode)
Whether this node and its sub-tree have a SIMD emit path WHEN every operand and the
output share element type t (the compiler only vectorizes a tree when
all its types are equal — see Compile(NPTypeCode[], NPTypeCode, string?)). Defaults to the structural
SupportsSimd; nodes whose SIMD-ability is type- or runtime-dependent
override this. The key case: rounding ops (Floor/Ceil/Round/Truncate) bind a per-type
Vector{N} BCL method that exists only for float/double on a capable runtime, so
vectorizing them at an integer type (or on a runtime without the method) would hit the
emitter's "Could not find ..." throw — this gate routes those to scalar instead.
public virtual bool SupportsSimdAt(NPTypeCode t)
Parameters
Returns
Tan(NDExpr)
public static NDExpr Tan(NDExpr x)
Parameters
xNDExpr
Returns
Tanh(NDExpr)
public static NDExpr Tanh(NDExpr x)
Parameters
xNDExpr
Returns
Truncate(NDExpr)
public static NDExpr Truncate(NDExpr x)
Parameters
xNDExpr
Returns
Where(NDExpr, NDExpr, NDExpr)
public static NDExpr Where(NDExpr cond, NDExpr a, NDExpr b)
Parameters
Returns
Operators
operator +(NDExpr, NDExpr)
public static NDExpr operator +(NDExpr a, NDExpr b)
Parameters
Returns
operator +(NDExpr, NDArray)
public static NDExpr operator +(NDExpr a, NDArray b)
Parameters
Returns
operator +(NDExpr, double)
public static NDExpr operator +(NDExpr a, double b)
Parameters
Returns
operator +(NDExpr, int)
public static NDExpr operator +(NDExpr a, int b)
Parameters
Returns
operator +(NDExpr, long)
public static NDExpr operator +(NDExpr a, long b)
Parameters
Returns
operator +(NDArray, NDExpr)
public static NDExpr operator +(NDArray a, NDExpr b)
Parameters
Returns
operator +(double, NDExpr)
public static NDExpr operator +(double a, NDExpr b)
Parameters
Returns
operator +(int, NDExpr)
public static NDExpr operator +(int a, NDExpr b)
Parameters
Returns
operator +(long, NDExpr)
public static NDExpr operator +(long a, NDExpr b)
Parameters
Returns
operator &(NDExpr, NDExpr)
public static NDExpr operator &(NDExpr a, NDExpr b)
Parameters
Returns
operator &(NDExpr, NDArray)
public static NDExpr operator &(NDExpr a, NDArray b)
Parameters
Returns
operator &(NDExpr, int)
public static NDExpr operator &(NDExpr a, int b)
Parameters
Returns
operator &(NDExpr, long)
public static NDExpr operator &(NDExpr a, long b)
Parameters
Returns
operator &(NDArray, NDExpr)
public static NDExpr operator &(NDArray a, NDExpr b)
Parameters
Returns
operator &(int, NDExpr)
public static NDExpr operator &(int a, NDExpr b)
Parameters
Returns
operator &(long, NDExpr)
public static NDExpr operator &(long a, NDExpr b)
Parameters
Returns
operator |(NDExpr, NDExpr)
public static NDExpr operator |(NDExpr a, NDExpr b)
Parameters
Returns
operator |(NDExpr, NDArray)
public static NDExpr operator |(NDExpr a, NDArray b)
Parameters
Returns
operator |(NDExpr, int)
public static NDExpr operator |(NDExpr a, int b)
Parameters
Returns
operator |(NDExpr, long)
public static NDExpr operator |(NDExpr a, long b)
Parameters
Returns
operator |(NDArray, NDExpr)
public static NDExpr operator |(NDArray a, NDExpr b)
Parameters
Returns
operator |(int, NDExpr)
public static NDExpr operator |(int a, NDExpr b)
Parameters
Returns
operator |(long, NDExpr)
public static NDExpr operator |(long a, NDExpr b)
Parameters
Returns
operator /(NDExpr, NDExpr)
public static NDExpr operator /(NDExpr a, NDExpr b)
Parameters
Returns
operator /(NDExpr, NDArray)
public static NDExpr operator /(NDExpr a, NDArray b)
Parameters
Returns
operator /(NDExpr, double)
public static NDExpr operator /(NDExpr a, double b)
Parameters
Returns
operator /(NDExpr, int)
public static NDExpr operator /(NDExpr a, int b)
Parameters
Returns
operator /(NDExpr, long)
public static NDExpr operator /(NDExpr a, long b)
Parameters
Returns
operator /(NDArray, NDExpr)
public static NDExpr operator /(NDArray a, NDExpr b)
Parameters
Returns
operator /(double, NDExpr)
public static NDExpr operator /(double a, NDExpr b)
Parameters
Returns
operator /(int, NDExpr)
public static NDExpr operator /(int a, NDExpr b)
Parameters
Returns
operator /(long, NDExpr)
public static NDExpr operator /(long a, NDExpr b)
Parameters
Returns
operator ^(NDExpr, NDExpr)
public static NDExpr operator ^(NDExpr a, NDExpr b)
Parameters
Returns
operator ^(NDExpr, NDArray)
public static NDExpr operator ^(NDExpr a, NDArray b)
Parameters
Returns
operator ^(NDExpr, int)
public static NDExpr operator ^(NDExpr a, int b)
Parameters
Returns
operator ^(NDExpr, long)
public static NDExpr operator ^(NDExpr a, long b)
Parameters
Returns
operator ^(NDArray, NDExpr)
public static NDExpr operator ^(NDArray a, NDExpr b)
Parameters
Returns
operator ^(int, NDExpr)
public static NDExpr operator ^(int a, NDExpr b)
Parameters
Returns
operator ^(long, NDExpr)
public static NDExpr operator ^(long a, NDExpr b)
Parameters
Returns
implicit operator NDExpr(NDArray)
public static implicit operator NDExpr(NDArray array)
Parameters
arrayNDArray
Returns
implicit operator NDExpr(double)
public static implicit operator NDExpr(double value)
Parameters
valuedouble
Returns
implicit operator NDExpr(int)
public static implicit operator NDExpr(int value)
Parameters
valueint
Returns
implicit operator NDExpr(long)
public static implicit operator NDExpr(long value)
Parameters
valuelong
Returns
implicit operator NDExpr(float)
public static implicit operator NDExpr(float value)
Parameters
valuefloat
Returns
operator !(NDExpr)
public static NDExpr operator !(NDExpr a)
Parameters
aNDExpr
Returns
operator %(NDExpr, NDExpr)
public static NDExpr operator %(NDExpr a, NDExpr b)
Parameters
Returns
operator %(NDExpr, NDArray)
public static NDExpr operator %(NDExpr a, NDArray b)
Parameters
Returns
operator %(NDExpr, double)
public static NDExpr operator %(NDExpr a, double b)
Parameters
Returns
operator %(NDExpr, int)
public static NDExpr operator %(NDExpr a, int b)
Parameters
Returns
operator %(NDExpr, long)
public static NDExpr operator %(NDExpr a, long b)
Parameters
Returns
operator %(NDArray, NDExpr)
public static NDExpr operator %(NDArray a, NDExpr b)
Parameters
Returns
operator %(double, NDExpr)
public static NDExpr operator %(double a, NDExpr b)
Parameters
Returns
operator %(int, NDExpr)
public static NDExpr operator %(int a, NDExpr b)
Parameters
Returns
operator %(long, NDExpr)
public static NDExpr operator %(long a, NDExpr b)
Parameters
Returns
operator *(NDExpr, NDExpr)
public static NDExpr operator *(NDExpr a, NDExpr b)
Parameters
Returns
operator *(NDExpr, NDArray)
public static NDExpr operator *(NDExpr a, NDArray b)
Parameters
Returns
operator *(NDExpr, double)
public static NDExpr operator *(NDExpr a, double b)
Parameters
Returns
operator *(NDExpr, int)
public static NDExpr operator *(NDExpr a, int b)
Parameters
Returns
operator *(NDExpr, long)
public static NDExpr operator *(NDExpr a, long b)
Parameters
Returns
operator *(NDArray, NDExpr)
public static NDExpr operator *(NDArray a, NDExpr b)
Parameters
Returns
operator *(double, NDExpr)
public static NDExpr operator *(double a, NDExpr b)
Parameters
Returns
operator *(int, NDExpr)
public static NDExpr operator *(int a, NDExpr b)
Parameters
Returns
operator *(long, NDExpr)
public static NDExpr operator *(long a, NDExpr b)
Parameters
Returns
operator ~(NDExpr)
public static NDExpr operator ~(NDExpr a)
Parameters
aNDExpr
Returns
operator -(NDExpr, NDExpr)
public static NDExpr operator -(NDExpr a, NDExpr b)
Parameters
Returns
operator -(NDExpr, NDArray)
public static NDExpr operator -(NDExpr a, NDArray b)
Parameters
Returns
operator -(NDExpr, double)
public static NDExpr operator -(NDExpr a, double b)
Parameters
Returns
operator -(NDExpr, int)
public static NDExpr operator -(NDExpr a, int b)
Parameters
Returns
operator -(NDExpr, long)
public static NDExpr operator -(NDExpr a, long b)
Parameters
Returns
operator -(NDArray, NDExpr)
public static NDExpr operator -(NDArray a, NDExpr b)
Parameters
Returns
operator -(double, NDExpr)
public static NDExpr operator -(double a, NDExpr b)
Parameters
Returns
operator -(int, NDExpr)
public static NDExpr operator -(int a, NDExpr b)
Parameters
Returns
operator -(long, NDExpr)
public static NDExpr operator -(long a, NDExpr b)
Parameters
Returns
operator -(NDExpr)
public static NDExpr operator -(NDExpr a)
Parameters
aNDExpr