From octave-sources-request at bevo dot che dot wisc dot edu Thu Mar 6 17:25:15 2003 Subject: Octave interface for GSL interpolation From: Jesper Friis To: jwe at bevo dot che dot wisc dot edu Date: Mon, 10 Jun 2002 17:29:30 +0200 (CEST) This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime at docserver dot cac dot washington dot edu for more info. ---243167696-946483565-1023722970=:22609 Content-Type: TEXT/PLAIN; charset=US-ASCII [I should have forwarded this to the octave-sources list when I first received it. --jwe] Dear John, I don't know if you are the right receiver of this email. Anyway I have made an octave interface of the GLS spline functions, which might be useful for others. It should be compiled with mkoctfile -lgsl spline.cc Best regards /Jesper ---243167696-946483565-1023722970=:22609 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="spline.cc" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: spline.cc Content-Disposition: attachment; filename="spline.cc" Ly8gQ29tcGlsZSB3aXRoOiBta29jdGZpbGUgLWxnc2wgc3BsaW5lLmNjDQov KiANCkNvcHlyaWdodCAoQykgMjAwMiBKZXNwZXIgRnJpaXMgPGplc3Blci5m cmlpc0BwaHlzLm50bnUubm8+DQoNClRoaXMgZmlsZSBpcyBwYXJ0IG9mIE9j dGF2ZS4NCg0KT2N0YXZlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCnVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZQ0KRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQ0KbGF0ZXIgdmVy c2lvbi4NCg0KT2N0YXZlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUDQpBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJD SEFOVEFCSUxJVFkgb3INCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KZm9y IG1vcmUgZGV0YWlscy4NCg0KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCmFsb25n IHdpdGggT2N0YXZlOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUNClNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMw NywgVVNBLg0KDQoqLw0KDQojaW5jbHVkZSA8Y29uZmlnLmg+DQoNCiNpbmNs dWRlIDxvY3RhdmUvZGVmdW4tZGxkLmg+DQojaW5jbHVkZSA8b2N0YXZlL2Vy cm9yLmg+DQojaW5jbHVkZSA8b2N0YXZlL29jdC1vYmouaD4NCiNpbmNsdWRl IDxvY3RhdmUvcGFnZXIuaD4NCiNpbmNsdWRlIDxvY3RhdmUvc3ltdGFiLmg+ DQojaW5jbHVkZSA8b2N0YXZlL3ZhcmlhYmxlcy5oPg0KDQojaW5jbHVkZSA8 YXNzZXJ0Lmg+DQojaW5jbHVkZSA8Z3NsL2dzbF9lcnJuby5oPg0KI2luY2x1 ZGUgPGdzbC9nc2xfc3BsaW5lLmg+DQoNCg0KREVGVU5fRExEIChzcGxpbmUs IGFyZ3MsIG5hcmdvdXQsIlwNCiAtIExvYWRhYmxlIEZ1bmN0aW9uOiBbeXkg ZGlmZiBkaWZmMiBpbnRlZ10gPSBzcGxpbmUoeCwgeSwgeHgsIFt0eXBlXSlc blwNCiAgICAgR2VuZXJhdGUgYSBzcGxpbmUgb2YgZ2l2ZW4gdHlwZSBmcm9t IHRoZSBwb2ludHMgKHgsIHkpIGFuZCByZXR1cm4geXksXG5cDQogICAgIHRo ZSBldmFsdWF0aW9uIG9mIHRoZSBzcGxpbmUgYXQgcG9zaXRpb25zIHh4LiBU aGUgb3B0aW9uYWwgYXJndW1lbnRcblwNCiAgICAgdHlwZSBjYW4gYmU6IFwi bGluZWFyXCIsIFwicG9seW5vbWlhbFwiLCBcImN1YmljXCIsIFwiY3ViaWNf cGVyaW9kaWNcIixcblwNCiAgICAgXCJha2ltYVwiIG9yIFwiYWtpbWFfcGVy aW9kaWNcIi4gVGhlIGRlZmF1bHQgaXMgXCJjdWJpY1wiLlxuXA0KXG5cDQog ICAgIFRoZSBkZXJpdmV0aWVzIG9mIHRoZSBzcGxpbmUgZnVuY3Rpb24gZXZh bHVhdGVkIGF0IHRoZSBwb3NpdGlvbnMgeHggYXJlXG5cDQogICAgIHJldHVy bmVkIGluIGRpZmYgYW5kIHRoZSBzZWNvbmQgZGVyaXZldGl2ZXMgaW4gZGlm ZjIuIGludGVnIGNvbnRhaW5zXG5cDQogICAgIHRoZSBudW1lcmljYWwgaW50 ZWdyYWwgb2YgdGhlIHNwbGluZSBmcm9tIHRoZSBmaXJzdCB0byB0aGUgbGFz dCBlbGVtZW50XG5cDQogICAgIGluIHRoZSB2ZWN0b3IgeHguIFRoaXMgZnVu Y3Rpb24gdXNlcyB0aGUgR251IFNjaWVudGlmaWMgTGlicmFyeSAoR1NMKS5c blwNClxuXA0KICAgICBFeGFtcGxlOlxuXA0KICAgICAgIHggPSAxOjEwO1xu XA0KICAgICAgIHkgPSByb3VuZCgoeCArIHJhbmQoMSwgMTApKSk7XG5cDQog ICAgICAgeHggPSAxOjAuMToxMDtcblwNCiAgICAgICB5eSA9IHNwbGluZSh4 LCB5LCB4eCk7XG5cDQogICAgICAgcGxvdCh4LHksICcqJywgeHgsIHl5KSIp DQp7DQogIG9jdGF2ZV92YWx1ZV9saXN0IHJldHZhbDsNCiAgaW50IHhyb3d2 ZWN0b3IsIHh4cm93dmVjdG9yLCB4bGVuZ3RoLCB4eGxlbmd0aDsNCiAgY29u c3QgZ3NsX2ludGVycF90eXBlICp0eXBlPWdzbF9pbnRlcnBfY3NwbGluZTsN CiAgaW50IG1pbl9wb2ludHM9MzsNCg0KICAvLyBDaGVjayBudW1iZXIgb2Yg aW5wdXQgYW5kIG91dHB1dCBhcmd1bWVudHMNCiAgaW50IG5hcmdpbiA9IGFy Z3MubGVuZ3RoKCk7DQogIGlmICgobmFyZ2luICE9IDMgJiYgbmFyZ2luICE9 IDQpIHx8IA0KICAgICAgKG5hcmdvdXQgPCAwICYmIG5hcmdvdXQgPiA0KSkg ew0KICAgIHByaW50X3VzYWdlICgic3BsaW5lIik7DQogICAgcmV0dXJuIHJl dHZhbDsNCiAgfQ0KICAvLyB4DQogIGlmIChhcmdzKDApLnJvd3MoKSA9PSAx KSB7DQogICAgeHJvd3ZlY3Rvcj0xOw0KICAgIHhsZW5ndGg9YXJncygwKS5j b2x1bW5zKCk7DQogIH0gZWxzZSBpZiAoYXJncygwKS5jb2x1bW5zKCkgPT0g MSkgew0KICAgIHhyb3d2ZWN0b3I9MDsNCiAgICB4bGVuZ3RoPWFyZ3MoMCku cm93cygpOw0KICB9IGVsc2Ugew0KICAgIGVycm9yKCJzcGxpbmU6IGV4cGVj dGluZyB4IChhcmcgMSkgdG8gYmUgYSB2ZWN0b3IiKTsNCiAgICByZXR1cm4g cmV0dmFsOw0KICB9DQogIE1hdHJpeCB4ID0gYXJncygwKS5tYXRyaXhfdmFs dWUoKTsNCiAgaWYgKGVycm9yX3N0YXRlKSB7DQogICAgZXJyb3IoInNwbGlu ZTogZXhwZWN0aW5nIHggKGFyZyAxKSB0byBiZSBhIG1hdHJpeCIpOw0KICAg IHJldHVybiByZXR2YWw7DQogIH0NCiAgLy8geQ0KICBpZiAoYXJncygxKS5y b3dzKCkgIT0gYXJncygwKS5yb3dzKCkgfHwNCiAgICAgIGFyZ3MoMSkuY29s dW1ucygpICE9IGFyZ3MoMCkuY29sdW1ucygpKSB7DQogICAgZXJyb3IoInNw bGluZTogZXhwZWN0aW5nIHkgKGFyZyAyKSB0byBiZSBvZiBzYW1lIHNpemUg YXMgeCAoYXJnIDEpIik7DQogIH0NCiAgTWF0cml4IHkgPSBhcmdzKDEpLm1h dHJpeF92YWx1ZSgpOw0KICBpZiAoZXJyb3Jfc3RhdGUpIHsNCiAgICBlcnJv cigic3BsaW5lOiBleHBlY3RpbmcgeSAoYXJnIDIpIHRvIGJlIGEgbWF0cml4 Iik7DQogICAgcmV0dXJuIHJldHZhbDsNCiAgfQ0KICAvLyB4eA0KICBpZiAo YXJncygyKS5yb3dzKCkgPT0gMSkgew0KICAgIHh4cm93dmVjdG9yPTE7DQog ICAgeHhsZW5ndGg9YXJncygyKS5jb2x1bW5zKCk7DQogIH0gZWxzZSBpZiAo YXJncygyKS5jb2x1bW5zKCkgPT0gMSkgew0KICAgIHh4cm93dmVjdG9yPTA7 DQogICAgeHhsZW5ndGg9YXJncygyKS5yb3dzKCk7DQogIH0gZWxzZSB7DQog ICAgZXJyb3IoInNwbGluZTogZXhwZWN0aW5nIHh4IChhcmcgMykgdG8gYmUg YSB2ZWN0b3IiKTsNCiAgICByZXR1cm4gcmV0dmFsOw0KICB9DQogIE1hdHJp eCB4eCA9IGFyZ3MoMikubWF0cml4X3ZhbHVlKCk7DQogIGlmIChlcnJvcl9z dGF0ZSkgew0KICAgIGVycm9yKCJzcGxpbmU6IGV4cGVjdGluZyB4eCAoYXJn IDMpIHRvIGJlIGEgbWF0cml4Iik7DQogICAgcmV0dXJuIHJldHZhbDsNCiAg fQ0KICAvLyBDaGVjayBmb3IgaW5mIG9yIE5hTg0KICBpZiAoeC5hbnlfZWxl bWVudF9pc19pbmZfb3JfbmFuICgpIHx8DQogICAgICB5LmFueV9lbGVtZW50 X2lzX2luZl9vcl9uYW4gKCkgfHwNCiAgICAgIHh4LmFueV9lbGVtZW50X2lz X2luZl9vcl9uYW4gKCkpIHsNCiAgICBlcnJvcigic3BsaW5lOiBjYW5ub3Qg dGFrZSBtYXRyaWNlcyBjb250YWluaW5nIEluZiBvciBOYU4gdmFsdWVzIik7 IA0KICAgIHJldHVybiByZXR2YWw7DQogIH0NCiAgYXNzZXJ0KCEgZXJyb3Jf c3RhdGUpOw0KDQogIC8vIFR5cGUNCiAgaWYgKG5hcmdpbiA9PSA0KSB7DQog ICAgaWYgKCEgYXJncygzKS5pc19zdHJpbmcoKSkgew0KICAgICAgZXJyb3Io InNwbGluZTogZXhwZWN0ZWQgdHlwZSAoYXJnIDQpIHRvIGJlIGEgc3RyaW5n Iik7DQogICAgICByZXR1cm4gcmV0dmFsOw0KICAgIH0NCiAgICBpZiAoYXJn cygzKS5zdHJpbmdfdmFsdWUoKSA9PSAibGluZWFyIiB8fA0KCWFyZ3MoMyku c3RyaW5nX3ZhbHVlKCkgPT0gImwiKSB7DQogICAgICB0eXBlPWdzbF9pbnRl cnBfbGluZWFyOw0KICAgICAgLy8gRG9lcyBub3Qgd29yay4uLg0KICAgICAg Ly8gICAgfSBlbHNlIGlmIChhcmdzKDMpLnN0cmluZ192YWx1ZSgpID09ICJw b2x5bm9taWFsIiB8fA0KICAgICAgLy8gICAgICAgICAgICAgICBhcmdzKDMp LnN0cmluZ192YWx1ZSgpID09ICJwIikgew0KICAgICAgLy8gICAgICB0eXBl PWdzbF9pbnRlcnBfcG9seW5vbWlhbDsNCiAgICB9IGVsc2UgaWYgKGFyZ3Mo Mykuc3RyaW5nX3ZhbHVlKCkgPT0gImN1YmljIiB8fCANCgkgICAgICAgYXJn cygzKS5zdHJpbmdfdmFsdWUoKSA9PSAiYyIpIHsNCiAgICAgIHR5cGU9Z3Ns X2ludGVycF9jc3BsaW5lOw0KICAgIH0gZWxzZSBpZiAoYXJncygzKS5zdHJp bmdfdmFsdWUoKSA9PSAiY3ViaWNfcGVyaW9kaWMiIHx8DQoJICAgICAgIGFy Z3MoMykuc3RyaW5nX3ZhbHVlKCkgPT0gImNwIikgew0KICAgICAgdHlwZT1n c2xfaW50ZXJwX2NzcGxpbmVfcGVyaW9kaWM7DQogICAgfSBlbHNlIGlmIChh cmdzKDMpLnN0cmluZ192YWx1ZSgpID09ICJha2ltYSIgfHwNCgkgICAgICAg YXJncygzKS5zdHJpbmdfdmFsdWUoKSA9PSAiYSIpIHsNCiAgICAgIHR5cGU9 Z3NsX2ludGVycF9ha2ltYTsNCiAgICB9IGVsc2UgaWYgKGFyZ3MoMykuc3Ry aW5nX3ZhbHVlKCkgPT0gImFraW1hX3BlcmlvZGljIiB8fA0KCSAgICAgICBh cmdzKDMpLnN0cmluZ192YWx1ZSgpID09ICJhcCIpIHsNCiAgICAgIHR5cGU9 Z3NsX2ludGVycF9ha2ltYV9wZXJpb2RpYzsNCiAgICB9IGVsc2Ugew0KICAg ICAgZXJyb3IoInNwbGluZTogbm90IGEgdmFsaWQgc3BsaW5lIHR5cGUgKGFy ZyA0KSIpOw0KICAgICAgcmV0dXJuIHJldHZhbDsNCiAgICB9DQogIH0NCiAg Ly8gQ2hlY2sgaWYgd2UgaGF2ZSBlbm91Z2ggcG9pbnRzIGZvciBzcGxpbmUN CiAgaWYgKHhsZW5ndGggPCB0eXBlLT5taW5fc2l6ZSkgew0KICAgIGVycm9y KCJzcGxpbmU6IG5vdCBlbm91Z2ggcG9pbnRzIik7DQogICAgcmV0dXJuIHJl dHZhbDsNCiAgfQ0KDQogIC8vIENyZWF0ZSBzcGxpbmUNCiAgZ3NsX3NwbGlu ZSAqc3BsaW5lID0gZ3NsX3NwbGluZV9hbGxvYyAodHlwZSwgeGxlbmd0aCk7 DQogIGdzbF9pbnRlcnBfYWNjZWwgKmFjYyA9IGdzbF9pbnRlcnBfYWNjZWxf YWxsb2MgKCk7DQoNCiAgLy8gSW5pdGlhbGl6ZSBzcGxpbmUNCiAgZG91Ymxl ICp4aT0oZG91YmxlICopbWFsbG9jKHhsZW5ndGgqc2l6ZW9mKGRvdWJsZSkp Ow0KICBkb3VibGUgKnlpPShkb3VibGUgKiltYWxsb2MoeGxlbmd0aCpzaXpl b2YoZG91YmxlKSk7DQogIGlmICh4cm93dmVjdG9yKSB7DQogICAgZm9yIChp bnQgaT0wOyBpPHhsZW5ndGg7IGkrKykgew0KICAgICAgeGlbaV09eCgwLCBp KTsNCiAgICAgIHlpW2ldPXkoMCwgaSk7DQogICAgfQ0KICB9IGVsc2Ugew0K ICAgIGZvciAoaW50IGk9MDsgaTx4bGVuZ3RoOyBpKyspIHsNCiAgICAgIHhp W2ldPXgoaSwgMCk7DQogICAgICB5aVtpXT15KGksIDApOw0KICAgIH0NCiAg fQ0KICBnc2xfc3BsaW5lX2luaXQgKHNwbGluZSwgeGksIHlpLCB4bGVuZ3Ro KTsNCg0KICAvLyBFdmFsdWF0ZSBzcGxpbmUNCiAgaWYgKG5hcmdvdXQgPj0g MCkgew0KICAgIE1hdHJpeCB5eSA9IGFyZ3MoMikubWF0cml4X3ZhbHVlKCk7 DQogICAgaWYgKHh4cm93dmVjdG9yKSB7DQogICAgICBmb3IgKGludCBpPTA7 IGk8eHhsZW5ndGg7IGkrKykgew0KCXl5KDAsIGkpPWdzbF9zcGxpbmVfZXZh bChzcGxpbmUsIHh4KDAsIGkpLCBhY2MpOw0KICAgICAgfQ0KICAgIH0gZWxz ZSB7DQogICAgICBmb3IgKGludCBpPTA7IGk8eHhsZW5ndGg7IGkrKykgew0K CXl5KGksIDApPWdzbF9zcGxpbmVfZXZhbChzcGxpbmUsIHh4KGksIDApLCBh Y2MpOw0KICAgICAgfQ0KICAgIH0NCiAgICByZXR2YWwoMCkgPSBvY3RhdmVf dmFsdWUoeXkpOw0KICB9DQoNCiAgLy8gRXZhbHVhdGUgZmlyc3QgZGVyaXZl dGllcw0KICBpZiAobmFyZ291dCA+PSAyKSB7DQogICAgTWF0cml4IGRpZmYg PSBhcmdzKDIpLm1hdHJpeF92YWx1ZSgpOw0KICAgIGlmICh4eHJvd3ZlY3Rv cikgew0KICAgICAgZm9yIChpbnQgaT0wOyBpPHh4bGVuZ3RoOyBpKyspIHsN CglkaWZmKDAsIGkpPWdzbF9zcGxpbmVfZXZhbF9kZXJpdihzcGxpbmUsIHh4 KDAsIGkpLCBhY2MpOw0KICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICBm b3IgKGludCBpPTA7IGk8eHhsZW5ndGg7IGkrKykgew0KCWRpZmYoaSwgMCk9 Z3NsX3NwbGluZV9ldmFsX2Rlcml2KHNwbGluZSwgeHgoaSwgMCksIGFjYyk7 DQogICAgICB9DQogICAgfQ0KICAgIHJldHZhbCgxKSA9IG9jdGF2ZV92YWx1 ZShkaWZmKTsNCiAgfQ0KDQogIC8vIEV2YWx1YXRlIHNlY29uZCBkZXJpdmV0 aWVzDQogIGlmIChuYXJnb3V0ID49IDMpIHsNCiAgICBNYXRyaXggZGlmZjIg PSBhcmdzKDIpLm1hdHJpeF92YWx1ZSgpOw0KICAgIGlmICh4eHJvd3ZlY3Rv cikgew0KICAgICAgZm9yIChpbnQgaT0wOyBpPHh4bGVuZ3RoOyBpKyspIHsN CglkaWZmMigwLCBpKT1nc2xfc3BsaW5lX2V2YWxfZGVyaXYyKHNwbGluZSwg eHgoMCwgaSksIGFjYyk7DQogICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAg IGZvciAoaW50IGk9MDsgaTx4eGxlbmd0aDsgaSsrKSB7DQoJZGlmZjIoaSwg MCk9Z3NsX3NwbGluZV9ldmFsX2Rlcml2MihzcGxpbmUsIHh4KGksIDApLCBh Y2MpOw0KICAgICAgfQ0KICAgIH0NCiAgICByZXR2YWwoMikgPSBvY3RhdmVf dmFsdWUoZGlmZjIpOw0KICB9DQoNCiAgLy8gRXZhbHVhdGUgaW50ZWdyYWwN CiAgaWYgKG5hcmdvdXQgPj0gNCkgew0KICAgIGRvdWJsZSBhLCBiLCBpbnRl Zz0wOw0KICAgIGE9eHgoMCwgMCk7DQogICAgaWYgKHh4cm93dmVjdG9yKSB7 DQogICAgICBiPXh4KDAsIHh4bGVuZ3RoLTEpOw0KICAgIH0gZWxzZSB7DQog ICAgICBiPXh4KHh4bGVuZ3RoLTEsIDApOw0KICAgIH0NCiAgICBpZiAoYSA9 PSBiKSB7DQogICAgICBpbnRlZz0wLjA7DQogICAgfSBlbHNlIHsNCiAgICAg IGludGVnPWdzbF9zcGxpbmVfZXZhbF9pbnRlZyhzcGxpbmUsIGEsIGIsIGFj Yyk7DQogICAgfQ0KICAgIHJldHZhbCgzKSA9IG9jdGF2ZV92YWx1ZShpbnRl Zyk7DQogIH0NCg0KICAvLyBGcmVlIHNwbGluZQ0KICBnc2xfc3BsaW5lX2Zy ZWUgKHNwbGluZSk7DQogIGdzbF9pbnRlcnBfYWNjZWxfZnJlZShhY2MpOw0K ICBmcmVlKHhpKTsNCiAgZnJlZSh5aSk7DQoNCiAgLy8gUmV0dXJuIHl5DQog IHJldHVybiByZXR2YWw7DQp9DQoNCg0KLyoNCjs7OyBMb2NhbCBWYXJpYWJs ZXM6ICoqKg0KOzs7IG1vZGU6IEMrKyAqKioNCjs7OyBFbmQ6ICoqKg0KKi8N Cg== ---243167696-946483565-1023722970=:22609--