From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13306 invoked by alias); 27 Mar 2014 08:13:37 -0000 Mailing-List: contact gsl-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gsl-discuss-owner@sourceware.org Received: (qmail 13292 invoked by uid 89); 27 Mar 2014 08:13:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: ipmx5.colorado.edu Received: from ipmx5.colorado.edu (HELO ipmx5.colorado.edu) (128.138.128.235) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 27 Mar 2014 08:13:34 +0000 From: Patrick Alken Received: from exhub2-pub.colorado.edu (HELO exhub2.ad.colorado.edu) ([128.138.123.208]) by smtp.colorado.edu with ESMTP; 27 Mar 2014 02:13:32 -0600 Received: from exc4.ad.colorado.edu ([fe80::34e1:313d:54f:f797]) by exhub2.ad.colorado.edu ([::1]) with mapi; Thu, 27 Mar 2014 02:13:32 -0600 To: "gsl-discuss@sourceware.org" Date: Thu, 27 Mar 2014 08:13:00 -0000 Subject: RE: Compiling & Testing New Interpolation Type Message-ID: <93B0BFDB4CD56A40BBAE7FB8D8984BF701211E565EBB@EXC4.ad.colorado.edu> References: <57ABFACA-CA7C-439D-9695-F136F0142156@phas.ubc.ca> <5328EF5C.5010300@colorado.edu> <0665FACA-1454-4C7C-80B5-30D08E71A1B7@phas.ubc.ca> <5329F67E.7080203@colorado.edu> <532A124B.4090608@colorado.edu> <532A13D0.2050609@colorado.edu> <8EA5CA7B-E4C4-48A0-A9EB-BA77F3F1AC11@phas.ubc.ca> <532B23E3.7050700@colorado.edu> <532B2ACF.1060608@colorado.edu> <532B2D8E.8090902@colorado.edu> <532B33B2.6060903@colorado.edu> ,<39D96706-0826-4235-9634-18EE4B97EDB4@phas.ubc.ca> In-Reply-To: <39D96706-0826-4235-9634-18EE4B97EDB4@phas.ubc.ca> Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-SW-Source: 2014-q1/txt/msg00033.txt.bz2 The code is looking very good - I will try to find time in the next few day= s to do some tests and import it into GSL Thanks Patrick ________________________________________ From: gsl-discuss-owner@sourceware.org [gsl-discuss-owner@sourceware.org] O= n Behalf Of Jean-Fran=E7ois Caron [jfcaron@phas.ubc.ca] Sent: Wednesday, March 26, 2014 7:10 PM To: gsl-discuss@sourceware.org Subject: Re: Compiling & Testing New Interpolation Type I have now fixed the problems with the tests and added a more robust test w= ith lots of data points. I am effectively ready to give a pull request fro= m my github repo. Let me know what I need to do to facilitate this. Jean-Fran=E7ois On Mar 25, 2014, at 15:51 , Jean-Fran=E7ois Caron wro= te: > Git and Github weren=92t as intimidating as I expected. I have a repo he= re with the =93steffen=94 branch including my changes: > > https://github.com/jfcaron3/gsl-steffen-devel > > The Savannah git repo didn=92t include a configure script, and I got my m= odified GSL+Steffen code to compile by directly modifying interpolation/Mak= efile AFTER running ./configure, so I=92m not sure how to compile the files= cloned from my github repo. At least it=92s easier to see the changes now. > > Jean-Fran=E7ois > > On Mar 25, 2014, at 14:56 , Jean-Fran=E7ois Caron w= rote: > >> I=92ve 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 refe= rences to =93steffen.c=94, =93steffen.lo=94, and =93steffen.Plo=94 exactly = where there are currently references to =93akima.*=94. >> >> I=92ve tried adding an =93integ=94 method, but I=92m afraid I don=92t ev= en understand the workings of the integ methods for the existing interpolat= ion types. I couldn=92t just copy from the akima.c integ method because th= ey use a build-in spline calculation function (which I also don=92t underst= and). Reading uncommented C code is pretty hard. My test program shows th= at the integration method isn=92t obviously broken, but it fails the tests = I wrote in interpolation/test.c The actual interpolation and derivatives s= eem to work and pass the tests. >> >> I=92ve not used github before, so I guess my next move should be to lear= n the basics and start using that, since otherwise describing my additions = & changes are hard to follow. In the meantime, is anyone able to explain h= ow the heck the =93integ=94 methods work? >> >> Jean-Fran=E7ois >> >> On Mar 20, 2014, at 11:30 , Patrick Alken w= rote: >> >>> Yes that green curve is rather strange and doesn't seem much better tha= n the cubic spline. I like simplicity too so lets proceed with importing th= e steffen code. >>> >>> On 03/20/2014 12:18 PM, Jean-Fran=E7ois Caron wrote: >>>> Definitely an advantage of a) is that it is conceptually simple. b) i= s 44 pages while a) is only 7. Even if b) is somehow mathematically superi= or, I like the idea of understanding the tools that I am using (and being a= ble to explain it to my academic supervisor/conference attendees). >>>> >>>> The MESA astrophysics library (C++ unfortunately) actually includes bo= th 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=92t piece-wise monotonic between the data points.= I=92m starting to think maybe Stetten and Huynh mean different things whe= n they say =93monotonic=94. I=92ll try to read Huynh=92s paper to see if t= hey define what they are trying to do. Steffen is pretty clear about his t= echnique being a for an interpolating function that is monotonic between da= ta points - i.e. the interpolating function doesn=92t change sign between d= ata points, and extrema can only occur at said data points. >>>> >>>> Jean-Fran=E7ois >>>> >>>> On Mar 20, 2014, at 11:03 , Patrick Alken = wrote: >>>> >>>>> I see question 1) is answered by section 4 of Steffen's paper - the m= ethod 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 sui= ted >>>>>> 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 differe= nt >>>>>> 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. Nume= r. >>>>>> Anal. 30, 57-100 (1993). >>>>>> >>>>>> (c) Fritsch, F. N.; Carlson, R. E., "Monotone Piecewise Cubic >>>>>> Interpolation", SIAM J. Numer. Anal. 17 (2), 238=96246 (1980). >>>>>> >>>>>> I haven't looked at (c) but it seems that (a) and (b) both use piece= wise >>>>>> 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 o= ne >>>>>> in GSL. >>>>>> >>>>>> Patrick >>>>>> >>>>>> On 03/20/2014 11:37 AM, Jean-Fran=E7ois Caron wrote: >>>>>>> Yes, I didn=92t bother doing the integration function at the time b= ecause I was having trouble just compiling. I will add the integration fun= ction, and re-write the eval and deriv/deriv2 functions to use Horner=92s s= cheme for the polynomials. I can generate some comparison graphs using fak= e data like in Steffen=92s paper, that sounds easy enough. >>>>>>> >>>>>>> I=92ll 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=92t know a lot of the procedures (or even politics sometimes!) involv= ed. >>>>>>> >>>>>>> Jean-Fran=E7ois >>>>>>> >>>>>>> On Mar 20, 2014, at 10:22 , Patrick Alken wrote: >>>>>>> >>>>>>>> I did notice you talking about 1.6 in your earlier messages, but a= ssumed it was a typo and you meant 1.16, oops. >>>>>>>> >>>>>>>> On 03/20/2014 11:11 AM, Jean-Fran=E7ois Caron wrote: >>>>>>>>> My original problem was that I wanted to add an interpolation typ= e to GSL. Specifically I want monotonic cubic-splines following the descri= ption in Steffen (1990): http://adsabs.harvard.edu/full/1990A%26A...239..44= 3S >>>>>>>> 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 co= uld add to make it feature complete with the other interpolation types? >>>>>>>> >>>>>>>> It is important to add automated tests for this. Can you look at i= nterpolation/test.c and design similar tests for your new method? Also I th= ink it would be nice to add a figure to the manual illustrating the differe= nces between cubic, akima, and your new steffen method (similar to the figu= res in the Steffen paper). This would help users a lot when trying to decid= e what method to use. Do you happen to have a dataset which shows a nice co= ntrast 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 releas= e. When I find some time I want to import the 2D interpolation extension di= scussed previously, and also add Hermite interpolation. >>>>>>>> >>>>>>>> It would be easiest for us if you could clone the GSL git reposito= ry 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, w= hichever is easiest. >>>>>>>> >>>>>>>> Patrick >>>>>>>> >>>>>>>> On Mar 19, 2014, at 18:40 , Dave Allured - NOAA Affiliate 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, n= o make >>>>>>>>>> check errors, no PPC-related issues. Outputs on request, please= be >>>>>>>>>> specific. >>>>>>>>>> >>>>>>>>>> CC=3Dclang >>>>>>>>>> CFLAGS=3D-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 | un= iq -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=3D'' >>>>>>>>>> src/config.status:S["HAVE_GNUPPC_IEEE_INTERFACE"]=3D"" >>>>>>>>>> >>>>>>>>>> --Dave >>>>>>>>>> >>>>>>>>>> On Wed, Mar 19, 2014 at 5:27 PM, Jean-Francois Caron >>>>>>>>>> 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 ./configu= re >>>>>>>>>>> stage correctly identifies my system, so it's a bit strange. A= lso GSL >>>>>>>>>>> installs without errors when I do it from MacPorts, and MacPorts >>>>>>>>>>> doesn't seem to do anything other than ./configure && make, fro= m 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=E7ois >>> >> >