summary refs log tree commit diff stats
path: root/compiler/rodutils.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rodutils.nim')
-rwxr-xr-xcompiler/rodutils.nim27
1 files changed, 27 insertions, 0 deletions
diff --git a/compiler/rodutils.nim b/compiler/rodutils.nim
new file mode 100755
index 000000000..dad5d679f
--- /dev/null
+++ b/compiler/rodutils.nim
@@ -0,0 +1,27 @@
+#
+#
+#           The Nimrod Compiler
+#        (c) Copyright 2011 Andreas Rumpf
+#
+#    See the file "copying.txt", included in this
+#    distribution, for details about the copyright.
+#
+
+## Utilities for the compiler. Aim is to reduce the coupling between 
+## the compiler and the evolving stdlib.
+
+proc c_sprintf(buf, frmt: cstring) {.importc: "sprintf", nodecl, varargs.}
+
+proc ToStrMaxPrecision*(f: BiggestFloat): string = 
+  if f != f:
+    result = "NAN"
+  elif f == 0.0:
+    result = "0.0"
+  elif f == 0.5 * f:
+    if f > 0.0: result = "INF"
+    else: result = "-INF"
+  else:
+    var buf: array [0..80, char]    
+    c_sprintf(buf, "%#.16e", f) 
+    result = $buf
+