[Issue 4726] writeln(0.0 / 0.0) prints -nan

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Aug 26 00:50:54 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4726



--- Comment #2 from bearophile_hugs at eml.cc 2010-08-26 00:50:46 PDT ---
OK. Thank you for your answer. I will not reopen this bug because it's a minor
thing, but I don't like it because:

>From a purely ideal point of view, a NaN isn't a number, so it can't be
positive or negative, it's "undefined", that is not negative.

In 0.0/0.0 both values are positive, so if you extend the semantics of division
between two positive real numbers, the result can't be negative.

And because no other language I know of (including D printf) seems to print a
"negative nan" in that situation:

-------------------

In D (2.048) if you run this program:

import std.stdio;
void main() {
  printf("%f\n", 0.0 / 0.0);
}


It prints "nan".

-------------------

This D1 program (dmd 1.026):

import std.stdio;
void main() {
  writefln("%f", 0.0 / 0.0);
}


Prints "nan".

-------------------

In C if you run this program:

#include "stdio.h"
int main() {
  printf("%f\n", 0.0 / 0.0);
  return 0;
}

It prints "nan".

-------------------

In Scala language, this program:

import java.io.{BufferedReader, InputStreamReader}

object Main {
  def main(args: Array[String]) {
      System.out.println(0.0 / 0.0);
  }
}

Prints "NaN".

-------------------

In Haskell (that is a quite mathematical-oriented language), this program:

main = do
   putStr  (show (0.0 / 0.0))


Prints "NaN".

-------------------

In F#, this program:

open System
do
    System.Console.Write(0.0 / 0.0)

Prints "NaN".

-------------------

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list