Skip to content

Commit

Permalink
update with new mir-core
Browse files Browse the repository at this point in the history
  • Loading branch information
9il committed Dec 29, 2018
1 parent 545fd82 commit feedda2
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 36 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ docs.json
build/
*.exe
*.lib
mir-random-test-default
6 changes: 3 additions & 3 deletions dub.sdl
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ description "Dlang Random Number Generators"
copyright "Copyright © 2016-2018, Ilya Yaroshenko (default), see also copyright per file"
license "BSL-1.0 (default), Apache License, Version 2.0 for PCG"

dependency "mir-core" version="~>0.0.6"
dependency "mir-core" version="~>0.2.0"
dependency "mir-linux-kernel" version="~>1.0.0" platform="linux"
libs "advapi32" platform="windows"

configuration "default" {
dependency "mir-algorithm" version=">=3.0.2" optional=true
dependency "mir-algorithm" version="~>3.2.1" optional=true
}

configuration "minimal" {
}

configuration "extended" {
dependency "mir-algorithm" version=">=3.0.2"
dependency "mir-algorithm" version="~>3.2.1"
}

buildType "unittest" {
Expand Down
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
project('mir-random', 'd', version : '2.1.1', license: 'BSL-1.0')
project('mir-random', 'd', version : '2.2.0', license: 'BSL-1.0')

mir_core_dep = dependency('mir-core', fallback : ['mir-core', 'mir_core_dep'])

Expand Down
2 changes: 1 addition & 1 deletion source/mir/random/algorithm.d
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ struct VitterStrides
sizediff_t opCall(G)(scope ref G gen)
{
pragma(inline, false);
import std.math: LN2;
import mir.math.constant: LN2;
import mir.random;
size_t S;
switch(n)
Expand Down
20 changes: 10 additions & 10 deletions source/mir/random/flex/internal/area.d
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ version(Flex_logging)
import std.experimental.logger;
}

import std.math: signbit, frexp, LOG2E, isFinite;
import mir.math.common;
import std.math: isFinite;
import mir.math;
import mir.random.flex.internal.types;

/*
Expand All @@ -29,7 +29,7 @@ version(unittest)
bool fpEqual(S)(in S a, in S b) @nogc nothrow pure @safe
if (isFloatingPoint!S)
{
import std.math : feqrel;
import mir.math : feqrel;
return feqrel(a, b) >= S.mant_dig - 2;
}
}
Expand Down Expand Up @@ -163,7 +163,7 @@ nothrow pure @safe version(mir_random_test) unittest
// test undefined type
@nogc nothrow pure @safe version(mir_random_test) unittest
{
import std.math : fabs, log;
import mir.math : fabs, log;
import mir.random.flex.internal.transformations : transformInterval;
import mir.random.flex.internal.types : determineType, FunType;
import std.meta : AliasSeq;
Expand Down Expand Up @@ -224,10 +224,10 @@ nothrow pure @safe version(mir_random_test) unittest
assert(t == FunType.T4a);
determineSqueezeAndHat(iv);

assert(approxEqual(iv.hat, res[i][0]));
assert(approxEqual!S(iv.hat, res[i][0]));

if (std.math.isFinite(iv.squeeze.slope))
assert(iv.squeeze.approxEqual(res[i][1]));
assert(iv.squeeze.approxEqual!S(res[i][1]));
else
assert(std.math.isNaN(res[i][1].slope));
}
Expand Down Expand Up @@ -415,7 +415,7 @@ static if (is(typeof({ import mir.ndslice.slice; })))
import mir.functional: refTuple;
import mir.random.flex.internal.transformations : transformInterval;
import mir.random.flex.internal.types : determineType;
import std.math: approxEqual;
import mir.math: approxEqual;
import std.meta : AliasSeq;

alias S = float;
Expand Down Expand Up @@ -508,7 +508,7 @@ static if (is(typeof({ import mir.ndslice.slice; })))
import mir.functional: refTuple;
import mir.random.flex.internal.transformations : transformInterval;
import mir.random.flex.internal.types : determineType;
import std.math: approxEqual;
import mir.math: approxEqual;
import std.meta : AliasSeq;

alias S = double;
Expand Down Expand Up @@ -668,7 +668,7 @@ static if (is(typeof({ import mir.ndslice.slice; })))
{
version(Windows)
{
import std.math : nextDown, nextUp;
import mir.math : nextDown, nextUp;
logf("got: %a", iv.squeezeArea);
logf("-- up: %a, down: %a", iv.squeezeArea.nextUp, iv.squeezeArea.nextDown);
logf("exp: %a", sqs[i][j]);
Expand Down Expand Up @@ -764,7 +764,7 @@ static if (is(typeof({ import mir.ndslice.slice; })))

foreach (S; AliasSeq!(float, double, real))
{
import std.math : PI;
import mir.math : PI;

S sqrt2PI = sqrt(2 * PI);
auto f0 = (S x) => 1 / (exp(x * x / 2) * sqrt2PI);
Expand Down
3 changes: 1 addition & 2 deletions source/mir/random/flex/internal/transformations.d
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ version(Flex_logging)
import std.experimental.logger : logf;
}

import std.math: signbit, frexp, LOG2E, isFinite;
import mir.math.common;
import mir.math;

/**
Create a c-transformation, based on a function and it's first two derivatives
Expand Down
5 changes: 2 additions & 3 deletions source/mir/random/flex/internal/types.d
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ nothrow pure @safe version(mir_random_test) unittest
// test sin(x)
nothrow pure @safe version(mir_random_test) unittest
{
import std.math: PI;
import mir.math: PI;
// due to numerical errors a small padding must be added
// see e.g. https://gist.github.com/wilzbach/3d27d06b55821aa9795deb15d4d47679
import mir.math.common : cos, sin;
Expand Down Expand Up @@ -529,8 +529,7 @@ LinearFun!S linearFun(S)(S slope, S y, S a)

nothrow pure @safe version(mir_random_test) unittest
{
import mir.math.common : cos;
import std.math : PI, approxEqual;
import mir.math : cos, PI, approxEqual;
import std.meta : AliasSeq;
foreach (S; AliasSeq!(float, double, real))
{
Expand Down
14 changes: 7 additions & 7 deletions source/mir/random/flex/package.d
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ Can be used to sample from the distribution.
///
version(mir_random_test) unittest
{
import std.math : approxEqual;
import mir.math : approxEqual;
import std.meta : AliasSeq;
import mir.random.engine.xorshift : Xorshift;
auto gen = Xorshift(42);
Expand All @@ -248,9 +248,9 @@ version(mir_random_test) unittest
version(X86_64) version(mir_random_test) unittest
{
import std.meta : AliasSeq;
import std.math : approxEqual, PI;
import std.math : approxEqual;
import mir.random.engine.xorshift : Xorshift;
import mir.math.common : exp, sqrt;
import mir.math : exp, sqrt, PI;
foreach (S; AliasSeq!(float, double, real))
{
S sqrt2PI = sqrt(2 * PI);
Expand Down Expand Up @@ -299,7 +299,7 @@ version(X86_64) version(mir_random_test) unittest
version(X86_64) version(mir_random_test) unittest
{
import mir.math.common;
import std.math : approxEqual;
import mir.math : approxEqual;
import std.meta : AliasSeq;
import mir.random.engine.xorshift : Xorshift;
foreach (S; AliasSeq!(float, double, real))
Expand Down Expand Up @@ -468,7 +468,7 @@ version(X86_64) version(DigitalMars)
version(mir_random_test) unittest
{
import mir.math.common;
import std.math : approxEqual;
import mir.math : approxEqual;
import std.meta : AliasSeq;
import mir.random.engine.xorshift : Xorshift;
//foreach (S; AliasSeq!(double, real))
Expand Down Expand Up @@ -515,7 +515,7 @@ version(X86_64) version(DigitalMars)
version(mir_random_test) unittest
{
import mir.math.common;
import std.math : approxEqual;
import mir.math : approxEqual;
import std.meta : AliasSeq;
import mir.random.engine.xorshift : Xorshift;

Expand Down Expand Up @@ -645,7 +645,7 @@ body
import mir.ndslice.sorting : sort;
import std.container.array: Array;
import std.container.binaryheap: BinaryHeap;
import std.math: nextDown;
import mir.math: nextDown;

alias Sum = Summator!(S, Summation.precise);

Expand Down
16 changes: 7 additions & 9 deletions source/mir/random/variable.d
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,7 @@ module mir.random.variable;
import mir.random;
import std.traits;

import std.math : nextDown, isFinite, LN2;

import mir.math.common;
import mir.math;

private T sumSquares(T)(const T a, const T b)
{
Expand Down Expand Up @@ -196,8 +194,8 @@ struct UniformVariable(T)
this(T a, T b)
{
assert(a < b, "constraint: a < b");
assert(a.isFinite);
assert(b.isFinite);
assert(a.fabs < T.infinity);
assert(b.fabs < T.infinity);
_a = a;
_b = b;
}
Expand Down Expand Up @@ -248,7 +246,7 @@ version (D_Ddoc)
///
@nogc nothrow @safe version(mir_random_test) unittest
{
import std.math : nextDown;
import mir.math : nextDown;
auto gen = Random(unpredictableSeed);
auto rv = uniformVar(-8.0, 10); // [-8, 10)
static assert(isRandomVariable!(typeof(rv)));
Expand All @@ -260,7 +258,7 @@ version (D_Ddoc)
///
@nogc nothrow @safe version(mir_random_test) unittest
{
import std.math : nextDown;
import mir.math : nextDown;
auto gen = Random(unpredictableSeed);
auto rv = UniformVariable!double(-8, 10); // [-8, 10)
foreach(_; 0..1000)
Expand All @@ -273,7 +271,7 @@ version (D_Ddoc)
///
@nogc nothrow @safe version(mir_random_test) unittest
{
import std.math : nextDown;
import mir.math : nextDown;
Random* gen = threadLocalPtr!Random;
auto rv = UniformVariable!double(-8, 10); // [-8, 10)
auto x = rv(gen); // random variable
Expand Down Expand Up @@ -1434,7 +1432,7 @@ struct PoissonVariable(T)
///
enum isRandomVariable = true;

import std.math : E;
import mir.math.constant : E;
private T rate = 1;
private T temp1 = 1 / E;
T a = void, b = void;
Expand Down

0 comments on commit feedda2

Please sign in to comment.