if you had read the thread, you would have seen that claude posted a link to that technique.
now go and make a PD patch that does it, mr smart guy. On Sat, Dec 17, 2011 at 3:00 AM, Ludwig Maes <[email protected]> wrote: > If you guys 'd done your math, you'd know there is an ancient algorithm > for approximating numbers by fractions and its called continued fractions. > > > On 16 December 2011 18:38, Lorenzo Sutton <[email protected]>wrote: > >> On 16/12/11 16:05, Alexandre Torres Porres wrote: >> >>> looks like a job for an external >>> >> Not really answering the OP question but something could be done in >> Python: >> >> def find_frac(num): >> f = float(num) >> last_error = 1000 >> best = (0,0) >> for i in xrange(1,1001): >> for j in xrange(1,i+1): >> divide = (float(i) / float (j)) >> if divide == f: >> return ((i,j),0) >> err = abs(divide - f) >> if err < last_error: >> best = (i,j) >> last_error = err >> return (best,last_error) >> >> This would try to find the exact fraction or the one with the smallest >> error (trying up to 1000/1000). It would return (numerator, denominator, >> error). Guess it would work well at least up to 100 but only for positive >> numbers... and... not for numbers < 1.. and surely it's not optimised etc. >> etc. :) >> >> >>> find_frac(2) >> ((2, 1), 0) >> >>> find_frac(1.5) >> ((3, 2), 0) >> >>> find_frac(1.**333333333333333333333333333) >> ((4, 3), 0) >> >>> find_frac(2.4) >> ((12, 5), 0) >> >>> find_frac(2.8) >> ((14, 5), 0) >> >>> find_frac(2.987654321) >> ((242, 81), 1.234568003383174e-11) >> >>> find_frac(50.32) >> ((956, 19), 0.004210526315787888) >> >>> find_frac(50.322) >> ((956, 19), 0.006210526315790332) >> >>> find_frac(50.4) >> ((252, 5), 0) >> >>> find_frac(10.33) >> ((971, 94), 0.00021276595744623705) >> >>> find_frac(10.**33333333333333333333333333) >> ((31, 3), 0) >> >> Lorenzo. >> >>> >>> >>> >>> 2011/12/16 i go bananas <[email protected] <mailto:[email protected]>> >>> >>> >>> actually, i'm not going to do anything more on this. >>> >>> i had a look at the articles claude posted, and they went a bit >>> far over my head. >>> >>> my patch will still work for basic things like 1/4 and 7/8, but i >>> wouldn't depend on it working for a serious application. As you >>> first suggested, it's not so simple, and if you read claude's >>> articles, you will see that it isn't. >>> >>> it's not brain science though, so maybe someone with a bit more >>> number understanding can tackle it. >>> >>> >>> >>> On Sat, Dec 17, 2011 at 12:51 AM, Alexandre Torres Porres >>> <[email protected] <mailto:[email protected]>> wrote: >>> >>> > i had a go at it >>> >>> thanks, I kinda had to go too, but no time... :( >>> >>> > yeah, my patch only works for rational numbers. >>> >>> you know what, I think I asked this before on this list, >>> >>> deja'vu >>> >>> > will have a look at the article / method you posted, claude. >>> >>> are you going at it too? :) >>> >>> by the way, I meant something like 1.75 becomes 7/4 and not >>> 3/4, but that is easy to adapt on your patch >>> >>> thanks >>> >>> cheers >>> >>> >>> >>> 2011/12/16 i go bananas <[email protected] >>> <mailto:[email protected]>> >>> >>> >>> by the way, here is the method i used: >>> >>> first, convert the decimal part to a fraction in the form >>> of n/100000 >>> next, find the highest common factor of n and 100000 >>> (using the 'division method' like this: >>> >>> http://easycalculation.com/**what-is-hcf.php<http://easycalculation.com/what-is-hcf.php>) >>> >>> then just divide n and 100000 by that factor. >>> >>> actually, that means it's accurate to 6 decimal places, i >>> guess. well...whatever :D >>> >>> >>> >>> >>> >>> ______________________________**_________________ >>> [email protected] mailing list >>> UNSUBSCRIBE and account-management -> http://lists.puredata.info/** >>> listinfo/pd-list <http://lists.puredata.info/listinfo/pd-list> >>> >> >> >> ______________________________**_________________ >> [email protected] mailing list >> UNSUBSCRIBE and account-management -> http://lists.puredata.info/** >> listinfo/pd-list <http://lists.puredata.info/listinfo/pd-list> >> > > > _______________________________________________ > [email protected] mailing list > UNSUBSCRIBE and account-management -> > http://lists.puredata.info/listinfo/pd-list > >
_______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
