LargePositiveInteger crash in testNumberOfDigits

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

LargePositiveInteger crash in testNumberOfDigits

Frank Shearar-3
 
http://build.squeak.org/job/SqueakTrunk/230/console shows a segfault
in the LargeIntegerPlugin, on Cog r.2701. I've attached the crash.dmp
because otherwise it'll potentially get overwritten by the next build.

The interesting part of the stack is this:

Squeak VM version: 4.0-2701 #1 Mon Mar 11 17:31:47 PDT 2013 gcc 4.1.2
Built from: CoInterpreter VMMaker.oscog-eem.272 uuid:
8f4167f2-5bf0-4d90-9b7f-5355c741c68f Mar 11 2013
With: StackToRegisterMappingCogit VMMaker.oscog-eem.270 uuid:
014f0153-bb02-49b7-b544-d8f3ac2deef6 Mar 11 2013
Revision: VM: r2701 http://www.squeakvm.org/svn/squeak/branches/Cog
Plugins: r2545 http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins
Build host: Linux mcqfes 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST
2009 i686 i686 i386 GNU/Linux
plugin path: /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701
[default: /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/lib/squeak/4.0-2701/]


C stack backtrace:
/var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805cc81]
/var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805ce58]
[0xf57fe40c]
/var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x80e4049]
[0x773c4848]
/var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak(interpret+0x1eb)[0x807ff0b]
/var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak(main+0x397)[0x805d347]
/lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe6)[0xb755dca6]
/var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805ad41]


Smalltalk stack dump:
0xbfc501c4 M LargePositiveInteger(Integer)>quo: 0x788faa9c: a(n)
LargePositiveInteger
0xbfc501e0 M LargePositiveInteger>quo: 0x788faa9c: a(n) LargePositiveInteger
0xbfc50208 M LargePositiveInteger(Integer)>numberOfDigitsInBase:
0x788faa9c: a(n) LargePositiveInteger
0xbfc50238 M IntegerTest>testNumberOfDigits 0x788ad384: a(n) IntegerTest
<snip>
Most recent primitives
replaceFrom:to:with:startingAt:
normalize
+
digitSubtract:
basicNew:
replaceFrom:to:with:startingAt:
<
digitCompare:
digitMultiply:neg:
*
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
basicNew:
replaceFrom:to:with:startingAt:
normalize
basicNew:
replaceFrom:to:with:startingAt:
<
digitCompare:
digitMultiply:neg:
*
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
basicNew:
replaceFrom:to:with:startingAt:
normalize
-
digitAdd:
normalize
basicNew:
replaceFrom:to:with:startingAt:
<
digitCompare:
digitMultiply:neg:
*
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
digitMultiply:neg:
*
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
-
digitSubtract:
<
digitCompare:
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
+
digitAdd:
normalize
<
digitCompare:
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
basicNew:
replaceFrom:to:with:startingAt:
normalize
+
digitSubtract:
basicNew:
replaceFrom:to:with:startingAt:
<
digitCompare:
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
basicNew:
replaceFrom:to:with:startingAt:
normalize
basicNew:
replaceFrom:to:with:startingAt:
<
digitCompare:
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
basicNew:
replaceFrom:to:with:startingAt:
normalize
-
digitAdd:
normalize
basicNew:
replaceFrom:to:with:startingAt:
<
digitCompare:
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
digitMultiply:neg:
*
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
-
digitSubtract:
<
digitCompare:
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
quo:
digitDiv:neg:
normalize
<
digitCompare:
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
*
digitMultiply:neg:
quo:
digitDiv:neg:

frank

