octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [OctDev] complex error function


From: Daniel J Sebald
Subject: Re: [OctDev] complex error function
Date: Tue, 20 Nov 2012 16:33:40 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111108 Fedora/3.1.16-1.fc14 Thunderbird/3.1.16

Hi Steven,

Some comments below with regards to Jordi's observations on integration.


On 11/20/2012 03:33 PM, Jordi Gutiérrez Hermoso wrote:
On 4 November 2012 00:34, Steven G. Johnson<address@hidden>  wrote:
There is an updated version of my package
(http://ab-initio.mit.edu/Faddeeva) which computes not only the Faddeeva
function (the scaled complex error function) but also the ordinary erf
and erfc functions of complex arguments, as well as the erfcx and erfi
variants and the Dawson function (a scaled erfi).

This should make it relatively painless to drop it in as a replacement
for the Octave erf and erfc functions in order to support complex arguments.

I'm still not sure what to do with this code... It sounds useful,
sure, but you didn't write it for Octave except for a small wrapper.
Since you're trying to overwrite Octave functions, it should go in
Octave core but you also want to provide a bunch of other special
functions, so those should go in the specfun package in OF.

How much of this is the Faddeeva function and how much of it is supporting code? One concern I would have, just looking at the code for a few minutes, is all the repetitive routines for square root, sinc, etc. I would think the preference should be to utilize such algorithms from Octave's core or utilize the library that Octave is using. That way things remain consistent.

The issue for integration is then what hunks to integrate and how. The package can certainly remain in the current form.

For reference, the current erf and erfc appear to come from the standard math library:

# gl_COMMON_DOUBLE_MATHFUNC(FUNC)
# -------------------------------
# tests whether the function FUNC is available in libc or libm.
# It sets FUNC_LIBM to empty or "-lm" accordingly.
# FUNC must be one of the following functions, that are present on all systems
# and provided by libm on all systems except Mac OS X, BeOS, Haiku:
# acos asin atan atan2 cbrt cos cosh erf erfc exp fmod hypot j0 j1 jn lgamma
#   log log10 log1p pow remainder sin sinh sqrt tan tanh y0 y1 yn


I'm also not sure how committed you are to maintaining this code for
Octave. If this is a one-time code dump and it's up to us to maintain
this code in the future, I'm less inclined to accept it into Octave
core, since it's a relatively rare request. I have never heard of our
users clamouring for the Faddeeva function or its relatives.

Certainly error function and complimentary error function find general use, but Faddeeva function seems like something particular to wave theory or Fourier analysis. Whether that belongs in the special functions category or a wave-theory (or similar) package, I don't know.

This has an MIT license, correct? Is that compatible with GPL? From my brief browsing of the code, it does seem to be original and reference up-to-date papers on the algorithm and its limitations.

It seems to me the first question is whether to replace erf/erfc in the core source with something that handles complex inputs. I'm not sure Faddeeva function on its own warrants core code. But there might be a better way to put Faddeeva function in a package, script code being one possibility if that turns out to not be too slow.

Dan


reply via email to

[Prev in Thread] Current Thread [Next in Thread]