From 7056ceda6727d1725645ab046fee4c0d6bb15501 Mon Sep 17 00:00:00 2001 From: Araq Date: Fri, 30 Aug 2013 12:24:54 +0200 Subject: float64 is now an alias to 'float'; fixes #545 --- lib/system.nim | 18 ++++++++++++++++-- lib/system/sysio.nim | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/system.nim b/lib/system.nim index 08e4c367b..98c79de5f 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -28,7 +28,9 @@ type uint64* {.magic: UInt64.} ## unsigned 64 bit integer type float* {.magic: Float.} ## default floating point type float32* {.magic: Float32.} ## 32 bit floating point type - float64* {.magic: Float64.} ## 64 bit floating point type + float64* {.magic: Float.} ## 64 bit floating point type + +# 'float64' is now an alias to 'float'; this solves many problems type # we need to start a new type section here, so that ``0`` can have a type bool* {.magic: Bool.} = enum ## built-in boolean type @@ -627,6 +629,14 @@ proc `<%` *(x, y: Int64): bool {.magic: "LtU64", noSideEffect.} # floating point operations: + +proc `+` *(x: float32): float32 {.magic: "UnaryPlusF64", noSideEffect.} +proc `-` *(x: float32): float32 {.magic: "UnaryMinusF64", noSideEffect.} +proc `+` *(x, y: float32): float32 {.magic: "AddF64", noSideEffect.} +proc `-` *(x, y: float32): float32 {.magic: "SubF64", noSideEffect.} +proc `*` *(x, y: float32): float32 {.magic: "MulF64", noSideEffect.} +proc `/` *(x, y: float32): float32 {.magic: "DivF64", noSideEffect.} + proc `+` *(x: float): float {.magic: "UnaryPlusF64", noSideEffect.} proc `-` *(x: float): float {.magic: "UnaryMinusF64", noSideEffect.} proc `+` *(x, y: float): float {.magic: "AddF64", noSideEffect.} @@ -635,6 +645,10 @@ proc `*` *(x, y: float): float {.magic: "MulF64", noSideEffect.} proc `/` *(x, y: float): float {.magic: "DivF64", noSideEffect.} ## computes the floating point division +proc `==` *(x, y: float32): bool {.magic: "EqF64", noSideEffect.} +proc `<=` *(x, y: float32): bool {.magic: "LeF64", noSideEffect.} +proc `<` *(x, y: float32): bool {.magic: "LtF64", noSideEffect.} + proc `==` *(x, y: float): bool {.magic: "EqF64", noSideEffect.} proc `<=` *(x, y: float): bool {.magic: "LeF64", noSideEffect.} proc `<` *(x, y: float): bool {.magic: "LtF64", noSideEffect.} @@ -1985,7 +1999,7 @@ when not defined(JS): #and not defined(NimrodVM): ## `content` completely to the file and closes the file afterwards. ## Raises an IO exception in case of an error. - proc write*(f: TFile, r: float) {.tags: [FWriteIO].} + proc write*(f: TFile, r: float32) {.tags: [FWriteIO].} proc write*(f: TFile, i: int) {.tags: [FWriteIO].} proc write*(f: TFile, i: biggestInt) {.tags: [FWriteIO].} proc write*(f: TFile, r: biggestFloat) {.tags: [FWriteIO].} diff --git a/lib/system/sysio.nim b/lib/system/sysio.nim index 5407e0618..a877f8b28 100644 --- a/lib/system/sysio.nim +++ b/lib/system/sysio.nim @@ -91,7 +91,7 @@ proc write(f: TFile, i: biggestInt) = proc write(f: TFile, b: bool) = if b: write(f, "true") else: write(f, "false") -proc write(f: TFile, r: float) = fprintf(f, "%g", r) +proc write(f: TFile, r: float32) = fprintf(f, "%g", r) proc write(f: TFile, r: biggestFloat) = fprintf(f, "%g", r) proc write(f: TFile, c: Char) = putc(c, f) -- cgit 1.4.1-2-gfad0