I have now fixed the problems with the tests and added a more robust test with 
lots of data points.  I am effectively ready to give a pull request from my 
github repo.  Let me know what I need to do to facilitate this.

Jean-François

On Mar 25, 2014, at 15:51 , Jean-François Caron <[email protected]> wrote:

> Git and Github weren’t as intimidating as I expected.  I have a repo here 
> with the “steffen” branch including my changes:
> 
> https://github.com/jfcaron3/gsl-steffen-devel
> 
> The Savannah git repo didn’t include a configure script, and I got my 
> modified GSL+Steffen code to compile by directly modifying 
> interpolation/Makefile AFTER running ./configure, so I’m not sure how to 
> compile the files cloned from my github repo.  At least it’s easier to see 
> the changes now.
> 
> Jean-François
> 
> On Mar 25, 2014, at 14:56 , Jean-François Caron <[email protected]> wrote:
> 
>> I’ve improved my initial code greatly.  You can find it here:
>> 
>> http://bazaar.launchpad.net/~jfcaron/+junk/my_steffen/files
>> 
>> You can compile it into GSL by adding in the interpolation/Makefile 
>> references to “steffen.c”, “steffen.lo”, and “steffen.Plo” exactly where 
>> there are currently references to “akima.*”.
>> 
>> I’ve tried adding an “integ” method, but I’m afraid I don’t even understand 
>> the workings of the integ methods for the existing interpolation types.  I 
>> couldn’t just copy from the akima.c integ method because they use a build-in 
>> spline calculation function (which I also don’t understand).  Reading 
>> uncommented C code is pretty hard.  My test program shows that the 
>> integration method isn’t obviously broken, but it fails the tests I wrote in 
>> interpolation/test.c  The actual interpolation and derivatives seem to work 
>> and pass the tests.
>> 
>> I’ve not used github before, so I guess my next move should be to learn the 
>> basics and start using that, since otherwise describing my additions & 
>> changes are hard to follow.  In the meantime, is anyone able to explain how 
>> the heck the “integ” methods work?
>> 
>> Jean-François
>> 
>> On Mar 20, 2014, at 11:30 , Patrick Alken <[email protected]> wrote:
>> 
>>> Yes that green curve is rather strange and doesn't seem much better than 
>>> the cubic spline. I like simplicity too so lets proceed with importing the 
>>> steffen code.
>>> 
>>> On 03/20/2014 12:18 PM, Jean-François Caron wrote:
>>>> Definitely an advantage of a) is that it is conceptually simple.  b) is 44 
>>>> pages while a) is only 7.  Even if b) is somehow mathematically superior, 
>>>> I like the idea of understanding the tools that I am using (and being able 
>>>> to explain it to my academic supervisor/conference attendees).
>>>> 
>>>> The MESA astrophysics library (C++ unfortunately) actually includes both 
>>>> types, and has a little graph to show differences:
>>>> http://mesa.sourceforge.net/interp_1D.html
>>>> 
>>>> Actually their graph is confusing, blue is supposed to be a), green b), 
>>>> but the green curve isn’t piece-wise monotonic between the data points.  
>>>> I’m starting to think maybe Stetten and Huynh mean different things when 
>>>> they say “monotonic”.  I’ll try to read Huynh’s paper to see if they 
>>>> define what they are trying to do.  Steffen is pretty clear about his 
>>>> technique being a for an interpolating function that is monotonic between 
>>>> data points - i.e. the interpolating function doesn’t change sign between 
>>>> data points, and extrema can only occur at said data points.
>>>> 
>>>> Jean-François
>>>> 
>>>> On Mar 20, 2014, at 11:03 , Patrick Alken <[email protected]> 
>>>> wrote:
>>>> 
>>>>> I see question 1) is answered by section 4 of Steffen's paper - the 
>>>>> method works on all data sets, and preserves monotonicity in each 
>>>>> interval, which is nice. They also state that method (c) has some serious 
>>>>> drawbacks.
>>>>> 
>>>>> Unfortunately paper (b) doesn't reference (a) and so its difficult to 
>>>>> tell whether (b) offers any advantage over (a)
>>>>> 
>>>>> On 03/20/2014 11:52 AM, Patrick Alken wrote:
>>>>>> Hi, I'm moving this discussion over to gsl-discuss which is more suited
>>>>>> for development issues.
>>>>>> 
>>>>>> I have 2 naive questions which you may be able to answer since you've
>>>>>> been working on this code.
>>>>>> 
>>>>>> 1) If the Steffen algorithm is applied to non-monotonic data, will it
>>>>>> still provide a solution or does the method encounter an error?
>>>>>> 
>>>>>> 2) Earlier on the GSL list it was mentioned that there are 3 different
>>>>>> methods for interpolating monotonic data:
>>>>>> 
>>>>>> (a) M.Steffen, "A simple method for monotonic interpolation in one
>>>>>> dimension", Astron. Astrophys. 239, 443-450 (1990).
>>>>>> 
>>>>>> (b) H.T.Huynh, "Accurate Monotone Cubic Interpolation", SIAM J. Numer.
>>>>>> Anal. 30, 57-100 (1993).
>>>>>> 
>>>>>> (c) Fritsch, F. N.; Carlson, R. E., "Monotone Piecewise Cubic
>>>>>> Interpolation", SIAM J. Numer. Anal. 17 (2), 238–246 (1980).
>>>>>> 
>>>>>> I haven't looked at (c) but it seems that (a) and (b) both use piecewise
>>>>>> cubic polynomials and preserve monotonicity. Do you happen to know if
>>>>>> one method is superior to the other? If one method is significantly
>>>>>> better than the other two it would make more sense to include that one
>>>>>> in GSL.
>>>>>> 
>>>>>> Patrick
>>>>>> 
>>>>>> On 03/20/2014 11:37 AM, Jean-François Caron wrote:
>>>>>>> Yes, I didn’t bother doing the integration function at the time because 
>>>>>>> I was having trouble just compiling.  I will add the integration 
>>>>>>> function, and re-write the eval and deriv/deriv2 functions to use 
>>>>>>> Horner’s scheme for the polynomials.  I can generate some comparison 
>>>>>>> graphs using fake data like in Steffen’s paper, that sounds easy enough.
>>>>>>> 
>>>>>>> I’ll look at the interpolation/test.c file and see if I can come up 
>>>>>>> with similar tests.
>>>>>>> 
>>>>>>> Thanks for offering to help with the integration into GSL itself.  I 
>>>>>>> don’t know a lot of the procedures (or even politics sometimes!) 
>>>>>>> involved.
>>>>>>> 
>>>>>>> Jean-François
>>>>>>> 
>>>>>>> On Mar 20, 2014, at 10:22 , Patrick Alken <[email protected]> 
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> I did notice you talking about 1.6 in your earlier messages, but 
>>>>>>>> assumed it was a typo and you meant 1.16, oops.
>>>>>>>> 
>>>>>>>> On 03/20/2014 11:11 AM, Jean-François Caron wrote:
>>>>>>>>> My original problem was that I wanted to add an interpolation type to 
>>>>>>>>> GSL.  Specifically I want monotonic cubic-splines following the 
>>>>>>>>> description in Steffen (1990): 
>>>>>>>>> http://adsabs.harvard.edu/full/1990A%26A...239..443S
>>>>>>>> I took a quick look at your code earlier and it looks pretty nice. I 
>>>>>>>> noticed you commented out the _integ function - is this something you 
>>>>>>>> could add to make it feature complete with the other interpolation 
>>>>>>>> types?
>>>>>>>> 
>>>>>>>> It is important to add automated tests for this. Can you look at 
>>>>>>>> interpolation/test.c and design similar tests for your new method? 
>>>>>>>> Also I think it would be nice to add a figure to the manual 
>>>>>>>> illustrating the differences between cubic, akima, and your new 
>>>>>>>> steffen method (similar to the figures in the Steffen paper). This 
>>>>>>>> would help users a lot when trying to decide what method to use. Do 
>>>>>>>> you happen to have a dataset which shows a nice contrast like Figs 1, 
>>>>>>>> 3 and 8 from that paper?
>>>>>>>> 
>>>>>>>> When everything is ready I would be happy to add it to GSL, as we are 
>>>>>>>> already planning to update the interpolation module for the next 
>>>>>>>> release. When I find some time I want to import the 2D interpolation 
>>>>>>>> extension discussed previously, and also add Hermite interpolation.
>>>>>>>> 
>>>>>>>> It would be easiest for us if you could clone the GSL git repository 
>>>>>>>> and make your changes there. You could make a new branch called 
>>>>>>>> 'steffen' or something and publish it to github, or just send a patch 
>>>>>>>> file to me, whichever is easiest.
>>>>>>>> 
>>>>>>>> Patrick
>>>>>>>> 
>>>>>>>> On Mar 19, 2014, at 18:40 , Dave Allured - NOAA Affiliate 
>>>>>>>> <[email protected]> wrote:
>>>>>>>>>> More data.  I tried the same plain build recipe, GSL 1.16 on our test
>>>>>>>>>> machine which is at Mac OS 10.9.3.  Got another perfect build, no 
>>>>>>>>>> make
>>>>>>>>>> check errors, no PPC-related issues.  Outputs on request, please be
>>>>>>>>>> specific.
>>>>>>>>>> 
>>>>>>>>>> CC=clang
>>>>>>>>>> CFLAGS=-g
>>>>>>>>>> ./configure --prefix /Users/dallured/Disk/3rd/gsl/1.16.os10.9
>>>>>>>>>> 
>>>>>>>>>> mac27:~/Disk/3rd/gsl/1.16.os10.9 57> sw_vers
>>>>>>>>>> ProductName: Mac OS X
>>>>>>>>>> ProductVersion: 10.9.3
>>>>>>>>>> BuildVersion: 13D17
>>>>>>>>>> 
>>>>>>>>>> mac27:~/Disk/3rd/gsl/1.16.os10.9/src 36> \
>>>>>>>>>> ? grep -i '# [a-z]' ../logfiles/make-check.0319a.log | sort | uniq -c
>>>>>>>>>> 45 # ERROR: 0
>>>>>>>>>> 45 # FAIL:  0
>>>>>>>>>> 42 # PASS:  1
>>>>>>>>>>  3 # PASS:  2
>>>>>>>>>> 45 # SKIP:  0
>>>>>>>>>> 42 # TOTAL: 1
>>>>>>>>>>  3 # TOTAL: 2
>>>>>>>>>> 45 # XFAIL: 0
>>>>>>>>>> 45 # XPASS: 0
>>>>>>>>>> 
>>>>>>>>>> mac27:~/Disk/3rd/gsl/1.16.os10.9 62> \
>>>>>>>>>> ? grep -c -i ppc logfiles/*319a*log
>>>>>>>>>> logfiles/configure.0319a.os10.9.log:0
>>>>>>>>>> logfiles/install.0319a.log:0
>>>>>>>>>> logfiles/make-check.0319a.log:0
>>>>>>>>>> logfiles/make.0319a.log:0
>>>>>>>>>> 
>>>>>>>>>> mac27:~/Disk/3rd/gsl/1.16.os10.9 65> \
>>>>>>>>>> ? grep -i ppc src/config.h src/config.log src/config.status
>>>>>>>>>> src/config.h:/* #undef HAVE_GNUPPC_IEEE_INTERFACE */
>>>>>>>>>> src/config.log:HAVE_GNUPPC_IEEE_INTERFACE=''
>>>>>>>>>> src/config.status:S["HAVE_GNUPPC_IEEE_INTERFACE"]=""
>>>>>>>>>> 
>>>>>>>>>> --Dave
>>>>>>>>>> 
>>>>>>>>>> On Wed, Mar 19, 2014 at 5:27 PM, Jean-Francois Caron 
>>>>>>>>>> <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>> Dave is correct, I am using an "i686" 64-bit x86 mac.  For some 
>>>>>>>>>>> reason
>>>>>>>>>>> it is still looking for the PPC mac header file.  The ./configure
>>>>>>>>>>> stage correctly identifies my system, so it's a bit strange.  Also 
>>>>>>>>>>> GSL
>>>>>>>>>>> installs without errors when I do it from MacPorts, and MacPorts
>>>>>>>>>>> doesn't seem to do anything other than ./configure && make, from my
>>>>>>>>>>> reading of the portfile.
>>>>>>>>>>> 
>>>>>>>>>>> When I get back to my Mac, I will look at the NOTES file to see if
>>>>>>>>>>> anything needs to be done for 10.9.
>>>>>>>>>>> 
>>>>>>>>>>> Jean-François
>>> 
>> 
> 

Reply via email to