Henry, verb expt below is what I came up with. A slight modification will
give me what I really want, a tacit exponential for quaternions represented as
complex pairs. --Kip
clean =: (* *!.1e_14@|)"0&.+.
exp =: 3 : 0
os =. 0
s =. 1
k =. 0
t =. 1
while. s ~: os do.
os =. s
k =. >: k
t =. t * y % k
s =. s + t
end.
clean s
)
NB. u ^: p ^: _ is equivalent to
NB. 3 : 't =. y while. p t do. u t end.'
yy =: 1 0 2 , ] , ]
NB. yy provides initial (sum , oldsum, futureindex, nextterm, y)
p =: {. ~: {.@}. NB. stop when sum is oldsum (tolerantly)
u =: ({. + 3&{), {. , >:@(2&{) , (3&{ * {: % 2&{) , {:
NB. u finds the next (sum, oldsum, futureindex, nextterm, y)
expt =: [: clean@{. [: u ^: p ^: _ yy NB. tacit exponential
expt 0
1
expt 1
2.71828
expt 0j1p1
_1
Sent from my iPad
> On Dec 22, 2013, at 10:18 AM, Henry Rich <[email protected]> wrote:
>
> I can't figure out a pleasing way to do this. You need 4 things: k,s,y,t. 3
> of these change. So, you need to join them as a boxed list and then iterate,
> but you can't iterate until they stop changing, because the iteration number
> always changes. t also changes. Yuck.
>
> Henry Rich
>
>
>> On 12/22/2013 3:27 AM, km wrote:
>> Thanks, Raul, for a cool solution. I'm still interested in tacitly
>> terminating a series when its partial sums stop changing. --Kip
>>
>> Sent from my iPad
>>
>>> On Dec 22, 2013, at 12:34 AM, Raul Miller <[email protected]> wrote:
>>>
>>> ^ 2
>>> 7.38906
>>> (%!i.40) p. 2
>>> 7.38906
>>> (^ = (%!i.40)&p.) 0j1p1
>>> 1
>>>
>>> I'd just use ^
>>>
>>> --
>>> Raul
>>>
>>>> On Sat, Dec 21, 2013 at 5:43 PM, km <[email protected]> wrote:
>>>> Verb exp below uses the series for monadic ^ to calculate ^ y . Can
>>>> you remind me how to do exp tacitly? You may omit the "clean" part.
>>>> Verb clean replaces tiny real numbers by 0 .
>>>>
>>>> clean =: (* *!.1e_14@|)"0&.+.
>>>>
>>>> exp =: 3 : 0
>>>> os =. 0
>>>> s =. 1
>>>> k =. 0
>>>> t =. 1
>>>> while. s ~: os do.
>>>> os =. s
>>>> k =. >: k
>>>> t =. t * y % k
>>>> s =. s + t
>>>> end.
>>>> clean s
>>>> )
>>>>
>>>> exp 1
>>>> 2.71828
>>>>
>>>> ^1
>>>> 2.71828
>>>>
>>>> exp 0j1p1
>>>> _1
>>>>
>>>> ^ 0j1p1
>>>> _1j1.22465e_16
>>>>
>>>> (^0j1p1) = exp 0j1p1
>>>> 1
>>>>
>>>> VERSION NB. iPad
>>>> 1.3 5
>>>>
>>>> --Kip Murray
>>>>
>>>> Sent from my iPad
>>>>
>>>> ----------------------------------------------------------------------
>>>> 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