Hello! You're invited to come over to the wonderful Argentine patagonia
to participate in Smalltalks 2012. This year we will host the
conference at a new venue for us: Puerto Madryn. We're very pleased to
see different sections of the Argentine Smalltalk community represented
every year.
Special issue on Advances in Dynamic Languages
Special issue of Elsevier's Science of Computer Programming (SCICO)
Context
---
Over recent years we have seen an increased interest in dynamic
Part of why those attacks are so easy is that the factor for the
multiplicative hash function is very poor (i.e.: 33, 31, etc). There is
nothing spectacular about this reasoning, those cool looking factors
chosen using the digital (finger) method should have been stamped out a
long time ago.
He might imply any finalization process that runs on the weak
collection after the objects are collected must be thread safe, which
seems reasonable. You may get away with free atomic finalization if
you have a finalization queue... but not always. For example, what
happens if the
down the whole thing], then it will continue
finalizing [other objects].
On 12/27/11 3:47 , Andres Valloud wrote:
He might imply any finalization process that runs on the weak
collection after the objects are collected must be thread safe, which
seems reasonable. You may get away with free
@lists.gforge.inria.fr; andres.vall...@gmail.com
Subject: Re: [Pharo-project] Destiny of changed:/update:
On Mon, 26 Dec 2011, Andres Valloud wrote:
That's not how ephemerons work, and they also get finalized. Both of you may
be right...
Well, yes, with ephemerons you can implement a finalization mechanism
That's not how ephemerons work, and they also get finalized. Both of
you may be right...
On 12/26/11 16:49 , Levente Uzonyi wrote:
On Mon, 26 Dec 2011, Schwab,Wilhelm K wrote:
Levente,
Not meaning to be confrontational, but finalization does not happen in any
type of collection. It
I betcha the performance problem is because the collision trains end
up hitting each other. In this case you likely won't be able to avoid
collisions. So, instead of the regular hashed collections that use open
addressing linear probing, use a hashed collection that stores objects
in hash
CALL FOR PAPERS
SMALLTALKS 2011
5th International Conference on Smalltalk Technologies
Research Track: Call for Papers
November 3th - 5th, 2011
Important dates:
Submission (Hard Deadline): August 22th, 2011 (Argentinian time:
UTC/GMT -3 hours).
Notification of acceptance: September 23th,
But unfortunately we do not have tail recursion (that I know)...
On 6/16/11 10:46 , Lorenzo Schiavina wrote:
IMHO factorial is a good OO example because you have not the usual
limitation of traditional languages and you can understand the OOP power.
Try, for example 1000 factorial in ST and in
In VisualWorks, the place where objects that are likely never garbage
live is called perm space. You get a GC speedup roughly proportional to
the fraction of the image that is perm space (because you don't have to
scan it or mark it), as long as the GC is not global (i.e.: when you
also want
Why this defensive approach to code that adds duplicate entries to a
menu? Why not avoid the duplicated entries from being added to begin with?
On 5/20/11 2:58 , Bernat Romagosa wrote:
You may want the collection from which you build a menu to be a Set
because you don't want to have repeated
Statements like just pretend you know what you're doing should raise
red flags because it leads to doing anything at all, even it is bad, is
good. One might as well forget trying to know in favor of pretending
to know, because doing something (anything) makes you right. But of
course, no
I think you want the add: that returns true/false depending on whether
the object was there or not. In that way, you can just say add: and
forget about includes:.
On 5/19/11 15:34 , Mariano Martinez Peck wrote:
Hi guys. We are doing graph traversal (for Fuel) and we would love a
collection
Agreed. There is a big difference between do something and do it right.
But at same time, sometimes, you have to do something first and only
then you will know how to do it right.
Software development is iterative process.
I support the idea of putting effort into doing things, as opposed to
are going to get problems like those you get with
QueryPerformanceCounter(). Trace through the documentation on the
function QueryPerformanceCounter(), the boot switch /usepmtimer, and
something called HPET.
On 5/2/11 0:49 , Mariano Martinez Peck wrote:
On Mon, May 2, 2011 at 12:56 AM, Andres
specs mention all sorts of problems when one
uses QueryPerformanceCounter(). This is typical MSDN, unfortunately.
On 5/2/11 3:56 , Henrik Sperre Johansen wrote:
On 02.05.2011 00:56, Andres Valloud wrote:
Does the Windows VM depend on QueryPerformanceCounter()?
The Cog VM (which it seemed Jimmie
The way I read it, each _call_ to timeGetTime should be accurate to
within 5 milliseconds.
The docs say 5ms or more, depending on the machine, and there is no
indication of what affects the precision on the machine. But even if
that's irrelevant, your argument assumes nobody else in the
Does the Windows VM depend on QueryPerformanceCounter()?
On 5/1/11 16:53 , Alexandre Bergel wrote:
Strange. I cannot produce this problem on OSX.
Alexandre
On 30 Apr 2011, at 22:15, Jimmie Houchin wrote:
Hello,
My OS for this application is Windows. On a freshly opened image, the image
I use temporary value names such as expectedAnswer and actualValue.
Then I feel there's no confusion.
On 4/30/11 7:20 , Mariano Martinez Peck wrote:
Hi guys. I always code my tests something like this:
testBlah
| universalAnswer |
universalAnswer := 30.
universalAnswer :=
When the expected answer is not a literal, then the order is not so
important. Usually, complex tests have expected answers that are not
literals, and you end up with a method along the lines of
expectedAnswer := self doItOneWay.
actualAnswer := self doItTheOtherWay.
self assert:
Maybe in the last case you also need to send nextPut: instead of
nextPutAll:...
On 4/27/11 23:35 , jannik.laval wrote:
Hi all,
I am playing with MessageTally, and I have a strange result with
prealocation.
Here is my example. I am working on a PharoCore1.3, with a VM4.2.5
First of all, I spy
As a side comment, I do not know if an atAllPut: method I wrote back in
about 2000 or so is still in the image... but if it is not, keep in mind
that you can use something like replaceFrom:to:with:startingAt: using
the receiver as the source of data, duplicating the amount of data
copied each
Johansen wrote:
On 28.04.2011 09:30, Andres Valloud wrote:
As a side comment, I do not know if an atAllPut: method I wrote back
in about 2000 or so is still in the image... but if it is not, keep in
mind that you can use something like replaceFrom:to:with:startingAt:
using the receiver as the source
(!pageBase);
I don't know gcc compilation flag for address space 2G for 32b apps on 64
bits ?
((MS) /LARGEADDRESSEPACE gcc equivalent ?)
Do you know it ?
Andres Valloud
avall...@smalltalk.comcastbiz.net a écrit dans le
message de news: 4db247e5.7020...@smalltalk.comcastbiz.net...
Does that mean
?)
Do you know it ?
No idea :)
Andres Valloud
avall...@smalltalk.comcastbiz.net a écrit dans le
message de news: 4db247e5.7020...@smalltalk.comcastbiz.net...
Does that mean that, even if your app uses 128mb of RAM, the VM will
allocate 512mb of memory regardless? It seems a bit strange
configurations, that won't happen unless you change how Windows boots.
Under some versions, 4gb is just not possible. See here:
http://msdn.microsoft.com/en-us/library/aa366778%28v=VS.85%29.aspx
On 4/23/11 15:40 , Igor Stasenko wrote:
On 23 April 2011 21:48, Andres Valloud
avall
/bb613473%28v=VS.85%29.aspx
Maybe more fundamental changes are needed, such as the ability to change
the image's memory footprint dynamically.
On 4/23/11 17:34 , Andres Valloud wrote:
You can determine the switches better than me... for us, it was
/LARGEADDRESSAWARE, also a linker switch:
http
the HowToBuild note in the vm sources.
On Unix, the build tools are here you just need to download the vm sources
(see the url in previous documents)
and run make.
For Mac, I don't have a Mac I don't know
Regards,
Alain
Andres Valloud
avall...@smalltalk.comcastbiz.net a écrit dans le
message de news
Does that mean that, even if your app uses 128mb of RAM, the VM will
allocate 512mb of memory regardless? It seems a bit strange that just
1gb worth of allocations would cause problems. What about the load
address of the VM and the way the memory chunk is allocated? Has the 32
bit VM been
Yeah, not all operating systems and application environments are the
same. What happens when you let a 512mb image loose in an environment
where you have 10 images running on a 4gb machine? Ouch. What happens
when you let a 2gb image loose in a 1gb machine and you get an infinite
recursion
At the end of the day, we still insist on expecting there won't be loss
of information just because we wrote a decimal print string for a binary
floating point number. One can get offended or irritated all one wants,
but the reality of the situation won't change.
I think the real solution to
On 4/9/11 0:28 , Marcus Denker wrote:
On Apr 9, 2011, at 9:09 AM, Andres Valloud wrote:
I think the real solution to these problems is to implement
decimal floating point as per IEEE-754/2008. \\
The MPFR lib seems to me (as far as I understand) is inspired by IEEE
754
quote from
Immutability may or may not be paid attention to by oneWayBecome:.
You can verify the class format, just to have someone in the image
change the class of an object. What should you do when you do a become:
of a compiled method? What happens when you get the VM to verify and
JIT all the
Is VisualWorks' GC documented somewhere?
What kind of documentation do you mean?
However, you might want to read the VEE'05 paper directly, the GC
they use is 'nothing-like' a typical incremental GC. The read-barrier
is the key here, and that is a rather exotic approach due to its
constant
What kind of documentation do you mean?
A paper about the GC algorithm, the name of the algorithm?
There are some docs that state what happens, the docs come with the VM
sources. But, basically, when the IGC is marking, then writes into
marked objects mark objects. This allows mark stack
FWIW, the pauseless feature of the algorithm sounds very close (if not
exactly) like VisualWorks' incremental GC, modulo the multithreading.
On 2/26/11 9:46 , Stéphane Ducasse wrote:
Thanks damien for the link :)
Begin forwarded message:
Nice explanation of the Azul Pauseless GC (easier
In case it helps, I've seen GCC produce different code for function A
when I change function B. This can happen even if function B is not in
the (reasonably close) execution path of function A. However, the
differences I've seen are along the lines of e.g.: using %r10 instead of
%r9, or
Or the signal handler functions do not comply with the relevant
specifications, e.g.: signal handlers that do not preserve the value
of errno, signal handlers that use a function not in the list of
approved safe functions you can call from a signal handler as per
the Single
Indeed, quite right. I happened to add a flag to turn off the heartbeat
so I could debug the crash Matthew was seeing in starting up
Squeak4.2-10856-beta.image (since single-stepping through machine code
always gets interrupted by the heartbeat, it being an interval timer)
and lo and behold the
That sounds familiar... are there bitfields next to a memory allocation
zone boundary? GCC will issue read instructions that read off the
bitfield (documented in the manual --- can't really complain), so you
can get a segfault reading a bitfield if GCC emits instructions at
compile time that
Hello, the FAST foundation is happy to announce that the videos and
slides from Smalltalks 2010 are now available at http://www.fast.org.ar.
Enjoy!
Wouldn't debugging be harder if arguments could be assigned to? Where
would you keep the original argument? If you did that, wouldn't it be
more costly to run methods?
On 11/28/10 6:36 , Adrian Lienhard wrote:
Its an artificial restriction. Method arguments are just like temps, i.e., the
The sessions were recorded, and will become available when we're done
going over the video. Stay tuned :).
On 11/10/10 2:07 , Torsten Bergmann wrote:
Will Smalltalks 2010 in Argentina be recorded to provide
the sessions on the web later or streamed to the web similar
to ESUG?
Thx
T.
Keep in mind that finding senders will be more difficult, and that you
may or may not find the code you're looking for later if it is
non-standard (e.g.: with the rewrite tool, you will have to search
potentially many times to find all occurrences of a certain piece of
code). Finally, with
Mariano,
On 10/30/10 13:14 , Mariano Martinez Peck wrote:
100% agree. It was just funny for me, how could I do that, just
implementing Synbol value:
Just something curious and funny. Not to really use it.
I agree with this, polymorphism is awesome. For instance, something I
did with
:
- in Mondrian, we use moValue:
- in Glamour, we use glamourValue:
Using dedicated extensions enable us to control the kinds of semantics we want
in the scripting. For example, the glamourValue: is different from moValue:.
Cheers,
Doru
On 30 Oct 2010, at 22:56, Andres Valloud wrote:
Mariano,
On 10/30/10
Original Message
Subject: Re: [squeak-dev] How weak finalization affects the performance
Date: Tue, 26 Oct 2010 03:30:13 -0400
From: Andres Valloud avall...@smalltalk.comcastbiz.net
Reply-To: andres.vall...@gmail.com andres.vall...@gmail.com, The
general-purpose Squeak
I am not sure the code in the book needs a license. After all,
eventually you will get the distribution for the source code in question
and then you will (should) have an MIT license... does that make sense?
On 9/30/10 19:23 , Sean P. DeNigris wrote:
Andres Valloud-4 wrote:
Well, since
Well, since this discussion is public now :)... exactly what seems to be
the problem? The book talks about code that is often in the public
Store repository. Is the problem that the code in the public Store
repository doesn't have an MIT license? Or is the problem that the book
that talks
INGLES
The Fundación Argentina de Smalltalk (FAST) invites you to the 4th
Smalltalk Conference of Argentina, to be held on November 11, 12 and 13,
2010 at the Concepción del Uruguay site of the Universidad Tecnológica
Nacional. Everyone, including teachers, students, researchers,
** PLEASE EXCUSE US IF YOU RECEIVE MULTIPLE COPIES **
CALL FOR PAPERS
SMALLTALKS 2010
4th Argentinian Smalltalk Conference
Research Track: Call for Papers
November 11th – 13th, 2010
Important dates:
Submission (Hard Deadline): September 7th, 2010 (Argentinian time:
UTC/GMT -3 hours).
I don't know if others already voiced this concern, but what happens
when the symbol does not resolve unambiguously if there are classes with
the same leaf name in different namespaces?
On 7/22/10 6:13 , Philippe Marschall wrote:
Hi
VAST has an #asClass method on Symbol that does more or
I still think leaving identityHash alone and using scaledIdentityHash to
multiply by 2^18 is better for backwards compatibility. However, I do
not know how much of a problem changing identityHash will cause for
existing code. Something that has always bugged me about changing
identityHash is
Hello,
While working on hashing, I wrote this bit of new code to speed up some
of the tools. I hope I didn't make a mistake... it seems to me it
should work fine.
Enjoy!
Andres.
'From Pharo1.0rc1 of 19 October 2009 [Latest update: #10491] on 1 November 2009 at 4:30:53 pm'!
Change Set:
Wonderful --- happy to help!
Lukas Renggli wrote:
Great. I included your changes in OB. It doesn't seem to break any tests.
Lukas
2009/11/2 Andres Valloud avall...@smalltalk.comcastbiz.net:
Hello,
While working on hashing, I wrote this bit of new code to speed up some of
the tools
Watch out, because code like this may or may not work:
someDictionary keys do:
[:each | each isNotInteresting ifTrue: [someDictionary removeKey: each]]
Thus, I think keys should answer a new collection. If the intent is to
iterate over the keys, then I'd send the message directly to the
Ok, I can prepare the checkpointed changesets for Martin's changes then.
Stéphane Ducasse wrote:
Ok since there were some other discussions I think that andres and
martin got a consensus
on the solution (I had the impression that the one of martin was
prefered).
So as soon as the code is
Nicolas,
Would you like Martin's approach better if the selector was
#basicIdentityHash instead of #primIdentityHash? Is it a matter of
naming only, or is there something else?
Andres.
Nicolas Cellier wrote:
After-thoughts: my opinion is:
Martin solution is more pragmatical : it is
(note that I mentioned Magma just for the sake of illustration for my
argument... I do not know whether either approach will affect it)
Nicolas Cellier wrote:
2009/10/28 Stéphane Ducasse stephane.duca...@inria.fr:
Martin
are these changes related to the graphs you sent?
I will have a
Stephane et al,
Martin and I discussed this yesterday night at the PDX Smalltalk user
group meeting. Mostly we agree, with perhaps one small exception. In
order to make hashed collections simpler and identity hash handling more
straightforward, hashed collections should get a small integer
Nicolas,
Where is the balance between expensive hash and expensive collisions ?
The cost of collisions is
- perform hash and = on each successive keys untill hash is different
or = is true
Omitting a single byte in a ByteString leads to 256 possible collisions...
So with this POV, it is
Hello, are these problems known? I am using the latest RC build.
* Create changeset X. Touch method Foobar. Create changeset Y.
Touch method Foobar again. Fileout changeset X. The fileout has the
code for changeset Y.
* Delete the first ! in a changeset with a preamble. Try to load it
Quick tests show using #hash instead of #scaledIdentityHash makes the
system dictionary need 30% more time to retrieve all its keys. I didn't
try adding. The system dictionary size was about 3500.
Lukas Renggli wrote:
Yeah, that could be a problem. Strangely SystemDictionary is a
subclass
Watch out for cancellation effects... if the collections are
sequenceable and the hash values of their contents are not well
distributed, you may end up with performance issues because the hash
values cancel each other because the hash function commutes. Consider
for example the hash value of
I'd rather make the interval not equal to the array, at least with the
message #=. Probably that can't be done safely. If that's the case,
I'd say the best approach is to leave it broken but documented in
terms of some collections may compare 'reasonably', however, since
equality in those
(furthermore, changing Intervalhash to match that of Array in cases
like (1 to: SmallInteger minVal) is bound to cause unacceptable
performance penalties)
Andres Valloud wrote:
I'd rather make the interval not equal to the array, at least with the
message #=. Probably that can't be done
Wonderful! I think I can contribute a different kind of brain surgery,
I'll try to hack that together in a bit.
Martin McClure wrote:
OK, here's a filein that improves Pharo hashed collection performance
quite a bit. Large collections are much faster, and small ones are
pretty much the
Nicolas,
Yes, large Array hash has severe performance penalty anyway.
Maybe we shall not hash each and every element.
I disagree. The issue is that if hashing a very large array (or string)
becomes a performance problem, then we should engineer applications so
that we hash the metadata
Igor et al,
Let me simplify the goal of perfect hashing:
- suppose you having N unique integer numbers, without strictly
specified range (any number could lie in range 0..infinity).
- now we need to find a function such that, for each element 'x' in
the above finite set, following conditions
The nice way of doing this would be to have a layer of indirection so
that the storage strategy decides how to use the hashed storage.
However, compared to the current Set/Dictionary implementation, that may
be a bit slower. It would not be a terrific idea to have multiple
subclasses of
...
Andres.
Martin McClure wrote:
Andres Valloud wrote:
I thought I'd point out a subtle potential problem. Assume N = 1000,
f(x_j) = j-1, and so k = 1 because 0 = f(x_j) N because 0 j =
1000. Now, store x_{7i} in a Set, for all i such that 1 = 7i = 1000.
Clearly, f(x) is a perfect hash
Igor et al,
That's why each of implementations (Dictionary and HashTable) having own
niche.
For small sizes, dictionaries in their current state is best.
For bigger sizes, one could choose to use HashTable, or any other
implementation, which may fit better.
As long as this refers to
In general terms, open addressing with linear probing should tie or beat
chaining. For this to happen, the hash function used must be of high
quality. If chaining is beating open addressing with linear probing,
I'd strongly suspect that the hash function used is producing
significant
Martin,
You are, of course, correct.
Well yes, thank you :), but it also helps when good, qualified people go
over one's assertions to make sure they're not wrong.
--
First, the identity-based collections.
The current IdentitySet and IdentityDictionary implementations do
Hmmm... just off the top of my head, I think that would be
Dr.~St\'ephane Ducasse
The ~ is there to tell LaTeX that yes, there's a period, but it's not an
end of sentence period, so don't treat the separation between the
period and the S as a flexible space.
Andres.
Schwab,Wilhelm K wrote:
Greetings,
The Fundación Argentina de Smalltalk, FAST :), is pleased to announce
the Smalltalks 2009 website. The address is
http://www.fast.org.ar
Enjoy!
Andres.
___
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
OOoohhh... I remember doing similar hacks in Squeak... it's been quite a
while since I was familiar with the code, but I thought I'd mention this
in case it helps. Today, I get the impression that, more than
properties, what morphs need are policy objects. In that way, acting as
a response
Argentina's third Smalltalk conference, Smalltalks 2009, will be held
from November 19th through November 21rd at the Facultad de Ciencias
Exactas y Naturales (FCEyN), Universidad de Buenos Aires (UBA).
All those connected with Smalltalk, be it faculty, students,
researchers, developers or
Yes, I plan to take some with me :).
Andres.
Henrik Sperre Johansen wrote:
On 15.08.2009 04:29, Andres Valloud wrote:
Hello,
I just published the 400 page book Fundamentals of Smalltalk Programming
Technique, volume 1. To some extent it's fitting that I am publishing
another book
Hello,
I just published the 400 page book Fundamentals of Smalltalk Programming
Technique, volume 1. To some extent it's fitting that I am publishing another
book this time of the year. I started writing the Mentoring Course book (of
which the Hash book was chapter 7) almost 4 years ago. The
The content is pretty much dialect agnostic. It does reference
VisualWorks every so often, but only for the sake of illustration.
Henry Lenzi wrote:
On Fri, Aug 14, 2009 at 11:29 PM, Andres
Valloudavall...@smalltalk.comcastbiz.net wrote:
Hello,
I just published the 400 page book
Just briefly... I'd keep the base numbers simple while leaving the door
open for optional, loadable packages to extend comparisons as
necessary. IMO, matching the capabilities of C (integers, floating
point) plus fractions should be sufficient for a base system. If not,
there is the risk of
I'd favor removing such methods. The allocation optimization can be
implemented better whenever it's needed, and IME it doesn't happen that
often.
Stéphane Ducasse wrote:
so in that case I would be in favor to remove them because this
does not help and just bloat the image.
On Jul 16,
Stephane,
Computer float numbers are NOT math float numbers. Let us accept it.
I agree with your sentiment. At the risk of being overly precise, I'd
state that computer float numbers are not our everyday decimal numbers.
I'd avoid the reference to math because computer floating point
Regarding the == instead of =, the only thing I can think of is identity
checking of small integers, where in VW you get some improvement by
using == instead of =. IIRC, I measured 25% faster in a loop that just
did == as opposed to =. But, of course, using that kind of code is
asking for
Would NaN be polymorphic with floats?
Igor Stasenko wrote:
Btw, Nicolas,
in some past, i have proposed to exclude NaN from Float(s) at all by making:
NaN is a singleton instance of class NotANumber
and change all VM floating point primitives to return such singleton
in case if computation
Well, but on the other hand, what happens when you do things like 1.0 +
NaN or NaN + 1.0? It should work...
Igor Stasenko wrote:
2009/7/8 Andres Valloud avall...@smalltalk.comcastbiz.net:
Would NaN be polymorphic with floats?
Do you mean , be a part of Number/Float class hierarchy
FWIW... VW has two choices... a) fail the primitives when the answer is
INF or NaN, or b) return whatever the FPU says. Also, NaN and INF are
regular instances of Float and Double...
Reinout Heeck wrote:
On Jul 8, 2009, at 12:53 PM, Andres Valloud wrote:
Well, but on the other hand
would you do?
Nicolas Cellier wrote:
2009/7/8 Andres Valloud avall...@smalltalk.comcastbiz.net:
FWIW... VW has two choices... a) fail the primitives when the answer is
INF or NaN, or b) return whatever the FPU says. Also, NaN and INF are
regular instances of Float and Double...
What
What do we mean when we write 1.3 in a computer language, most of the time?
Again, looking at VW just because I'm most familiar with it these days,
doubles (what Squeak calls floats) are written as 1.3d. Floats (single
precision IEEE-754) are written 1.3, but can also be written 1.3e.
Hernan
Fortunately, there's a standard for floating point arithmetic...
hopefully we'll get hardware support for decimal floating point some day
--- although I can see how somebody might complain because
12765275237652375367328763862.34876387628726872368276823 got rounded to
David Goehrig wrote:
IEEE754 run contrary to all of my 18 years of sudying math and using
rational numbers.
I find that a bit difficult to accept because numerical analysis courses
in colleges and universities describe floating point arithmetic as a
basis for the material. Really: without
This kind of approach will introduce discontinuity problems when the FPU
is asked to calculate sin(x) when x is close to zero... IME, most
platforms offer a different answer to that kind of stuff. IIRC, SGI was
the only platform I found with natural tan(x) behavior. If you
introduce better
Hernan, floating point values are fractions of the form
+/- m * 2^k
for positive integers m of up to a certain number of bits. Your example
requires
13/10 = m * 2^k
which is not possible. In slow motion...
2^k = 13/10m
To get rid of 13, m must be 13*n...
2^k = 1/10n
Now, 1/10 = 1/5 *
VisualWorks introduced LimitedPrecisionRealasFraction. That message
returns the actual floating point value represented by the receiver. Of
course, I messed up and forgot * self sign... but that's the idea (and
it's fixed for 7.7). So, in reality, you should compare
13/10 = 1.3 asFraction
are fractions, then r1 ~= r2 but r1 = f and r2 = f. And those do exist...
Andres.
Stéphane Ducasse wrote:
so andres what will be the value of
(13/10) = 1.3
in VW7.7
On Jul 7, 2009, at 11:18 PM, Andres Valloud wrote:
VisualWorks introduced LimitedPrecisionRealasFraction
Nicolas
2009/7/7 Andres Valloud avall...@smalltalk.comcastbiz.net:
VisualWorks introduced LimitedPrecisionRealasFraction. That message
returns the actual floating point value represented by the receiver. Of
course, I messed up and forgot * self sign... but that's the idea (and
it's fixed
Il y a même une infinité de Fractions r telles que
f-0.5*ulp r f+0.5ulp
Yes... find two with small integer numerators and denominators... bonus
points if you find fractions with small smallIntegers, too.
Anyway, Andres, tell me what how you can bear this VW behaviour I
exposed to
The VW tests use something along the lines of
self assert: aResult isWithin: anInteger ulpsFrom: anExpectedValue
Igor Stasenko wrote:
As a compromise,
i propose adding:
FloatisAlmostZero
^ self abs Epsilon
And write tests like:
(13/10) = 1.3
in form:
((13/10) - 1.3) isAlmostZero
1 - 100 of 115 matches
Mail list logo