123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- //-----------------------------------------------------------------------------
- //
- // Bessel Y function
- //
- // Input: tos-2 x (can be a symbol or expr)
- //
- // tos-1 n
- //
- // Output: Result on stack
- //
- //-----------------------------------------------------------------------------
- #include "stdafx.h"
- #include "defs.h"
- void
- eval_bessely(void)
- {
- push(cadr(p1));
- eval();
- push(caddr(p1));
- eval();
- bessely();
- }
- void
- bessely(void)
- {
- save();
- yybessely();
- restore();
- }
- #define X p1
- #define N p2
- void
- yybessely(void)
- {
- double d;
- int n;
- N = pop();
- X = pop();
- push(N);
- n = pop_integer();
- if (isdouble(X) && n != (int) 0x80000000) {
- d = yn(n, X->u.d);
- push_double(d);
- return;
- }
-
- if (isnegativeterm(N)) {
- push_integer(-1);
- push(N);
- power();
- push_symbol(BESSELY);
- push(X);
- push(N);
- negate();
- list(3);
- multiply();
- return;
- }
- push_symbol(BESSELY);
- push(X);
- push(N);
- list(3);
- return;
- }
|