<: 2x ^ 3 5 7 11 13 17 19 31 61 89
7 31 127 2047 8191 131071 524287 2147483647
2305843009213693951 618970019642690137449562111
<: 2x&powGB"0 ] 3 5 7 11 13 17 19 31 61 89
7 31 127 8191 2047 131071 33554431 2147483647
140737488355327 151115727451828646838271
Looks like powGB is not correctly doing the same thing as
<: 2x ^ N
powGB =: (**:)/@(|.@|....@#:@]{1x,[) NB. <: 2x powGB 2203 is
an example of use.
any thoughts?
----- Original Message Follows -----
From: Aai <[email protected]>
To: Programming forum <[email protected]>
Subject: Re: [Jprogramming] Mersenne Prime initialization.
Date: Thu, 09 Apr 2009 19:37:20 +0200
>powGB has infinite rank:
>
> powGB b. 0
>_ _ _
>
>so to work on an array use:
>
> <: 2x&powGB"0 ] 3 5 7 11 13
>7 31 127 2047 8191
>
>
>Hallo [email protected], je schreef op
>> 09-04-09 19:23: powGB=: (**:)/@(|....@#:@]{1x,[)
>>
>> <: 2x powGB 3
>> 7
>> <: 2x powGB 5
>> 31
>> <: 2x powGB 3 5
>> 1 3 7
>>
>> I would have expected 7 31
>>
>> <: 2x powGB 3 5 7
>> 7 31 127
>>
>> <: 2x powGB 3 5 7 11 13
>> 7 8191 4194303 2147483647
>>
>> <: powGB 3 5 7
>> 26 242 2186
>>
>> it seems that powGB has problems.
>>
>> Anybody have thoughts on how to modify powGB so
>> it produces "<: 2x ^ N" properly for vector inputs.
>>
>> It seems to work correctly when the rhs is only one
>> value and not a vector of values.
>>
>> 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
>
>--
>=@@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