Change DurationFromDouble to return -InfiniteDuration() for all NaNs.

If NaN is produced in the arithmetic operation than the sign bit is implementation-defined and mostly irrelevant. In particular Arm and x86 produce different results.

There is no good reason to produce different results based on the sign of NaN.

PiperOrigin-RevId: 773329134
Change-Id: I8df42e90a677402550ad76f0d3dde8521e4b7725
diff --git a/absl/time/time.h b/absl/time/time.h
index 53bca90..29beaac 100644
--- a/absl/time/time.h
+++ b/absl/time/time.h
@@ -589,9 +589,10 @@
     }
     return time_internal::MakePosDoubleDuration(n);
   } else {
-    if (std::isnan(n))
-      return std::signbit(n) ? -InfiniteDuration() : InfiniteDuration();
-    if (n <= (std::numeric_limits<int64_t>::min)()) return -InfiniteDuration();
+    if (std::isnan(n)) return -InfiniteDuration();
+    if (n <= static_cast<T>((std::numeric_limits<int64_t>::min)())) {
+      return -InfiniteDuration();
+    }
     return -time_internal::MakePosDoubleDuration(-n);
   }
 }