mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
Added float math
This commit is contained in:
parent
e9f5814c6d
commit
005087a652
@ -1,21 +1,32 @@
|
||||
# Copyright (c) 2023 Kyle Schouviller (https://github.com/kyle0654)
|
||||
|
||||
import numpy as np
|
||||
from typing import Literal
|
||||
|
||||
from invokeai.app.invocations.primitives import IntegerOutput
|
||||
from invokeai.app.invocations.primitives import IntegerOutput, FloatOutput
|
||||
|
||||
from .baseinvocation import BaseInvocation, FieldDescriptions, InputField, InvocationContext, invocation
|
||||
|
||||
|
||||
@invocation("add", title="Add Integers", tags=["math", "add"], category="math", version="1.0.0")
|
||||
class AddInvocation(BaseInvocation):
|
||||
"""Adds two numbers"""
|
||||
"""Adds two integer numbers"""
|
||||
|
||||
a: int = InputField(default=0, description=FieldDescriptions.num_1)
|
||||
b: int = InputField(default=0, description=FieldDescriptions.num_2)
|
||||
|
||||
def invoke(self, context: InvocationContext) -> IntegerOutput:
|
||||
return IntegerOutput(value=self.a + self.b)
|
||||
|
||||
@invocation("add_float", title="Add Floats", tags=["math", "add", "float"], category="math", version="1.0.0")
|
||||
class AddFloatInvocation(BaseInvocation):
|
||||
"""Adds two float numbers"""
|
||||
|
||||
a: float = InputField(default=0, description=FieldDescriptions.num_1)
|
||||
b: float = InputField(default=0, description=FieldDescriptions.num_2)
|
||||
|
||||
def invoke(self, context: InvocationContext) -> FloatOutput:
|
||||
return FloatOutput(value=self.a + self.b)
|
||||
|
||||
|
||||
@invocation("sub", title="Subtract Integers", tags=["math", "subtract"], category="math", version="1.0.0")
|
||||
@ -27,6 +38,16 @@ class SubtractInvocation(BaseInvocation):
|
||||
|
||||
def invoke(self, context: InvocationContext) -> IntegerOutput:
|
||||
return IntegerOutput(value=self.a - self.b)
|
||||
|
||||
@invocation("sub_float", title="Subtract Floats", tags=["math", "subtract", "float"], category="math", version="1.0.0")
|
||||
class SubtractFloatInvocation(BaseInvocation):
|
||||
"""Subtracts two float numbers"""
|
||||
|
||||
a: float = InputField(default=0, description=FieldDescriptions.num_1)
|
||||
b: float = InputField(default=0, description=FieldDescriptions.num_2)
|
||||
|
||||
def invoke(self, context: InvocationContext) -> FloatOutput:
|
||||
return FloatOutput(value=self.a - self.b)
|
||||
|
||||
|
||||
@invocation("mul", title="Multiply Integers", tags=["math", "multiply"], category="math", version="1.0.0")
|
||||
@ -39,6 +60,16 @@ class MultiplyInvocation(BaseInvocation):
|
||||
def invoke(self, context: InvocationContext) -> IntegerOutput:
|
||||
return IntegerOutput(value=self.a * self.b)
|
||||
|
||||
@invocation("mul_float", title="Multiply Floats", tags=["math", "multiply", "float"], category="math", version="1.0.0")
|
||||
class MultiplyFloatInvocation(BaseInvocation):
|
||||
"""Multiplies two float numbers"""
|
||||
|
||||
a: float = InputField(default=0, description=FieldDescriptions.num_1)
|
||||
b: float = InputField(default=0, description=FieldDescriptions.num_2)
|
||||
|
||||
def invoke(self, context: InvocationContext) -> FloatOutput:
|
||||
return FloatOutput(value=self.a * self.b)
|
||||
|
||||
|
||||
@invocation("div", title="Divide Integers", tags=["math", "divide"], category="math", version="1.0.0")
|
||||
class DivideInvocation(BaseInvocation):
|
||||
@ -50,6 +81,16 @@ class DivideInvocation(BaseInvocation):
|
||||
def invoke(self, context: InvocationContext) -> IntegerOutput:
|
||||
return IntegerOutput(value=int(self.a / self.b))
|
||||
|
||||
@invocation("div_float", title="Divide Floats", tags=["math", "divide", "float"], category="math", version="1.0.0")
|
||||
class DivideFloatInvocation(BaseInvocation):
|
||||
"""Divides two float numbers"""
|
||||
|
||||
a: float = InputField(default=0, description=FieldDescriptions.num_1)
|
||||
b: float = InputField(default=0, description=FieldDescriptions.num_2)
|
||||
|
||||
def invoke(self, context: InvocationContext) -> FloatOutput:
|
||||
return FloatOutput(value=self.a / self.b)
|
||||
|
||||
|
||||
@invocation("rand_int", title="Random Integer", tags=["math", "random"], category="math", version="1.0.0")
|
||||
class RandomIntInvocation(BaseInvocation):
|
||||
@ -60,3 +101,49 @@ class RandomIntInvocation(BaseInvocation):
|
||||
|
||||
def invoke(self, context: InvocationContext) -> IntegerOutput:
|
||||
return IntegerOutput(value=np.random.randint(self.low, self.high))
|
||||
|
||||
|
||||
@invocation("float_to_int", title="Float to Integer", tags=["math", "convert"], category="math", version="1.0.0")
|
||||
class FloatToIntInvocation(BaseInvocation):
|
||||
"""Converts a float to an integer."""
|
||||
|
||||
value: float = InputField(default=0, description="The float value")
|
||||
method: Literal["Floor", "Ceiling"] = InputField(default="round", description="The method to use for conversion")
|
||||
|
||||
def invoke(self, context: InvocationContext) -> IntegerOutput:
|
||||
if self.method == "Floor":
|
||||
return IntegerOutput(value=np.floor(self.value))
|
||||
else:
|
||||
return IntegerOutput(value=np.ceil(self.value))
|
||||
|
||||
|
||||
@invocation("round", title="Round Float", tags=["math", "round"], category="math", version="1.0.0")
|
||||
class RoundInvocation(BaseInvocation):
|
||||
"""Rounds a float to a specified number of decimal places."""
|
||||
|
||||
value: float = InputField(default=0, description="The float value")
|
||||
decimals: int = InputField(default=0, description="The number of decimal places")
|
||||
|
||||
def invoke(self, context: InvocationContext) -> FloatOutput:
|
||||
return FloatOutput(value=round(self.value, self.decimals))
|
||||
|
||||
|
||||
@invocation("abs", title="Absolute Value", tags=["math", "abs"], category="math", version="1.0.0")
|
||||
class AbsoluteValueInvocation(BaseInvocation):
|
||||
"""Returns the absolute value of a number."""
|
||||
|
||||
value: float = InputField(default=0, description="The float value")
|
||||
|
||||
def invoke(self, context: InvocationContext) -> FloatOutput:
|
||||
return FloatOutput(value=abs(self.value))
|
||||
|
||||
|
||||
@invocation("mod", title="Modulus", tags=["math", "modulus"], category="math", version="1.0.0")
|
||||
class ModulusInvocation(BaseInvocation):
|
||||
"""Returns the modulus of two numbers."""
|
||||
|
||||
a: int = InputField(default=0, description=FieldDescriptions.num_1)
|
||||
b: int = InputField(default=0, description=FieldDescriptions.num_2)
|
||||
|
||||
def invoke(self, context: InvocationContext) -> IntegerOutput:
|
||||
return IntegerOutput(value=self.a % self.b)
|
Loading…
Reference in New Issue
Block a user