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