basic_arithmetics.py 1.6 KB
 Theo Steininger committed Apr 13, 2017 1 2 3 4 5 6 7 8 9 10 11 12 ``````# This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . `````` Theo Steininger committed May 24, 2017 13 14 15 16 17 ``````# # Copyright(C) 2013-2017 Max-Planck-Society # # NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik # and financially supported by the Studienstiftung des deutschen Volkes. `````` Theo Steininger committed Oct 13, 2016 18 `````` `````` Martin Reinecke committed Jun 30, 2017 19 ``````from __future__ import division `````` Martin Reinecke committed Jul 05, 2017 20 ``````from .field import Field `````` Martin Reinecke committed Sep 24, 2017 21 ``````from . import dobj `````` Theo Steininger committed Oct 13, 2016 22 23 `````` `````` Martin Reinecke committed Oct 23, 2017 24 ``````__all__ = ['sqrt', 'exp', 'log', 'conjugate'] `````` Theo Steininger committed Oct 13, 2016 25 26 `````` `````` Martin Reinecke committed Sep 19, 2017 27 28 29 30 ``````def _math_helper(x, function, out): if not isinstance(x, Field): raise TypeError("This function only accepts Field objects.") if out is not None: `````` Martin Reinecke committed Nov 14, 2017 31 `````` if not isinstance(out, Field) or x.domain != out.domain: `````` Martin Reinecke committed Sep 19, 2017 32 33 34 `````` raise ValueError("Bad 'out' argument") function(x.val, out=out.val) return out `````` Theo Steininger committed Oct 13, 2016 35 `````` else: `````` Martin Reinecke committed Sep 19, 2017 36 `````` return Field(domain=x.domain, val=function(x.val)) `````` Theo Steininger committed Oct 13, 2016 37 38 `````` `````` Martin Reinecke committed Sep 19, 2017 39 ``````def sqrt(x, out=None): `````` Martin Reinecke committed Sep 24, 2017 40 `````` return _math_helper(x, dobj.sqrt, out) `````` Theo Steininger committed Oct 13, 2016 41 `````` `````` Martin Reinecke committed Sep 09, 2017 42 `````` `````` Martin Reinecke committed Sep 19, 2017 43 ``````def exp(x, out=None): `````` Martin Reinecke committed Sep 24, 2017 44 `````` return _math_helper(x, dobj.exp, out) `````` Theo Steininger committed Oct 13, 2016 45 `````` `````` Martin Reinecke committed Sep 09, 2017 46 `````` `````` Martin Reinecke committed Sep 19, 2017 47 ``````def log(x, out=None): `````` Martin Reinecke committed Sep 24, 2017 48 `````` return _math_helper(x, dobj.log, out) `````` Theo Steininger committed Oct 13, 2016 49 `````` `````` Martin Reinecke committed Sep 09, 2017 50 `````` `````` Martin Reinecke committed Sep 19, 2017 51 ``````def conjugate(x, out=None): `````` Martin Reinecke committed Sep 24, 2017 52 `` return _math_helper(x, dobj.conjugate, out)``