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