UNPKG

algebrite

Version:

Computer Algebra System in Coffeescript

86 lines (68 loc) 1.08 kB
#----------------------------------------------------------------------------- # # Author : philippe.billet@noos.fr # # sgn sign function # # #----------------------------------------------------------------------------- Eval_sgn = -> push(cadr(p1)) Eval() sgn() sgn = -> save() yysgn() restore() #define X p1 yysgn = -> p1 = pop() if (isdouble(p1)) if (p1.d > 0) push_integer(1) return else if (p1.d == 0) push_integer(1) return else push_integer(-1) return if (isrational(p1)) if (MSIGN(mmul(p1.q.a,p1.q.b)) == -1) push_integer(-1) return else if (MZERO(mmul(p1.q.a,p1.q.b))) push_integer(0) return else push_integer(1) return if (iscomplexnumber(p1)) push_integer(-1) push(p1) absval() power() push(p1) multiply() return if (isnegativeterm(p1)) push_symbol(SGN) push(p1) negate() list(2) push_integer(-1) multiply() return ### push_integer(2) push(p1) heaviside() multiply() push_integer(-1) add() ### push_symbol(SGN) push(p1) list(2)