The question is why do you want Floats to be the default implementation of reals instead of ScaledDecimals?
On Wed, Jul 8, 2009 at 4:29 PM, Igor Stasenko <[email protected]> wrote: > 2009/7/8 Hernan Wilkinson <[email protected]>: > > it was just an example where you can "bind" as "late" as possible a > > combination of symbols with its value... I like late binding :-) in this > > example allows you to get rigth results... and of course > > cosPiHalved is not the same as "a/b cos" where a is bound to pi and b to > > 2... it is not only for literals. > > > > If you like the late binding, and if you are using a set of functions > which having no side effects , then > you can, instead of computing the result , store the numerical > operations (in same fashion as Fraction stores division) and compute > the exact value(s) only when you really need them. > Then you can bring in the power of mathematical apparatus/trigonometry > rules and use them at full scale. > > Think, how many things we can add (in parallel to Fraction) > SquaredNumber > SquaredRootNumber > CosFn > SinFn > TanFn > PiFraction > and so on.. limited only by your own limits/knowledge... > > But again, all of this stuff is more related to predicting than exact > computing , which is happens to be inexact because of hardware > limitations :) > > > On Wed, Jul 8, 2009 at 3:59 PM, Igor Stasenko <[email protected]> > wrote: > >> > >> 2009/7/8 Hernan Wilkinson <[email protected]>: > >> > > >> >> > >> >> > >> >> > [...] and if you write 1.3, the object that represents that number > >> >> > is not going to be an instance of float but of scaledecimal or > >> >> > fraction or whatever, but not float... > >> >> > >> >> That only solves the issue of representing literals because: > >> >> > >> >> > >> >> > and all operations are made with exact representation. > >> >> > >> >> > >> >> > >> >> cannot be done for all operations: obvious ones like square root, > log, > >> >> sin, etc and less obvious ones like #squared where you run out of > >> >> enough bits to maintain precision (in fixed-width implementations). > >> > > >> > not really... root, log, sin, etc could be messages that only inexact > >> > numbers know how to answer , so you want "2 sqrt", do "2 asFloat > sqrt", > >> > but > >> > for +, *, /, etc. they work as expected. > >> > We can also have better representations for number like pi. Why pi is > >> > instance of Float and not Pi? If pi is instance of Pi, then cos(pi/2) > = > >> > 0 > >> > could be true... just a quick hack: > >> > Pi>>/ aNumber > >> > > >> > ^ Fraction numerator: self denominator: aNumber "Or maybe an object > >> > representing that Pi has been divided/multiplied, etc > >> > > >> > Fraction>>cos > >> > > >> > ^ numerator cosDividedWith: denominator > >> > > >> > Pi>>cosDividedWith: denominator > >> > > >> > ^denominator = 2 ifTrue: [ 0 ] ifFalse: [ ... ] > >> > > >> > and so on > >> > > >> > >> > >> don't forget to add > >> Pi>>mantisOfLength: numBits > >> > >> to compute the Pi up to given precision. :) > >> > >> > >> But your examples is not about computing a result, but rather predicting > >> it. > >> So why bother writing so much stuff , while you can just implement : > >> > >> Number>>cosPiHalved > >> ^ 0 > >> > >> :) > >> > >> >> > >> >> > >> >> > >> >> R > >> >> - > >> >> > >> >> > >> >> _______________________________________________ > >> >> Pharo-project mailing list > >> >> [email protected] > >> >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > >> > > >> > > >> > _______________________________________________ > >> > Pharo-project mailing list > >> > [email protected] > >> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > >> > > >> > >> > >> > >> -- > >> Best regards, > >> Igor Stasenko AKA sig. > >> > >> _______________________________________________ > >> Pharo-project mailing list > >> [email protected] > >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > > > _______________________________________________ > > Pharo-project mailing list > > [email protected] > > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > > > > > -- > Best regards, > Igor Stasenko AKA sig. > > _______________________________________________ > Pharo-project mailing list > [email protected] > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > -- Hope is for sissies (Gregory House, M.D.)
_______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
