<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.23562"></HEAD>
<BODY>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=017472418-12012021>I think that the key concept here is that the pole 
calculation is an exact, closed-form expression based on elliptic sine and 
cosine.  Also, the period of the elliptic sine and cosine is given by 
the modulus.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=017472418-12012021></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=017472418-12012021>The only "iterative" thing here is that mathematicians 
have so far failed to give us a convenient way to calculate the elliptic 
functions.  However, I have demonstrated that a simple function call in 
Excel is possible.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=017472418-12012021></SPAN></FONT> </DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 face=Arial><SPAN 
class=017472418-12012021>So, ask yourself this question:  What if 
there had been built-in Excel functions for sn(u,k) and cn(u,k), and 
another function call for the period, such that the functions could have been 
calculated by, say, SN(3*SNPERIOD(k)/64,k)?  If such functions were 
available in Excel already, would there have been any argument that this wasn't 
a closed-form solution to the filter pole problem?  I would suggest 
that there would not.</SPAN></FONT></DIV>
<DIV dir=ltr align=left><FONT color=#0000ff size=2 
face=Arial></FONT> </DIV><FONT color=#0000ff size=2 face=Arial></FONT><BR>
<DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>From:</B> Liam Wall [mailto:liam.wall@gmail.com] 
<BR><B>Sent:</B> Tuesday, January 12, 2021 2:40 AM<BR><B>To:</B> Guy 
McCusker<BR><B>Cc:</B> David G Dixon; synth-diy@synth-diy org; Bernard Arthur 
Hutchins, Jr; Brian Willoughby<BR><B>Subject:</B> Re: [sdiy] 90-degree phase 
displacement network calculations<BR></FONT><BR></DIV>
<DIV></DIV><SPAN 
style="BACKGROUND-COLOR: #ffecb3; COLOR: #000000; FONT-SIZE: 12px"><SPAN 
style="BACKGROUND-COLOR: #ffecb3; COLOR: #000000; FONT-SIZE: 12px"><SPAN 
style="PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.6; BACKGROUND-COLOR: #ffecb3; FONT-STYLE: normal; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: normal; PADDING-TOP: 3px">[<STRONG>CAUTION:</STRONG> 
Non-UBC Email]</SPAN></SPAN></SPAN>
<DIV dir=ltr>
<DIV>Thanks David for sharing this stuff.</DIV>
<DIV><BR></DIV>
<DIV>Agree with what Guy has said below, and would add to that all the same 
applies to standard sine, exp, ln, and sqrt --- these are functions that we 
can't compute exactly for all input values, but we know how to compute 
sufficiently good approximations in a known (short) time. All considered "closed 
form". As far as I can tell "closed form" isn't really a precisely defined 
mathematical term. In fact, quoting the opening line of the Wikipedia page "The 
set of operations and functions admitted in a closed-form expression may vary 
with author and context". So are sn and K in or out? It's pretty much 
arbitrary.<BR></DIV>
<DIV><BR></DIV>
<DIV>I've no idea how much accuracy Excel can manage. I think floating point 
doubles are 64 bits in most languages? In the interests of science I calculated 
the k'(i) series starting with k'(0)=0.0001 using 2048 bit floating point values 
(the most I have handy). Excel gave David k'(6)=1.0; all the extra bits gave 
k'(6)=0.9999999999990897, and k'(7) == 1.0.<BR></DIV></DIV><BR>
<DIV class=gmail_quote>
<DIV dir=ltr class=gmail_attr>On Tue, 12 Jan 2021 at 09:33, Guy McCusker <<A 
href="mailto:guy.mccusker@gmail.com">guy.mccusker@gmail.com</A>> 
wrote:<BR></DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
class=gmail_quote>
  <DIV dir=ltr>While I agree with David that it is essentially fruitless to 
  argue over whether something is "iterative" or "recursive", trying to figure 
  out how I would describe this algorithm gave me the impetus I needed to 
  study it a bit, so it helped me at least. 
  <DIV><BR></DIV>
  <DIV>From a computational perspective, iteration and recursion are 
  equivalent, and they both describe processes that may in principle be 
  non-terminating. But there is a difference in the spirit of how things 
  are expressed. Iteration somehow means "do these steps again and again" while 
  recursion means "compute this function in terms of other invocations of 
  itself". (The computational equivalence means you can always hack one to look 
  like the other so the distinction is not at all sharp really.) A very common 
  use of "iteration" is "do these steps again and again until some calculated 
  error is small enough." With that in mind I looked at the theory and practice 
  of what David is doing here. </DIV>
  <DIV><BR></DIV>
  <DIV>The expressions for the poles in terms of elliptic functions are exact. 
  However they rely on the elliptic integral which requires some work to 
  compute. David uses the Landen transformation to do this. Again, the Landen 
  transformation is exact. No approximations are in play... yet.</DIV>
  <DIV><BR></DIV>
  <DIV>The equations David wrote for computing sn via the Landen transformation 
  are recursive in spirit: the equations show how to calculate sn( , ) using an 
  expression ** which also contains calls to sn( ,  ) **. That is 
  what gives it a recursive nature in my eyes. The equations also show when 
  this recursion can terminate: when the "k" term is zero, sn reduces to sin, 
  which presumably we know how to compute, so we do not need to perform further 
  recursive calls.</DIV>
  <DIV><BR></DIV>
  <DIV>However, if computing *exactly*,  the recursion will never 
  terminate, as Ian Fritz pointed out -- the k term in the recursive calls will 
  never become exactly zero. </DIV>
  <DIV><BR></DIV>
  <DIV>For practical purposes we don't need it to be exactly zero: it just needs 
  to be close enough that sin is a good enough approximation to sn. What David's 
  code does is to compute the sequence of k values until they get close enough 
  to zero. This computation feels like an iterative approximation, though I 
  could live with it being called recursive</DIV>
  <DIV><BR></DIV>
  <DIV>David has determined that 8 steps are enough to get close enough for his 
  purposes, which may simply mean close enough that Excel thinks the answer 
  is 0. Once that is accepted, we have a fixed way to calculate good 
  approximations to the values we are looking for. </DIV>
  <DIV><BR></DIV>
  <DIV>Well, that's my take on all this anyway. I'm finding this interesting 
  from both a mathematical and a practical point of view. This list is 
  great!</DIV>
  <DIV><BR></DIV>
  <DIV>Guy.</DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV>
  <DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV></DIV></DIV><BR>
  <DIV class=gmail_quote>
  <DIV dir=ltr class=gmail_attr>On Mon, Jan 11, 2021 at 11:57 PM David G Dixon 
  <<A href="mailto:dixon@mail.ubc.ca" target=_blank>dixon@mail.ubc.ca</A>> 
  wrote:<BR></DIV>
  <BLOCKQUOTE 
  style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
  class=gmail_quote><U></U>
    <DIV>
    <P><FONT size=2 face="Courier New">Well, Michael, we're basically arguing 
    about the meaning of the words "iteration" and "recursion" at this point, 
    and I find this argument to be utterly fruitless.<BR><BR>To me, iteration is 
    something that is required when approximate solutions are sought and the 
    criterion is convergence.  The solution to the phase displacement 
    problem is exact.  The poles are given by the following closed-form 
    equation:<BR><BR><IMG border=0 hspace=0 alt="" align=bottom 
    src="cid:017472418@12012021-113C"></FONT></P>
    <P><FONT size=2 face="Courier New">The only recursive part of this whole 
    problem is that 2K is a function of k' which must be determined by a 
    recursive process (as far as I know).  This is a feature of elliptic 
    sines and has nothing to do with the filter pole calculation, which is 
    completely closed form.  Elliptic functions differ from circular 
    functions in that the latter have fixed periods (2*pi), but the former have 
    periods which are functions of their modulus k.  However, the period is 
    a unique function of the modulus.  Hence, when you specify the modulus 
    you are also specifying the period.  However, to actually calculate the 
    value of the period from the modulus, you need to engage in a recursive 
    calculation.  THIS IS NOT ITERATION.  We are not approximating or 
    approaching some idealized solution by iterating to the correct 
    period.  The period is determined by the modulus -- there is nothing 
    approximate about it.  The solution to this problem is 
