mirror of
https://github.com/meteoinfo/MeteoInfo.git
synced 2025-12-08 20:36:05 +00:00
add erf and erfc functions
This commit is contained in:
parent
35b80eecd6
commit
6ac0f2dbf7
@ -1,14 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<MeteoInfo File="milconfig.xml" Type="configurefile">
|
||||
<Path OpenPath="D:\Working\MIScript\Jython\mis\chart\subplot">
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite\FY"/>
|
||||
<Path OpenPath="D:\Working\MIScript\Jython\mis\common_math\special">
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite\calipso"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map\topology"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\test"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\stats"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\array"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types"/>
|
||||
@ -16,17 +14,19 @@
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\chart"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\chart\subplot"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math"/>
|
||||
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\special"/>
|
||||
</Path>
|
||||
<File>
|
||||
<OpenedFiles>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\surf_sombrero.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\common_math\stats\kendalltau_1.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\chart\subplot\subplot_quiver_1.py"/>
|
||||
<OpenedFile File="D:\Working\MIScript\Jython\mis\common_math\special\erfc.py"/>
|
||||
</OpenedFiles>
|
||||
<RecentFiles>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\surf_sombrero.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\common_math\stats\kendalltau_1.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\chart\subplot\subplot_quiver_1.py"/>
|
||||
<RecentFile File="D:\Working\MIScript\Jython\mis\common_math\special\erfc.py"/>
|
||||
</RecentFiles>
|
||||
</File>
|
||||
<Font>
|
||||
@ -34,5 +34,5 @@
|
||||
</Font>
|
||||
<LookFeel DockWindowDecorated="true" LafDecorated="true" Name="FlatDarkLaf"/>
|
||||
<Figure DoubleBuffering="true"/>
|
||||
<Startup MainFormLocation="-7,-7" MainFormSize="1293,693"/>
|
||||
<Startup MainFormLocation="-7,0" MainFormSize="1364,813"/>
|
||||
</MeteoInfo>
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
from ._gamma import *
|
||||
from ._basic import *
|
||||
from ._erf import *
|
||||
|
||||
__all__ = []
|
||||
__all__.extend(_basic.__all__)
|
||||
__all__.extend(_gamma.__all__)
|
||||
__all__.extend(_gamma.__all__)
|
||||
__all__.extend(_erf.__all__)
|
||||
47
meteoinfo-lab/pylib/mipylib/numeric/special/_erf.py
Normal file
47
meteoinfo-lab/pylib/mipylib/numeric/special/_erf.py
Normal file
@ -0,0 +1,47 @@
|
||||
from org.meteoinfo.math.special import SpecialUtil
|
||||
|
||||
from ..core import numeric as np
|
||||
|
||||
__all__ = ['erf','erfc']
|
||||
|
||||
def erf(x):
|
||||
"""
|
||||
Returns the error function of complex argument.
|
||||
|
||||
It is defined as 2/sqrt(pi)*integral(exp(-t**2), t=0..z).
|
||||
|
||||
:param x: (*array_like*) Input array.
|
||||
|
||||
:return: The values of the error function at the given points x.
|
||||
"""
|
||||
if isinstance(x, (list, tuple)):
|
||||
x = np.array(x).asarray()
|
||||
|
||||
if isinstance(x, np.NDArray):
|
||||
x = x.asarray()
|
||||
|
||||
r = SpecialUtil.erf(x)
|
||||
if isinstance(r, float):
|
||||
return r
|
||||
else:
|
||||
return np.array(r)
|
||||
|
||||
def erfc(x):
|
||||
"""
|
||||
Complementary error function, 1 - erf(x).
|
||||
|
||||
:param x: (*array_like*) Input array.
|
||||
|
||||
:return: The values of the error function at the given points x.
|
||||
"""
|
||||
if isinstance(x, (list, tuple)):
|
||||
x = np.array(x).asarray()
|
||||
|
||||
if isinstance(x, np.NDArray):
|
||||
x = x.asarray()
|
||||
|
||||
r = SpecialUtil.erfc(x)
|
||||
if isinstance(r, float):
|
||||
return r
|
||||
else:
|
||||
return np.array(r)
|
||||
@ -1,5 +1,6 @@
|
||||
package org.meteoinfo.math.special;
|
||||
|
||||
import org.apache.commons.math3.special.Erf;
|
||||
import org.apache.commons.math3.special.Gamma;
|
||||
import org.apache.commons.math3.util.CombinatoricsUtils;
|
||||
import org.meteoinfo.ndarray.Array;
|
||||
@ -84,4 +85,56 @@ public class SpecialUtil {
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the error function of complex argument.
|
||||
* It is defined as 2/sqrt(pi)*integral(exp(-t**2), t=0..z).
|
||||
* @param x Value
|
||||
* @return Error function
|
||||
*/
|
||||
public static double erf(double x) {
|
||||
return Erf.erf(x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the error function of complex argument.
|
||||
* It is defined as 2/sqrt(pi)*integral(exp(-t**2), t=0..z).
|
||||
* @param x Value array
|
||||
* @return Error function
|
||||
*/
|
||||
public static Array erf(Array x) {
|
||||
Array r = Array.factory(DataType.DOUBLE, x.getShape());
|
||||
IndexIterator xIter = x.getIndexIterator();
|
||||
IndexIterator rIter = r.getIndexIterator();
|
||||
while(xIter.hasNext()) {
|
||||
rIter.setDoubleNext(Erf.erf(xIter.getDoubleNext()));
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Complementary error function, 1 - erf(x)
|
||||
* @param x Value
|
||||
* @return Complementary error function
|
||||
*/
|
||||
public static double erfc(double x) {
|
||||
return Erf.erfc(x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Complementary error function, 1 - erf(x)
|
||||
* @param x Value array
|
||||
* @return Complementary error function
|
||||
*/
|
||||
public static Array erfc(Array x) {
|
||||
Array r = Array.factory(DataType.DOUBLE, x.getShape());
|
||||
IndexIterator xIter = x.getIndexIterator();
|
||||
IndexIterator rIter = r.getIndexIterator();
|
||||
while(xIter.hasNext()) {
|
||||
rIter.setDoubleNext(Erf.erfc(xIter.getDoubleNext()));
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user