math.c - 9base - revived minimalist port of Plan 9 userland to Unix
 (HTM) git clone git://git.suckless.org/9base
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       math.c (990B)
       ---
            1 #include <u.h>
            2 #include <libc.h>
            3 
            4 #include "hoc.h"
            5 
            6 double        errcheck(double, char*);
            7 
            8 double
            9 Log(double x)
           10 {
           11         return errcheck(log(x), "log");
           12 }
           13 double
           14 Log10(double x)
           15 {
           16         return errcheck(log10(x), "log10");
           17 }
           18 
           19 double
           20 Sqrt(double x)
           21 {
           22         return errcheck(sqrt(x), "sqrt");
           23 }
           24 
           25 double
           26 Exp(double x)
           27 {
           28         return errcheck(exp(x), "exp");
           29 }
           30 
           31 double
           32 Asin(double x)
           33 {
           34         return errcheck(asin(x), "asin");
           35 }
           36 
           37 double
           38 Acos(double x)
           39 {
           40         return errcheck(acos(x), "acos");
           41 }
           42 
           43 double
           44 Sinh(double x)
           45 {
           46         return errcheck(sinh(x), "sinh");
           47 }
           48 double
           49 Cosh(double x)
           50 {
           51         return errcheck(cosh(x), "cosh");
           52 }
           53 double
           54 Pow(double x, double y)
           55 {
           56         return errcheck(pow(x,y), "exponentiation");
           57 }
           58 
           59 double
           60 integer(double x)
           61 {
           62         if(x<-2147483648.0 || x>2147483647.0)
           63                 execerror("argument out of domain", 0);
           64         return (double)(long)x;
           65 }
           66 
           67 double
           68 errcheck(double d, char* s)        /* check result of library call */
           69 {
           70         if(isNaN(d))
           71                 execerror(s, "argument out of domain");
           72         if(isInf(d, 0))
           73                 execerror(s, "result out of range");
           74         return d;
           75 }