crash.dmp (293K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: LargePositiveInteger crash in testNumberOfDigits

Nicolas Cellier
 
Interesting...
How can you tell it's in LargeIntegersPlugin though?

Smalltalk stack indicates that you are in super fallback code already:

Integer>>quo: aNumber
        "Refer to the comment in Number quo: "
        | ng quo |
        aNumber isInteger ifTrue:
                [ng := self negative == aNumber negative == false.
                quo := (self digitDiv: aNumber neg: ng) at: 1.
                ^ quo normalize].
        ^ aNumber adaptToInteger: self andSend: #quo:

And the last sent primitives are strange, they do not reflect above
code (nor Smalltalk fallback code of #digitDiv:neg: ...)

Is it a reproducible behavior?
What if we take the image produced by the build ?

Nicolas

2013/3/22 Frank Shearar <[hidden email]>:

>
> http://build.squeak.org/job/SqueakTrunk/230/console shows a segfault
> in the LargeIntegerPlugin, on Cog r.2701. I've attached the crash.dmp
> because otherwise it'll potentially get overwritten by the next build.
>
> The interesting part of the stack is this:
>
> Squeak VM version: 4.0-2701 #1 Mon Mar 11 17:31:47 PDT 2013 gcc 4.1.2
> Built from: CoInterpreter VMMaker.oscog-eem.272 uuid:
> 8f4167f2-5bf0-4d90-9b7f-5355c741c68f Mar 11 2013
> With: StackToRegisterMappingCogit VMMaker.oscog-eem.270 uuid:
> 014f0153-bb02-49b7-b544-d8f3ac2deef6 Mar 11 2013
> Revision: VM: r2701 http://www.squeakvm.org/svn/squeak/branches/Cog
> Plugins: r2545 http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins
> Build host: Linux mcqfes 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST
> 2009 i686 i686 i386 GNU/Linux
> plugin path: /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701
> [default: /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/lib/squeak/4.0-2701/]
>
>
> C stack backtrace:
> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805cc81]
> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805ce58]
> [0xf57fe40c]
> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x80e4049]
> [0x773c4848]
> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak(interpret+0x1eb)[0x807ff0b]
> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak(main+0x397)[0x805d347]
> /lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe6)[0xb755dca6]
> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805ad41]
>
>
> Smalltalk stack dump:
> 0xbfc501c4 M LargePositiveInteger(Integer)>quo: 0x788faa9c: a(n)
> LargePositiveInteger
> 0xbfc501e0 M LargePositiveInteger>quo: 0x788faa9c: a(n) LargePositiveInteger
> 0xbfc50208 M LargePositiveInteger(Integer)>numberOfDigitsInBase:
> 0x788faa9c: a(n) LargePositiveInteger
> 0xbfc50238 M IntegerTest>testNumberOfDigits 0x788ad384: a(n) IntegerTest
> <snip>
> Most recent primitives
> replaceFrom:to:with:startingAt:
> normalize
> +
> digitSubtract:
> basicNew:
> replaceFrom:to:with:startingAt:
> <
> digitCompare:
> digitMultiply:neg:
> *
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> <
> digitCompare:
> digitMultiply:neg:
> *
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> normalize
> -
> digitAdd:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> <
> digitCompare:
> digitMultiply:neg:
> *
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> digitMultiply:neg:
> *
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> -
> digitSubtract:
> <
> digitCompare:
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> +
> digitAdd:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> normalize
> +
> digitSubtract:
> basicNew:
> replaceFrom:to:with:startingAt:
> <
> digitCompare:
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> <
> digitCompare:
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> normalize
> -
> digitAdd:
> normalize
> basicNew:
> replaceFrom:to:with:startingAt:
> <
> digitCompare:
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> digitMultiply:neg:
> *
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> -
> digitSubtract:
> <
> digitCompare:
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> quo:
> digitDiv:neg:
> normalize
> <
> digitCompare:
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> *
> digitMultiply:neg:
> quo:
> digitDiv:neg:
>
> frank
>
Reply | Threaded
Open this post in threaded view
|

Re: LargePositiveInteger crash in testNumberOfDigits

Frank Shearar-3
 
