mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 14:00:35 +00:00
fixes #5966
This commit is contained in:
committed by
Andreas Rumpf
parent
62ffac25dc
commit
a6e0494a6f
@@ -235,7 +235,7 @@ when not defined(JS):
|
||||
x = x and (not (1'u64 shl (64'u64-12'u64-e) - 1'u64))
|
||||
|
||||
result = cast[float64](x)
|
||||
|
||||
|
||||
proc truncImpl(f: float32): float32 =
|
||||
const
|
||||
mask : uint32 = 0xFF
|
||||
@@ -255,7 +255,7 @@ when not defined(JS):
|
||||
x = x and (not (1'u32 shl (32'u32-9'u32-e) - 1'u32))
|
||||
|
||||
result = cast[float32](x)
|
||||
|
||||
|
||||
proc trunc*(x: float64): float64 =
|
||||
if classify(x) in {fcZero, fcNegZero, fcNan, fcInf, fcNegInf}: return x
|
||||
result = truncImpl(x)
|
||||
@@ -413,10 +413,13 @@ proc `mod`*[T: float32|float64](x, y: T): T =
|
||||
{.pop.}
|
||||
{.pop.}
|
||||
|
||||
proc `^`*[T](x, y: T): T =
|
||||
proc `^`*[T](x: T, y: Natural): T =
|
||||
## Computes ``x`` to the power ``y`. ``x`` must be non-negative, use
|
||||
## `pow <#pow,float,float>` for negative exponents.
|
||||
assert y >= T(0)
|
||||
when compiles(y >= T(0)):
|
||||
assert y >= T(0)
|
||||
else:
|
||||
assert T(y) >= T(0)
|
||||
var (x, y) = (x, y)
|
||||
result = 1
|
||||
|
||||
|
||||
@@ -123,7 +123,8 @@ when not defined(nimscript):
|
||||
proc getMil(t: Time): int {.importcpp: "getTime", nodecl.}
|
||||
randomize(getMil times.getTime())
|
||||
else:
|
||||
randomize(int times.getTime())
|
||||
let time = int(times.epochTime() * 1_000_000_000)
|
||||
randomize(time)
|
||||
|
||||
{.pop.}
|
||||
|
||||
|
||||
@@ -1,4 +1,15 @@
|
||||
import math, random
|
||||
discard """
|
||||
action: run
|
||||
output: '''[Suite] random int
|
||||
|
||||
[Suite] random float
|
||||
|
||||
[Suite] ^
|
||||
|
||||
'''
|
||||
"""
|
||||
|
||||
import math, random, os
|
||||
import unittest
|
||||
import sets
|
||||
|
||||
@@ -26,6 +37,7 @@ suite "random int":
|
||||
test "randomize() again gives new numbers":
|
||||
randomize()
|
||||
var rand1 = random(1000000)
|
||||
os.sleep(200)
|
||||
randomize()
|
||||
var rand2 = random(1000000)
|
||||
check rand1 != rand2
|
||||
@@ -55,7 +67,16 @@ suite "random float":
|
||||
test "randomize() again gives new numbers":
|
||||
randomize()
|
||||
var rand1:float = random(1000000.0)
|
||||
os.sleep(200)
|
||||
randomize()
|
||||
var rand2:float = random(1000000.0)
|
||||
check rand1 != rand2
|
||||
|
||||
suite "^":
|
||||
test "compiles for valid types":
|
||||
check: compiles(5 ^ 2)
|
||||
check: compiles(5.5 ^ 2)
|
||||
check: compiles(5.5 ^ 2.int8)
|
||||
check: compiles(5.5 ^ 2.uint)
|
||||
check: compiles(5.5 ^ 2.uint8)
|
||||
check: not compiles(5.5 ^ 2.2)
|
||||
Reference in New Issue
Block a user