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

Reply via email to