Linda, very nice. Kip Sent from my iPad
On Dec 16, 2012, at 12:05 AM, "Linda Alvord" <lindaalv...@verizon.net> wrote: > Kip, this is almost readable right after it shows up in Algebra 2! > > ((2*a)%~(-b)(+,-)%:(*:b)-4*a*c)['a b c'=:1 3 2 > _1 _2 > ((2*a)%~(-b)(+,-)%:(*:b)-4*a*c)['a b c'=:1 0 1 > 0j1 0j_1 > > Linda > -----Original Message----- > From: programming-boun...@forums.jsoftware.com > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Linda Alvord > Sent: Thursday, December 13, 2012 9:02 PM > To: programm...@jsoftware.com > Subject: Re: [Jprogramming] Cool roots > > Here are three one line versions of the quadratic roots. They include most of > the ideas which have been included so far. > > > > f=: 13 :'(((a %~ ]), (c % ])) _0.5 * b +`-@.(0>[) %: (*:b) - 4*a*c)[''a b > c''=:y' > > f > > 3 : '(((a %~ ]), (c % ])) _0.5 * b +`-@.(0>[) %: (*:b) - 4*a*c)[''a b c''=:y' > > f 1 3 2 > > _2 _1 > > f 1 0 1 > > 0j_1 0j1 > > > > > > g=: 13 : '((2*a)%~(-b)(+,-)%:(*:b)-4*a*c)[''a b c ''=:y' > > g > > 3 : '((2*a)%~(-b)(+,-)%:(*:b)-4*a*c)[''a b c ''=:y' > > g 1 3 2 > > _1 _2 > > g 1 0 1 > > 0j1 0j_1 > > > > > > > > h=: 13 : '(2*0{y)%~(-1{y)(+,-)%:(*:1{y)-4*(0{y)*2{y' > > h > > (2 * 0 { ]) %~ ([: - 1 { ]) (+ , -) [: %: ([: *: 1 { ]) - 4 * (0 { ]) * 2 { ] > > h 1 3 2 > > _1 _2 > > h 1 0 1 > > 0j1 0j_1 > > > > Only the third one has a tacit version which can be studied further: > > > > 5!:4 <'h' > > ┌─ 2 > ├─ * > ┌─────┤ ┌─ 0 > │ └───┼─ { > │ └─ ] > ├─ ~ ─── % > │ ┌─ [: > │ ├─ - > ──┤ ┌───┤ ┌─ 1 > │ │ └────┼─ { > │ │ └─ ] > │ │ ┌─ + > │ ├───┼─ , > │ │ └─ - > └─────┤ > │ ┌─ [: > │ ├─ %: > │ │ ┌─ [: > │ │ ├─ *: > └───┤ ┌───┤ ┌─ 1 > │ │ └────┼─ { > │ │ └─ ] > │ ├─ - > └────┤ ┌─ 4 > │ ├─ * > │ │ ┌─ 0 > └───┤ ┌───┼─ { > │ │ └─ ] > └────┼─ * > │ ┌─ 2 > └───┼─ { > └─ ] > > Any ideas to improve these? > > > > Linda > > > > -----Original Message----- > From: programming-boun...@forums.jsoftware.com > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of km > Sent: Thursday, December 13, 2012 10:57 AM > To: programm...@jsoftware.com > Subject: Re: [Jprogramming] Cool roots > > > > 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" < > <mailto:lindaalv...@verizon.net> 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: <mailto:programming-boun...@forums.jsoftware.com> >> programming-boun...@forums.jsoftware.com > >> [ <mailto:programming-boun...@forums.jsoftware.com> >> mailto:programming-boun...@forums.jsoftware.com] On Behalf Of km > >> Sent: Wednesday, December 12, 2012 11:09 PM > >> To: <mailto:programm...@jsoftware.com> programm...@jsoftware.com > >> Subject: Re: [Jprogramming] Cool roots > > >> Cool! > > >> Sent from my iPad > > > >> On Dec 12, 2012, at 6:00 PM, Henry Rich < <mailto:henryhr...@nc.rr.com> >> 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 < <mailto:henryhr...@nc.rr.com> >>>> 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 < >>>>>> <mailto:rogerhui.can...@gmail.com> 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> >>>>>>> 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 < >>>>>>> <mailto:henryhr...@nc.rr.com> 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 < <mailto:k...@math.uh.edu> >>>>>>>>> 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 > >>>>>>>>>> < <mailto:rogerhui.can...@gmail.com> 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 < <mailto:k...@math.uh.edu> >>>>>>>>>>> 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/**> http://www.jsoftware.com/** >>>>>>>>>>>> forums.htm > >>>>>>>>>>>> < <http://www.jsoftware.com/forums.htm> >>>>>>>>>>>> http://www.jsoftware.com/forums.htm> > >>>>>>>>>>> ------------------------------**----------------------------- > >>>>>>>>>>> - > >>>>>>>>>>> ** > >>>>>>>>>>> ---------- > >>>>>>>>>>> For information about J forums see > >>>>>>>>>>> <http://www.jsoftware.com/**> http://www.jsoftware.com/** forums.htm > >>>>>>>>>>> < <http://www.jsoftware.com/forums.htm> >>>>>>>>>>> http://www.jsoftware.com/forums.htm> > >>>>>>>>>> ------------------------------**------------------------------ > >>>>>>>>>> * > >>>>>>>>>> * > >>>>>>>>>> ---------- > >>>>>>>>>> For information about J forums see <http://www.jsoftware.com/**> >>>>>>>>>> http://www.jsoftware.com/** > >>>>>>>>>> forums.htm < <http://www.jsoftware.com/forums.htm> >>>>>>>>>> http://www.jsoftware.com/forums.htm> > > > >>>>>>>>>> ------------------------------**------------------------------ > >>>>>>>>>> * > >>>>>>>>>> * > >>>>>>>>> ---------- > >>>>>>>>> For information about J forums see > >>>>>>>>> <http://www.jsoftware.com/**forums.htm%3chttp:/www.jsoftware.com/> >>>>>>>>> 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%3chttp:/www.jsoftware.com/f> >>>>>>>> http://www.jsoftware.com/**forums.htm<http://www.jsoftware.com/f > >>>>>>>> o > >>>>>>>> rums.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/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/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 > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm