Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/torch7.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorliboyue <me@boyue.li>2016-03-29 10:46:15 +0300
committerliboyue <me@boyue.li>2016-03-29 10:46:15 +0300
commit7584a91f64d8ac4570365f66761a33a880780126 (patch)
tree20448fb3014543121a1fe105bc75dcb376f90339 /test
parent93b479bb93390564f8b24773a14702fc5ea43288 (diff)
Add fmod(), cfmod()
Diffstat (limited to 'test')
-rw-r--r--test/test.lua81
1 files changed, 81 insertions, 0 deletions
diff --git a/test/test.lua b/test/test.lua
index ba3149a..4dbd33f 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -701,6 +701,23 @@ function torchtest.div()
mytester:assertlt(err, precision, 'error in torch.div - scalar, non contiguous')
end
+function torchtest.fmod()
+ local m1 = torch.Tensor(10,10):uniform(-10, 10)
+ local res1 = m1:clone()
+
+ local q = 2.1
+ res1[{ {},3 }]:fmod(q)
+
+ local res2 = m1:clone()
+ for i = 1,m1:size(1) do
+ res2[{ i,3 }] = math.fmod(res2[{ i,3 }], q)
+ end
+
+ local err = (res1-res2):abs():max()
+
+ mytester:assertlt(err, precision, 'error in torch.fmod - scalar, non contiguous')
+end
+
function torchtest.mod()
local m1 = torch.Tensor(10,10):uniform(10)
local res1 = m1:clone()
@@ -1034,6 +1051,70 @@ function torchtest.cdiv() -- [res] torch.cdiv([res,] tensor1, tensor2)
mytester:assertlt(maxerr, precision, 'error in torch.cdiv - non-contiguous')
end
+function torchtest.cfmod()
+ -- contiguous
+ local m1 = torch.Tensor(10, 10, 10):uniform(-10, 10)
+ local m2 = torch.Tensor(10, 10 * 10):uniform(-3, 3)
+ local sm1 = m1[{4, {}, {}}]
+ local sm2 = m2[{4, {}}]
+ local res1 = torch.cfmod(sm1, sm2)
+ local res2 = res1:clone():zero()
+ for i = 1,sm1:size(1) do
+ for j = 1, sm1:size(2) do
+ local idx1d = (((i-1)*sm1:size(1)))+j
+ res2[i][j] = math.fmod(sm1[i][j], sm2[idx1d])
+ end
+ end
+ local err = res1:clone():zero()
+ -- find absolute error
+ for i = 1, res1:size(1) do
+ for j = 1, res1:size(2) do
+ err[i][j] = math.abs(res1[i][j] - res2[i][j])
+ end
+ end
+ -- find maximum element of error
+ local maxerr = 0
+ for i = 1, err:size(1) do
+ for j = 1, err:size(2) do
+ if err[i][j] > maxerr then
+ maxerr = err[i][j]
+ end
+ end
+ end
+ mytester:assertlt(maxerr, precision, 'error in torch.cfmod - contiguous')
+
+ -- non-contiguous
+ local m1 = torch.Tensor(10, 10, 10):uniform(-10, 10)
+ local m2 = torch.Tensor(10 * 10, 10 * 10):uniform(-3, 3)
+ local sm1 = m1[{{}, 4, {}}]
+ local sm2 = m2[{{}, 4}]
+ local res1 = torch.cfmod(sm1, sm2)
+ local res2 = res1:clone():zero()
+ for i = 1,sm1:size(1) do
+ for j = 1, sm1:size(2) do
+ local idx1d = (((i-1)*sm1:size(1)))+j
+ res2[i][j] = math.fmod(sm1[i][j], sm2[idx1d])
+ end
+ end
+ local err = res1:clone():zero()
+ -- find absolute error
+ for i = 1, res1:size(1) do
+ for j = 1, res1:size(2) do
+ err[i][j] = math.abs(res1[i][j] - res2[i][j])
+ end
+ end
+ -- find maximum element of error
+ local maxerr = 0
+ for i = 1, err:size(1) do
+ for j = 1, err:size(2) do
+ if err[i][j] > maxerr then
+ maxerr = err[i][j]
+ end
+ end
+ end
+ mytester:assertlt(maxerr, precision, 'error in torch.cfmod - non-contiguous')
+end
+
function torchtest.cmod() -- [res] torch.cmod([res,] tensor1, tensor2)
-- contiguous
local m1 = torch.Tensor(10, 10, 10):uniform(10)