It's not reproducible; we've just seen it crop up a handful of times
over the last few months. Sadly, the image will have been overwritten
by the next build.

frank

On 24 March 2013 18:19, Nicolas Cellier
<[hidden email]> wrote:

>
> Interesting...
> How can you tell it's in LargeIntegersPlugin though?
>
> Smalltalk stack indicates that you are in super fallback code already:
>
> Integer>>quo: aNumber
>         "Refer to the comment in Number quo: "
>         | ng quo |
>         aNumber isInteger ifTrue:
>                 [ng := self negative == aNumber negative == false.
>                 quo := (self digitDiv: aNumber neg: ng) at: 1.
>                 ^ quo normalize].
>         ^ aNumber adaptToInteger: self andSend: #quo:
>
> And the last sent primitives are strange, they do not reflect above
> code (nor Smalltalk fallback code of #digitDiv:neg: ...)
>
> Is it a reproducible behavior?
> What if we take the image produced by the build ?
>
> Nicolas
>
> 2013/3/22 Frank Shearar <[hidden email]>:
>>
>> http://build.squeak.org/job/SqueakTrunk/230/console shows a segfault
>> in the LargeIntegerPlugin, on Cog r.2701. I've attached the crash.dmp
>> because otherwise it'll potentially get overwritten by the next build.
>>
>> The interesting part of the stack is this:
>>
>> Squeak VM version: 4.0-2701 #1 Mon Mar 11 17:31:47 PDT 2013 gcc 4.1.2
>> Built from: CoInterpreter VMMaker.oscog-eem.272 uuid:
>> 8f4167f2-5bf0-4d90-9b7f-5355c741c68f Mar 11 2013
>> With: StackToRegisterMappingCogit VMMaker.oscog-eem.270 uuid:
>> 014f0153-bb02-49b7-b544-d8f3ac2deef6 Mar 11 2013
>> Revision: VM: r2701 http://www.squeakvm.org/svn/squeak/branches/Cog
>> Plugins: r2545 http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins
>> Build host: Linux mcqfes 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST
>> 2009 i686 i686 i386 GNU/Linux
>> plugin path: /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701
>> [default: /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/lib/squeak/4.0-2701/]
>>
>>
>> C stack backtrace:
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805cc81]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805ce58]
>> [0xf57fe40c]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x80e4049]
>> [0x773c4848]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak(interpret+0x1eb)[0x807ff0b]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak(main+0x397)[0x805d347]
>> /lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe6)[0xb755dca6]
>> /var/lib/jenkins/workspace/SqueakTrunk/target/cog.r2701/coglinux/bin/../lib/squeak/4.0-2701/squeak[0x805ad41]
>>
>>
>> Smalltalk stack dump:
>> 0xbfc501c4 M LargePositiveInteger(Integer)>quo: 0x788faa9c: a(n)
>> LargePositiveInteger
>> 0xbfc501e0 M LargePositiveInteger>quo: 0x788faa9c: a(n) LargePositiveInteger
>> 0xbfc50208 M LargePositiveInteger(Integer)>numberOfDigitsInBase:
>> 0x788faa9c: a(n) LargePositiveInteger
>> 0xbfc50238 M IntegerTest>testNumberOfDigits 0x788ad384: a(n) IntegerTest
>> <snip>
>> Most recent primitives
>> replaceFrom:to:with:startingAt:
>> normalize
>> +
>> digitSubtract:
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> -
>> digitAdd:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> -
>> digitSubtract:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> +
>> digitAdd:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> +
>> digitSubtract:
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> normalize
>> -
>> digitAdd:
>> normalize
>> basicNew:
>> replaceFrom:to:with:startingAt:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> digitMultiply:neg:
>> *
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> -
>> digitSubtract:
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>> normalize
>> <
>> digitCompare:
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> *
>> digitMultiply:neg:
>> quo:
>> digitDiv:neg:
>>
>> frank
>>