This rule raises an issue when an equality check is made against ``++numpy.nan++``.

== Why is this an issue?

The ``++numpy.nan++`` is a floating point representation of Not a Number (NaN) used as a placeholder for undefined or missing values in numerical computations.

Equality checks of variables against ``++numpy.nan++`` in NumPy will always be ``++False++`` due to the special nature of ``++numpy.nan++``. This can lead to unexpected and incorrect results.

Instead of standard comparison the ``++numpy.isnan()++`` function should be used.

=== Code examples

==== Noncompliant code example

[source,python,diff-id=1,diff-type=noncompliant]
----
import numpy as np

x = np.nan

if x == np.nan: # Noncompliant: always False
    ...
----


==== Compliant solution

[source,python,diff-id=1,diff-type=compliant]
----
import numpy as np

x = np.nan

if np.isnan(x):
   ...
----

== Resources
=== Documentation
* NumPy API Reference - https://numpy.org/doc/stable/reference/constants.html#numpy.nan[numpy.nan]
* NumPy API Reference - https://numpy.org/doc/stable/reference/generated/numpy.isnan.html[numpy.isnan()]


ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Use 'numpy.isnan()' function instead of direct comparison.


'''
== Comments And Links
(visible only on this page)

endif::env-github,rspecator-view[]
