Little fix after the last commit (mostly a git fail)
[eigenmath-fx.git] / leading.cpp
blob3c725eb175528a817024eb654257cae1f6361bbf
1 /* Return the leading coefficient of a polynomial.
3 Example
5 leading(5x^2+x+1,x)
7 Result
11 The result is undefined if P is not a polynomial. */
13 #include "stdafx.h"
14 #include "defs.h"
16 void
17 eval_leading(void)
19 push(cadr(p1));
20 eval();
21 push(caddr(p1));
22 eval();
23 p1 = pop();
24 if (p1 == symbol(NIL))
25 guess();
26 else
27 push(p1);
28 leading();
31 #define P p1
32 #define X p2
33 #define N p3
35 void
36 leading(void)
38 save();
40 X = pop();
41 P = pop();
43 push(P); // N = degree of P
44 push(X);
45 degree();
46 N = pop();
48 push(P); // divide through by X ^ N
49 push(X);
50 push(N);
51 power();
52 divide();
54 push(X); // remove terms that depend on X
55 filter();
57 restore();