On 15 Dec 2009, at 20:58, Robert Poor wrote:
As promised on this topic, I've posted documentation, source code, example code and test suite for a Rational package at:
http://wiki.cs.princeton.edu/index.php/Rational_Number_Package http://wiki.cs.princeton.edu/index.php/Rational.ck http://wiki.cs.princeton.edu/index.php/Rational_eg.ck http://wiki.cs.princeton.edu/index.php/Rational_test.ck
... respectively. And respectfully. (Editing in Wiki ain't half bad!)
I found continued fraction convergents very useful when analyzing floating point data. I have some Haskell code if you want to implement it. For example, cfc (logBase 2 (3/2)) [0 % 1,1 % 1,1 % 2,3 % 5,7 % 12,24 % 41,31 % 53,179 % 306,389 % 665,9126 % 15601,18641 % 31867,46408 % 79335,65049 % 111202,111457 % 190537,6195184 % 10590737,6306641 % 10781274,31421748 % 53715833,100571885 % 171928773,333137403 % 569502152,2099396303 % 3588941685,2432533706 % 4158443837,89670609719 % 153292919817,719797411458 % 1230501802373,809468021177 % 1383794722190,1529265432635 % 2614296524563,3867998886447 % 6612387771316,9265263205529 % 15839072067195,40929051708563 % 69968676040096,50194314914092 % 85807748107291,442483571021299 % 756430660898424,492677885935391 % 842238409005715,1427839342892081 % 2440907478909854,1920517228827472 % 3283145887915569,5268873800547025 % 9007199254740992] Here, 7 % 12,24 % 41,31 % 53 are the rational numbers 7/12, 24/41, 31/53, which is the ET sequence E12, E41, E53, with the scale degrees the interval 3/2 is on: 7, 24, 13. At least 7, you are well aware of. :-) One can get E31 by replacing 3/2 with sqrt(5/4), and a few more. Also, being able to compute approximations in a n-limit is useful. They may hit on harmonies. Though I do not know a got method to implement it - I just search through combinations with not too high vales of the exponents. Perhaps a version of create(float v, int dlimit, int n) where n is in n-limit. Those are useful for analyzing music data, but I do not know if they are useful in ChucK. (In Scheme R5RS, they use "make" for constructors. Hopefully, ChucK if perhaps get C++ style constructors, explicit names won't be needed.) Hans