/* Copyright (C) 1994 by Thomas Glen Smith. All Rights Reserved. */
/* circular APL2 V1.0.0 ************************************************
* Implementation of the APL circular, hyperbolic, and Pythagorean *
* functions for real numbers. *
***********************************************************************/
#define INCLUDES MATH+TRIGKEYS
#include "includes.h"
double circular(left,rite)
double left,rite;
{
Acosh; Asinh; Atanh;
extern int aplerr;
switch ((int) left) {
case ATANH: return(atanh(rite));
case ACOSH: return(acosh(rite));
case ASINH: return(asinh(rite));
case -4: return(sqrt(-1.0+rite*rite));
case ATAN: return(atan(rite)); /* Arctan */
case ACOS: return(acos(rite)); /* Arccos */
case ASIN: return(asin(rite)); /* Arcsin */
case 0: return(sqrt(1-rite*rite));
case SIN: return(sin(rite)); /* Sine */
case COS: return(cos(rite)); /* Cosine */
case TAN: return(tan(rite)); /* Tangent */
case 4: return(sqrt(1+rite*rite));
case SINH: return(sinh(rite)); /* Hyperbolic sine */
case COSH: return(cosh(rite)); /* Hyperbolic cosine */
case TANH: return(tanh(rite)); /* Hyperbolic tangent */
default: aplerr = 85; return(0.0); /* left invalid */
} /* end switch */
}