I have to digest this, but thanks a lot for the tip.

I need to rethink.

----- Original Message Follows -----
From: Henry Rich <[email protected]>
To: Programming forum <[email protected]>
Subject: Re: [Jprogramming] Mersenne Prime initialization.
Date: Thu, 09 Apr 2009 13:13:45 -0400

>You seem to think that an extended integer is stored as a
>big binary  number.  This is not so.
>
>    3!:3 ] 9999x
>e1000000
>40000000
>01000000
>00000000
>14000000
>e1000000
>04000000
>01000000
>01000000
>01000000
>0f270000  NB. Here is where the value starts
>    3!:3 ] 10000x
>e1000000
>40000000
>01000000
>00000000
>14000000
>e1000000
>04000000
>02000000
>01000000
>02000000
>00000000  NB. Here is where the value starts
>01000000
>     3!:3 ] 10001x
>e1000000
>40000000
>01000000
>00000000
>14000000
>e1000000
>04000000
>02000000
>01000000
>02000000
>01000000  NB. Here is where the value starts
>01000000
>
>As you can see, long integers are stored in base-10000
>representation.  I don't know why, but I'd guess it makes
>multiplication faster.
>
>You can create the representation of your data in an array
>like this and  use 3!:2 to make that a long integer, if you
>want to build your values  by hand.
>
>Henry Rich
>
>[email protected] wrote:
>> initializing a hunk of memory with binary 1s should be
>> very fast in machine language.
>> 
>> Anybody have pointers to where I might find a discussion
>> of linking in a custom
>> made assembler program into J?
>> 
>> Given N equals the number of binary 1's
>> 
>> Vec =: myMersenneInitialization N
>> 
>> 
>> produces the same thing as:
>> 
>> Vec =: <: 2x^N
>> 
>> thanks
>> 
>> 
>> 
>> 
>> ----- Original Message Follows -----
>> From: Aai <[email protected]>
>> To: Programming forum <[email protected]>
>> Subject: Re: [Jprogramming] Mersenne Prime
>> initialization. Date: Wed, 08 Apr 2009 13:55:10 +0200
>> 
>>> Also, it's possible that:
>>>
>>>   #. 110503$1x
>>> |out of memory
>>> |       #.110503$1
>>>
>>> You can use a folding instead:
>>>
>>>   ([++:@])/ 110503$1x
>>> 5219283133417550597608921138394131714748003987...
>>>
>>> or ignoring the 1s:
>>>
>>>   >:@+:@]/ 110503$1x
>>>
>>> or with power ^:
>>>
>>>   >:@+:^: (<: 110503) 1x
>>> 5219283133417550597608921138394131714748003987...
>>>
>>>
>>> but it's also very slow..
>>>
>>>   ts '([++:@])/ 110503$1x'
>>> 16.633282 788352
>>>
>>>   ts '>:@+:^: (110502) 1x'
>>> 16.738218 329344
>>>
>>>
>>> Using a specialized exponentiation provides some speed
>>>up: 
>>> powGB=: (**:)/@(|....@#:@]{1x,[) NB. don't know who's
>>> brainchild, sorry
>>>
>>> .. and showing the last 31 digits:
>>>
>>>   ts 'it=:_31{.": <: 2x powGB 110503'
>>> 0.633862 296960
>>>   it
>>> 9131999107769951621083465515007
>>>
>>> Compared to:
>>>
>>>    ts 'it=:_31{.": <: 2x ^ 110503'
>>> 1.414242 430912
>>>   it
>>> 9131999107769951621083465515007
>>>
>>> I didn't try MP39 though (well, just for a while). :-)
>>>
>>> To obtain MP39 I used Haskell's interpreter GHCi (using
>>> the equivalence of ext. prec.: arbitrary prec. integers)
>>> showing the last 46 digits from a total of 4053946
>>>> digits ( .13466917*10^.2) :
>>> *Main> (take 9 &&& (take 9 .drop 4053937)).show . pred $
>>> 2^13466917 ("924947738","256259071")
>>> (19.89 secs, 155769356 bytes)
>>>
>>> Check with: http://en.wikipedia.org/wiki/Mersenne_prime
>>>
>>>
>>>
>>> Hallo Matthew Brand, je schreef op 08-04-09 09:09:
>>>> You can do it like this:
>>>> #. N # 1x
>>>>
>>>> ... but it is *much* slower than  doing <: 2x^N
>>>>
>>>> On Tue, Apr 7, 2009 at 7:39 PM, 
>>>>   <[email protected]> wrote: 
>>>>> The following are Mersenne Primes 2, 3, 15, 29 and 39
>>>>>
>>>>> MP2 =: <:2x^3
>>>>> MP3 =: <: 2x^5
>>>>> MP5 =: <: 2x^13
>>>>> MP15 =: <: 2x^1279
>>>>> MP29 =: <: 2x^110503
>>>>> MP39 =: <: 2x^13466917
>>>>>
>>>>> As an example <: 2x^3 in binary is 1000 - 1 which is
>>>>> binary 111
>>>>>
>>>>> Any mersenne prime of the form <: 2x^N is    "N binary
>>>>> 1s" 
>>>>> It takes a very long time to calculate MP39.
>>>>>
>>>>> How could I accomplish the same thing by noting that
>>>>> in the case of MP39, I need to create an
>>>>> extended value that is "13466917 binary 1s"
>>>>>
>>>>> thanks
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>>>
>-----------------------------------------------------------
>>>>> ----------- For information about J forums see
>>>>>     http://www.jsoftware.com/forums.htm  
>>>>
>>>>
>>>>   
>>> -- 
>>> =@@i
>>>
>>>
>>>
>-----------------------------------------------------------
>>> ----------- For information about J forums see
>> http://www.jsoftware.com/forums.htm
>-----------------------------------------------------------
>> ----------- For information about J forums see
>> http://www.jsoftware.com/forums.htm 
>-----------------------------------------------------------
>----------- For information about J forums see
>http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to