Re: Attributes and behaviors?
- To: mathgroup at smc.vnet.net
- Subject: [mg46606] Re: Attributes and behaviors?
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Wed, 25 Feb 2004 13:07:00 -0500 (EST)
- Organization: The University of Western Australia
- References: <c1c9kk$atc$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <c1c9kk$atc$1 at smc.vnet.net>, "Fred Klingener" <flush at BitBucket.com> wrote: > I've built a toy function: kSin[x_] :=Sin[x], and here are a few > observations about it: > > - In:-> Attributes[Sin] Out:-> {Listable, NumericFunction,...} > - In:-> Attributes[kSin] Out:-> {} > - a few tests show that kSin[] has full listable behavior, that is, it > produces the same > output as Sin[] when fed a List as an input argument. Because Sin is Listable: kSin[{a,b,c}] --> Sin[{a,b,c}] --> {Sin[a],Sin[b],Sin[c]} > - My 'serious' function kDualNumberSin[] relies on Series[] for its > operation. > - Series[] has no Listable attribute. > - a few primitive tests show that Series[] in fact has Listable capability. This is, I think, more subtle. The documentation on Series says that Series[f, {x, 0, n}] constructs Taylor series for any function f according to the formula f[0] + f'[0] + ... Now if f happens to be {g[x], h[x]} then you see that f[0] = {g[0],h[0]}, f'[0] = {g'[0],h'[0]}, and so on. You can also write {g[x], h[x]} + O[x]^4 and, since Plus is Listable, the behaviour is more obvious. Note that D does not have the Listable attribute either but it works in the same fashion as Series (for the same reason). > - What's the nature of the relationship between attributes and behavior? Generally, an Attribute is required before the behaviour occurs. However, there is the possibility of inheritance (your kSin) or from a fundamental mathematical property. > - Is the attribute used in some inscrutable inner workings of the kernal? No. > - What are the costs and benefits of simply setting the Listability > attribute in my function? Very little cost -- but if it's not necessary there is no need to set it. > - How certain do I have to be that my function really IS Listable before I > set the attribute? A simple test should suffice. > - Does the absence of the Listability attribute of Series[] mean that its > current listable behavior is an undocumented feature subject to future > abandonment? No. Cheers, Paul -- Paul Abbott Phone: +61 8 9380 2734 School of Physics, M013 Fax: +61 8 9380 1014 The University of Western Australia (CRICOS Provider No 00126G) 35 Stirling Highway Crawley WA 6009 mailto:paul at physics.uwa.edu.au AUSTRALIA http://physics.uwa.edu.au/~paul