isclose()#
relationalai.std.math
#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#
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#
An Expression
object.
Example#
Use isclose()
to filter pairs of numbers that are approximately equal:
#import relationalai as rai
from 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