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