class_docstr: Interface specification for variable type instances.
  
  A :term:`Type` instance is mainly responsible for two things:
  
  - creating `Variable` instances (conventionally, `__call__` does this), and
  
  - filtering a value assigned to a `Variable` so that the value
    conforms to restrictions imposed by the type (also known as
    casting, this is done by `filter`).
class_docstr_tok: ["Interface","specification","for","variable","type","instances",".","A",":","term",":","`","Type","`","instance","is","mainly","responsible","for","two","things",":","-","creating","`","Variable","`","instances","(","conventionally",",","`","__call__","`","does","this",")",",","and","-","filtering","a","value","assigned","to","a","`","Variable","`","so","that","the","value","conforms","to","restrictions","imposed","by","the","type","(","also","known","as","casting",",","this","is","done","by","`","filter","`",")","."]
docstr: Return ``True`` if `a` and `b` can be considered approximately equal.
  
  This function is used by PyTensor debugging tools to decide
  whether two values are equivalent, admitting a certain amount
  of numerical instability. For example, for floating-point
  numbers this function should be an approximate comparison.
  
  By default, this does an exact comparison.
  
  Parameters
  ----------
  a: array-like
      A potential value for a `Variable` of this `Type`.
  b: array-like
      A potential value for a `Variable` of this `Type`.
  
  Returns
  -------
  bool
docstr_tok: ["Return","``","True","``","if","`","a","`","and","`","b","`","can","be","considered","approximately","equal",".","This","function","is","used","by","PyTensor","debugging","tools","to","decide","whether","two","values","are","equivalent",",","admitting","a","certain","amount","of","numerical","instability",".","For","example",",","for","floating-point","numbers","this","function","should","be","an","approximate","comparison",".","By","default",",","this","does","an","exact","comparison",".","Parameters","--","--","--","--","--","a",":","array-like","A","potential","value","for","a","`","Variable","`","of","this","`","Type","`",".","b",":","array-like","A","potential","value","for","a","`","Variable","`","of","this","`","Type","`",".","Returns","--","--","--","-","bool"]
code: def values_eq_approx(cls, a: D, b: D) -> bool:
      """Return ``True`` if `a` and `b` can be considered approximately equal.
  
      This function is used by PyTensor debugging tools to decide
      whether two values are equivalent, admitting a certain amount
      of numerical instability. For example, for floating-point
      numbers this function should be an approximate comparison.
  
      By default, this does an exact comparison.
  
      Parameters
      ----------
      a: array-like
          A potential value for a `Variable` of this `Type`.
      b: array-like
          A potential value for a `Variable` of this `Type`.
  
      Returns
      -------
      bool
  
      """
      return cls.values_eq(a, b)
  
imports: from abc import abstractmethod
  from typing import Any, Generic, Optional, TypeVar, Union
  from typing_extensions import TypeAlias
  from pytensor.graph import utils
  from pytensor.graph.basic import Constant, Variable
  from pytensor.graph.utils import MetaObject
label_desc: Use image node_id 13 for calling the Type obj's underlying member method code with example usage: obj.values_eq_approx(cls, a, b) and returns: cls