2009/8/14 Nicolas Cellier <nicolas.cellier.aka.n...@gmail.com>: > 2009/8/13 Igor Stasenko <siguc...@gmail.com>: >> 2009/8/13 <csra...@bol.com.br>: >>> For the mathematical part yes. Now, submiting to all the list, I want to >>> propose a modification in the code based on Smalltalk style (the comments >>> w/"csr" are only for my explanation and should not go to the production >>> code!): >>> >>> < other >>> "Can only compare with pure real or imaginary parts" >>> ((self imaginary = 0) and: [other imaginary = 0]) >>> ifTrue: [^ self real < other real]. "csr: if it's true you >> >> i think, if imaginary part is zero , then Complex values should be >> normalized back to real ones (obviously to conserve the memory), and >> therefore the test 'self imaginary = 0' is redundant. >> > > Hi Igor, > this is Behavior of Complex package available in VW. > However, I wonder how you can conciliate the previous requirement: > -2 asComplex sqrt > > For example, I want this function > myFun > ^x sqrt arcSin > But I know -4 myFun will fail... > > So, I hear you and write > myFun > ^x asComplex sqrt arcSin > But there, problem, 4 myFun will raise an error, so as 4 asComplex myFun > > Then, i can write smelling code like this - that's no real fun ;) > myFun > ^x asComplex sqrt asComplex arcSin > > unless of course you propose I hide this shit behind some other selectors > like: > myFun > ^x complexSqrt complexArcSin > > but then I will probably want some other extensions like the > quaternionArcSin, the squareMatrixArcSin, etc... > so, I don't know if I'm really satisfied with those selectors... >
You are right about drawbacks of normalization. I suggested that by taking Ken's implication, that any real number is a complex number with imaginary part = 0. I'm not very satisfied with selectors , like arcSin/complexArcSin too, but is there other way to put two different functions into a single class (Float) - without assigning different selectors to them? I hope you agree with me that arcSin and complexArcSin is two different functions with different behavior , as well as sqrt and complexSqrt. They could be the same (with complex behavior) , if we imply that real numbers is a complex numbers with imaginary part =0. But once we assume that , we automatically losing the set of functions which defined strictly over a real set and which should throw an error(s) if argument is not in valid range. And i'm not in favor of losing that. > Nicolas > > _______________________________________________ > Pharo-project mailing list > Pharo-project@lists.gforge.inria.fr > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > -- Best regards, Igor Stasenko AKA sig. _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project