function Abs(a)      {return (Math.abs(a))}
function Floor(a)    {return (Math.floor(a))}
function Round(a)    {return (Math.round(a))}
function Sqrt(a)     {return (Math.sqrt(a))}
function Exp(a)      {return (Math.exp(a))}
function Power(a,b)  {return (Math.pow(a,b))}
function Ln(a)       {return (Math.log(a))}
function Log10(a)    {return (Math.log(a)/Math.LN10)}
function Log100(a)   {return (Math.log(a)/(2*Math.LN10))}

function Sind(deg)   {return (Math.sin(deg*(Pi/180)))}
function Cosd(deg)   {return (Math.cos(deg*(Pi/180)))}
function Tand(deg)   {return (Math.tan(deg*(Pi/180)))}
function aSind(y)    {return (Math.asin(y)/(Pi/180))}
function aCosd(y)    {return (Math.acos(y)/(Pi/180))}
function aTand(y)    {return (Math.atan(y)/(Pi/180))}
function aTn2d(y,x)  // Return the inverse tangent angle of rise over run
{ var t
  if (x==0.0) {
    if (y>=0.0) {
     return 90.0
    }
    else {
     return 270.0
    }
  }
  t=aTand(Abs(y)/Abs(x))
  if ((x>=0.0) && (y>=0.0)) {
    return t
  }
  else {
    if ((x>=0.0) && (y<0.0)) {
      return t+360.0
    }
    else {
      return t+180.0
    }
  }
}

function Sign(y)     {return (y<0)?-1:1}

function SameSide(A,R) // Place the angle into same quadrant as referant
{
   if ( (Sign(Cosd(A)))==(Sign(Cosd(R))) && (Sign(Sind(A)))==(Sign(Sind(R))) )
     {return (Number(A)+36000)%360}
   else
     {return (Number(A)+36180)%360}
}

function Mod360(Angle)
{   var a
    a=Number(Angle)%360
    return (a<0)?a+360:a
}

