relationalai.std.math.isclose()
isclose(x: Number|Producer, y: Number|Producer, tolerance: Number|Producer = 1e-9) -> Expression
Filters pairs of numbers to those that are approximately equal by comparing their absolute difference to a specified tolerance.
If x
, y
, or tolerance
is a Producer
, isclose()
filters out any non-numeric values from the producer.
Must be called in a rule or query context.
Parameters
Section titled “Parameters”Name | Type | Description |
---|---|---|
x | Producer or Python Number object | The first number to compare. |
y | Producer or Python Number object | The second number to compare. |
tolerance | Producer or Python Number object | The maximum difference allowed between x and y . (Default: 1e-9 ) |
Returns
Section titled “Returns”An Expression
object.
Example
Section titled “Example”Use isclose()
to filter pairs of numbers that are approximately equal:
import relationalai as raifrom relationalai.std import math
# =====# SETUP# =====
model = rai.Model("MyModel")Person = model.Type("Person")
with model.rule(): Person.add(id=1).set(height_cm=170) Person.add(id=2).set(height_cm=180) Person.add(id=3).set(height_cm=180.0001)
# =======# EXAMPLE# =======
# Find pairs of people with approximately equal heights.with model.query() as select: person1, person2 = Person(), Person() person1 < person2 # Ensure unique pairs math.isclose(person1.height_cm, person2.height_cm, tolerance=1e-3) response = select(person1.id, person2.id)
print(response.results)# id1 id2# 0 2 3