exact.</FONT></P>
    <P><FONT size=2 face="Courier New">How's that for an analytical and 
    thought-provoking response?</FONT></P>
    <P><BR><BR><BR><BR><FONT size=2 face="Courier New">-----Original 
    Message-----<BR>From: Michael E Caloroso [</FONT><A 
    href="mailto:mec.forumreader@gmail.com" target=_blank><FONT size=2 
    face="Courier New">mailto:mec.forumreader@gmail.com</FONT></A><FONT size=2 
    face="Courier New">]<BR>Sent: Monday, January 11, 2021 3:29 PM<BR>To: David 
    G Dixon<BR>Cc: Ian Fritz; Bernard Arthur Hutchins, Jr; <A 
    href="mailto:synth-diy@synth-diy.org" 
    target=_blank>synth-diy@synth-diy.org</A>; Brian Willoughby<BR>Subject: Re: 
    [sdiy] 90-degree phase displacement network calculations<BR><BR>[CAUTION: 
    Non-UBC Email]<BR><BR>Well that was a highly analytical and thought 
    provoking conclusion<BR><BR>MC<BR><BR>On 1/11/21, David G Dixon <<A 
    href="mailto:dixon@mail.ubc.ca" target=_blank>dixon@mail.ubc.ca</A>> 
    wrote:<BR>> Hello Ian,<BR>><BR>> Well, I'm getting a bit tired 
    about arguing about this, so my official<BR>> answer is... 
    whatever.<BR>><BR>> Cheers<BR>> Dave<BR>><BR>> -----Original 
    Message-----<BR>> From: Ian Fritz [</FONT><A 
    href="mailto:ijfritz@comcast.net" target=_blank><FONT size=2 
    face="Courier New">mailto:ijfritz@comcast.net</FONT></A><FONT size=2 
    face="Courier New">]<BR>> Sent: Monday, January 11, 2021 6:44 AM<BR>> 
    To: David G Dixon; 'Bernard Arthur Hutchins, Jr';<BR>> <A 
    href="mailto:synth-diy@synth-diy.org" 
    target=_blank>synth-diy@synth-diy.org</A><BR>> Cc: 'Brian 
    Willoughby'<BR>> Subject: Re: [sdiy] 90-degree phase displacement network 
    calculations<BR>><BR>> [CAUTION: Non-UBC Email]<BR>><BR>> That 
    looks not to be true. The difference between two successive k'(i)<BR>> 
    values clearly can not be zero. The process is a (rapidly) 
    converging<BR>> iterative one.<BR>><BR>> In case you can't see 
    this, the proof is trivial:<BR>> Suppose k'(i) = k'(i-1)<BR>> Then 
    from the second equation, k(i) = k(i-1) Now the first equation<BR>> 
    yields 0 = k(i)-k(i-1) = [1-k'(i-1)]/[1+k'(i-1)] -<BR>>   
    [1-k'(i-2)]/[1+k'(i-2)]<BR>> This can be generally true only if k'(i-2) = 
    k'(i-1) So by induction,<BR>> all the k'(i) values are the 
    same.<BR>><BR>> A sequence either iterates or it doesn't -- it can't 
    just drop dead in<BR>> the middle of the street.<BR>><BR>> 
    Ian<BR>> (math minor, including some pretty tough analysis 
    courses)<BR>><BR>><BR>> On 1/11/2021 2:23 AM, David G Dixon 
    wrote:<BR>><BR>>> ........  There are no "approximate" 
    answers, and this problem is not<BR>>> one where one gets closer and 
    closer to the true solution with each<BR>>> step.  That would be 
    an iterative solution, and as I've said ad<BR>>> nauseum, this is not 
    that problem.<BR>><BR>><BR>><BR>> 
    _______________________________________________<BR>> Synth-diy mailing 
    list<BR>> <A href="mailto:Synth-diy@synth-diy.org" 
    target=_blank>Synth-diy@synth-diy.org</A><BR>> </FONT><A 
    href="http://synth-diy.org/mailman/listinfo/synth-diy" target=_blank><FONT 
    size=2 
    face="Courier New">http://synth-diy.org/mailman/listinfo/synth-diy</FONT></A><BR><FONT 
    size=2 face="Courier New">> Selling or trading? Use <A 
    href="mailto:marketplace@synth-diy.org" 
    target=_blank>marketplace@synth-diy.org</A><BR>><BR></FONT></P></DIV>_______________________________________________<BR>Synth-diy 
    mailing list<BR><A href="mailto:Synth-diy@synth-diy.org" 
    target=_blank>Synth-diy@synth-diy.org</A><BR><A 
    href="http://synth-diy.org/mailman/listinfo/synth-diy" rel=noreferrer 
    target=_blank>http://synth-diy.org/mailman/listinfo/synth-diy</A><BR>Selling 
    or trading? Use <A href="mailto:marketplace@synth-diy.org" 
    target=_blank>marketplace@synth-diy.org</A><BR></BLOCKQUOTE></DIV>_______________________________________________<BR>Synth-diy 
  mailing list<BR><A href="mailto:Synth-diy@synth-diy.org" 
  target=_blank>Synth-diy@synth-diy.org</A><BR><A 
  href="http://synth-diy.org/mailman/listinfo/synth-diy" rel=noreferrer 
  target=_blank>http://synth-diy.org/mailman/listinfo/synth-diy</A><BR>Selling 
  or trading? Use <A href="mailto:marketplace@synth-diy.org" 
  target=_blank>marketplace@synth-diy.org</A><BR></BLOCKQUOTE></DIV></BODY></HTML>