Commit 4fd78c10 authored by Lukas Platz's avatar Lukas Platz
Browse files

add ift.log10, Field.log10, Linearization.log10

parent de336041
Pipeline #62667 passed with stages
in 7 minutes and 24 seconds
......@@ -32,7 +32,7 @@ __all__ = ["ntask", "rank", "master", "local_shape", "data_object", "full",
"redistribute", "default_distaxis", "is_numpy", "absmax", "norm",
"lock", "locked", "uniform_full", "transpose", "to_global_data_rw",
"ensure_not_distributed", "ensure_default_distributed",
"tanh", "conjugate", "sin", "cos", "tan",
"tanh", "conjugate", "sin", "cos", "tan", "log10",
"sinh", "cosh", "sinc", "absolute", "sign", "clip"]
......@@ -297,7 +297,7 @@ def _math_helper(x, function, out):
_current_module = sys.modules[__name__]
for f in ["sqrt", "exp", "log", "tanh", "conjugate", "sin", "cos", "tan",
"sinh", "cosh", "sinc", "absolute", "sign"]:
"sinh", "cosh", "sinc", "absolute", "sign", "log10"]:
def func(f):
def func2(x, out=None):
return _math_helper(x, f, out)
......@@ -18,9 +18,11 @@
# Data object module that uses simple numpy ndarrays.
import numpy as np
from numpy import absolute, clip, cos, cosh, empty, empty_like, exp, full, log
from numpy import ndarray as data_object
from numpy import ones, sign, sin, sinc, sinh, sqrt, tan, tanh, vdot, zeros
from numpy import empty, empty_like, ones, zeros, full
from numpy import absolute, sign, clip, vdot
from numpy import sin, cos, sinh, cosh, tan, tanh
from numpy import exp, log, log10, sqrt, sinc
from .random import Random
......@@ -34,7 +36,7 @@ __all__ = ["ntask", "rank", "master", "local_shape", "data_object", "full",
"lock", "locked", "uniform_full", "to_global_data_rw",
"ensure_not_distributed", "ensure_default_distributed",
"clip", "sin", "cos", "tan", "sinh",
"cosh", "absolute", "sign", "sinc"]
"cosh", "absolute", "sign", "sinc", "log10"]
ntask = 1
rank = 0
......@@ -682,7 +682,7 @@ for op in ["__iadd__", "__isub__", "__imul__", "__idiv__",
return func2
setattr(Field, op, func(op))
for f in ["sqrt", "exp", "log", "tanh",
for f in ["sqrt", "exp", "log", "log10", "tanh",
"sin", "cos", "tan", "cosh", "sinh",
"absolute", "sinc", "sign"]:
def func(f):
......@@ -330,6 +330,11 @@ class Linearization(object):
tmp = self._val.log()
return, makeOp(1./self._val)(self._jac))
def log10(self):
tmp = self._val.log10()
tmp2 = 1. / (self._val * np.log(10))
return, makeOp(tmp2)(self._jac))
def sinh(self):
tmp = self._val.sinh()
tmp2 = self._val.cosh()
......@@ -159,7 +159,7 @@ class Operator(metaclass=NiftyMeta):
for f in ["sqrt", "exp", "log", "tanh", "sigmoid", 'sin', 'cos', 'tan',
'sinh', 'cosh', 'absolute', 'sinc', 'one_over']:
'sinh', 'cosh', 'absolute', 'sinc', 'one_over', 'log10']:
def func(f):
def func2(self):
fa = _FunctionApplier(, f)
......@@ -389,7 +389,7 @@ def domain_union(domains):
_current_module = sys.modules[__name__]
for f in ["sqrt", "exp", "log", "tanh", "sigmoid",
for f in ["sqrt", "exp", "log", "log10", "tanh", "sigmoid",
"conjugate", 'sin', 'cos', 'tan', 'sinh', 'cosh',
'absolute', 'one_over', 'sinc']:
def func(f):
......@@ -329,7 +329,7 @@ def test_emptydomain():
@pmp('dom', [ift.RGSpace((8,), harmonic=True), ()])
@pmp('func', [
"exp", "log", "sin", "cos", "tan", "sinh", "cosh", "sinc", "absolute",
"sign", "log10"
def test_funcs(num, dom, func):
num = 5
......@@ -54,7 +54,7 @@ def test_special_gradients():
@pmp('f', [
'log', 'exp', 'sqrt', 'sin', 'cos', 'tan', 'sinc', 'sinh', 'cosh', 'tanh',
'absolute', 'one_over', 'sigmoid'
'absolute', 'one_over', 'sigmoid', 'log10'
def test_actual_gradients(f):
dom = ift.UnstructuredDomain((1,))
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment