Try

    rootsHR =: 3 : 0
 'a b c' =. y
 ((a %~ ]) , (c % ])) _0.5 * b +`-@.(0>[) %: (*:b) - 4*a*c
 )
    rootsHR 1 3 2
 _2 _1

Inside this rootsHR, a b c are "locals" which do not interfere with the global 
a b c .

Kip Murray

Sent from my iPad


On Dec 13, 2012, at 1:13 AM, "Linda Alvord" <lindaalv...@verizon.net> wrote:

> It there some way to have these three work the same way in a script.  Here's 
> my jijs:
> 
>   a=:0 { ]
>   b=:1 { ]
>   c=:2 { ]
>   roots2=:(2*a)%~([:-b)(+,-)[:%:([:*:b)-4*a*c
>   roots2 1 3 2
> _1 _2
>   roots2 1 1 1
> _0.5j0.866025 _0.5j_0.866025
>   roots2 1 0 _1 
> 1 _1
>   'a b c'=:1 1 1
>   rootsHR=:((a %~ ]) , (c % ])) _0.5 * b +`-@.(0>[) %: (*:b) - 4*a*c
>   rootsHR 
> _0.5j_0.866025 _0.5j0.866025
>   erase names 'a b c'
> 1 1 1
>   a=:0 { ]
>   b=:1 { ]
>   c=:2 { ]
>   roots2=:(2*a)%~([:-b)(+,-)[:%:([:*:b)-4*a*c
>   roots2 1 3 2
> _1 _2
> 
> Linda
> 
> 
> -----Original Message-----
> From: programming-boun...@forums.jsoftware.com 
> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of km
> Sent: Wednesday, December 12, 2012 11:09 PM
> To: programm...@jsoftware.com
> Subject: Re: [Jprogramming] Cool roots
> 
> Cool!
> 
> Sent from my iPad
> 
> 
> On Dec 12, 2012, at 6:00 PM, Henry Rich <henryhr...@nc.rr.com> wrote:
> 
>> Oh, I see.  the signum function mustn't return 0.  Should be
>> 
>> ((a %~ ]) , (c % ])) _0.5 * b +`-@.(0>[) %: (*:b) - 4*a*c
>> 
>> 
>> Henry Rich
>> 
>> On 12/12/2012 10:30 AM, km wrote:
>>> Henry, the combined form below fails when b is 0.  Kip
>>> 
>>>    r
>>> 3 : 0
>>> 'a b c' =. y
>>> ((a %~ ]) , (c % ])) _0.5 * (%: (*:b) - 4*a*c) ((* *) + ]) b
>>> )
>>>    r 1 3 2
>>> _2 _1
>>>    r 1 2 1
>>> _1 _1
>>>    r 1 0 1
>>> 0 _
>>>    r 1 0 _1
>>> 0 __
>>>    roots 1 0 1
>>> 0j1 0j_1
>>>    roots 1 0 _1
>>> 1 _1
>>> 
>>> Sent from my iPad
>>> 
>>> 
>>> On Dec 12, 2012, at 6:25 AM, Henry Rich <henryhr...@nc.rr.com> wrote:
>>> 
>>>> I have to disagree.  That's way cool.
>>>> 
>>>> I assumed you used Newton's method to shine up the final values of the 
>>>> roots, but I never knew you tried rational results too.
>>>> 
>>>> It is possible to produce accurate results for quadratics without such 
>>>> heroic measures.  You just can't use the quadratic formula like you 
>>>> learned it in highschool.
>>>> 
>>>> There's the usual quadratic formula:
>>>> 
>>>> (2*a) %~ (-b) (+,-) %: (b^2) - 4*a*c
>>>> 
>>>> and there's a less-well-known alternative form:
>>>> 
>>>> (2*c) % (-b) (-,+) %: (b^2) - 4*a*c
>>>> 
>>>> Each version produces two roots.  The roots created are more accurate when 
>>>> +-(-b) is positive, so you can get one accurate root from each formula.
>>>> 
>>>> To calculate, use the combined form
>>>> 
>>>> ((a %~ ]) , (c % ])) _0.5 * (%: (*:b) - 4*a*c) ((* *) + ]) b
>>>> 
>>>> Accuracy has a coolness all its own.
>>>> 
>>>> Henry Rich
>>>> 
>>>> On 12/12/2012 3:13 AM, Roger Hui wrote:
>>>>>> ... produce more accurate results in some difficult cases.
>>>>> 
>>>>>   c=: p. <20$1.5
>>>>>   c
>>>>> 3325.26 _44336.8 280799 _1.1232e6 3.18239e6 _6.78911e6 1.13152e7 
>>>>> _1.50869e7
>>>>> 1.63441e7 _1.45281e7 1.0654e7 _6.45695e6 3.22847e6 _1.3245e6 441501 
>>>>> _117734
>>>>> 24527.8 _3847.5 427.5 _30 1
>>>>>   p. c
>>>>> ┌─┬────────────────────────────────────────────────────────────────
>>>>> ───────────────┐
>>>>> │1│3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 3r2 
>>>>> 3r2 3r2
>>>>> 3r2 3r2│
>>>>> └─┴────────────────────────────────────────────────────────────────
>>>>> ───────────────┘
>>>>> 
>>>>> 
>>>>> 
>>>>> On Tue, Dec 11, 2012 at 11:29 PM, Roger Hui 
>>>>> <rogerhui.can...@gmail.com>wrote:
>>>>> 
>>>>>> You may or may not know that p. employs some extraordinary measures which
>>>>>> produce more accurate results in some difficult cases.   But those
>>>>>> extraordinary measures are not "cool".  For example:
>>>>>> 
>>>>>>   w=: p. <1+i.20   NB. Wilkinson's 
>>>>>> polynomial<http://en.wikipedia.org/wiki/Wilkinson_polynomial>
>>>>>>   w
>>>>>> 2432902008176640000 _8752948036761600000 13803759753640704000
>>>>>> _12870931245150988800 8037811822645051776 _3599979517947607200
>>>>>> 1206647803780373360 _311333643161390640 63030812099294896
>>>>>> _10142299865511450 1307535010540395 _135585182899530 11310276995381 
>>>>>> _7561...
>>>>>> 
>>>>>>   p. w
>>>>>> ┌─┬──────────────────────────────────────────────────┐
>>>>>> │1│20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1│ 
>>>>>> └─┴──────────────────────────────────────────────────┘
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Tue, Dec 11, 2012 at 3:40 PM, Henry Rich <henryhr...@nc.rr.com> wrote:
>>>>>> 
>>>>>>> None of these cute ways is very accurate in tough cases:
>>>>>>> 
>>>>>>> 0j15 ": (2*a) %~ (-b) (+,-) %: (b^2) - 4*a*c [ 'a b c' =. 1e_6 
>>>>>>> 1e6 1e_6
>>>>>>> 0.000000000000000 _1000000000000.000000000000000
>>>>>>> 
>>>>>>> But p. does better:
>>>>>>> 
>>>>>>>   0j15 ": 1 {:: p. c,b,a
>>>>>>> _1000000000000.000000000000000 _0.000000000001000
>>>>>>> 
>>>>>>> Henry Rich
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On 12/11/2012 6:29 PM, Roger Hui wrote:
>>>>>>> 
>>>>>>>> There are some cheeky (or is it cheesy?) versions:
>>>>>>>> 
>>>>>>>> (2*a) %~ (-b) (+,-) %: (b^2) - 4*a*c  NB. Kip Murray
>>>>>>>> (2*a) %~ - b (+,-) %: (b^2) - 4*a*c
>>>>>>>> (+:a) %~ - b (+,-) %: (*:b) - 4*a*c
>>>>>>>> -: a %~ - b (+,-) %: (*:b) - 4*a*c
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Tue, Dec 11, 2012 at 11:37 AM, km <k...@math.uh.edu> wrote:
>>>>>>>> 
>>>>>>>> It appears this could be translated into J as the rather cool
>>>>>>>>> 
>>>>>>>>> (2*a) %~ (-b) (+,-) %: (b^2) - 4*a*c
>>>>>>>>> 
>>>>>>>>> Sent from my iPad
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Dec 11, 2012, at 12:59 PM, Roger Hui 
>>>>>>>>> <rogerhui.can...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> Example from the Iverson and McDonnell *Phrasal
>>>>>>>>>> Forms*<http://www.jsoftware.**com/papers/fork.htm<http://www.j
>>>>>>>>>> software.com/papers/fork.htm>>paper
>>>>>>>>>> (which
>>>>>>>>>> introduced fork):
>>>>>>>>>> 
>>>>>>>>>> (-b)(+,-)√((b*2)-4×a×c)÷2×a
>>>>>>>>>> 
>>>>>>>>>> √ is a postulated APL primitive, spelled %: in J.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Tue, Dec 11, 2012 at 10:49 AM, km <k...@math.uh.edu> wrote:
>>>>>>>>>> 
>>>>>>>>>> What is the coolest way of programming the quadratic formula 
>>>>>>>>>> in J?  We are
>>>>>>>>> 
>>>>>>>>>> finding the roots of polynomial c + x*(b + x*a) without using 
>>>>>>>>>> p. .  I offer
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>>    roots
>>>>>>>>>>> 3 : 0
>>>>>>>>>>> 'a b c' =. y
>>>>>>>>>>> q =. %: (b^2) - 4*a*c
>>>>>>>>>>> (2*a) %~ (-b) + q,-q
>>>>>>>>>>> )
>>>>>>>>>>>    roots 1 3 2
>>>>>>>>>>> _1 _2
>>>>>>>>>>>    roots 1 0 1
>>>>>>>>>>> 0j1 0j_1
>>>>>>>>>>>    roots 1 _2 1
>>>>>>>>>>> 1 1
>>>>>>>>>>> 
>>>>>>>>>>> partly as problem definition.  I am looking for cool roots verbs!
>>>>>>>>>>> 
>>>>>>>>>>> Kip Murray
>>>>>>>>>>> 
>>>>>>>>>>> Sent from my iPad
>>>>>>>>>>> 
>>>>>>>>>>> ------------------------------**-----------------------------
>>>>>>>>>>> -**
>>>>>>>>>>> ----------
>>>>>>>>>>> For information about J forums see 
>>>>>>>>>>> http://www.jsoftware.com/** forums.htm 
>>>>>>>>>>> <http://www.jsoftware.com/forums.htm>
>>>>>>>>>> ------------------------------**------------------------------
>>>>>>>>>> **
>>>>>>>>>> ----------
>>>>>>>>>> For information about J forums see http://www.jsoftware.com/** 
>>>>>>>>>> forums.htm <http://www.jsoftware.com/forums.htm>
>>>>>>>>> ------------------------------**------------------------------*
>>>>>>>>> *
>>>>>>>>> ----------
>>>>>>>>> For information about J forums see http://www.jsoftware.com/** 
>>>>>>>>> forums.htm <http://www.jsoftware.com/forums.htm>
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> ------------------------------**------------------------------*
>>>>>>>>> *
>>>>>>>> ----------
>>>>>>>> For information about J forums see 
>>>>>>>> http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/f
>>>>>>>> orums.htm>
>>>>>>>> 
>>>>>>>> 
>>>>>>>> ------------------------------**------------------------------**
>>>>>>> ----------
>>>>>>> For information about J forums see 
>>>>>>> http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/fo
>>>>>>> rums.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
>> ----------------------------------------------------------------------
>> 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