// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package asin
+package math
+
+import math "atan"
+import math "sqrt"
-import sys "sys"
-import atan "atan"
-import sqrt "sqrt"
export asin, acos
/*
sign = true;
}
if arg > 1 {
- return sys.NaN();
+ panic "return sys.NaN()";
}
- temp = sqrt.sqrt(1 - x*x);
+ temp = sqrt(1 - x*x);
if x > 0.7 {
- temp = pio2 - atan.atan(temp/x);
+ temp = pio2 - atan(temp/x);
} else {
- temp = atan.atan(x/temp);
+ temp = atan(x/temp);
}
if sign {
acos(arg double)double
{
if(arg > 1 || arg < -1) {
- return sys.NaN();
+ panic "return sys.NaN()";
}
return pio2 - asin(arg);
}
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package atan
+package math
export atan
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package atan2
+package math
-import atan "atan"
+import math "atan"
export atan2
/*
}
return -pio2;
}
- x = atan.atan(arg1/arg2);
+ x = atan(arg1/arg2);
if arg2 < 0 {
if x <= 0 {
return x + pi;
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package exp
+package math
-import sys "sys"
-import floor "floor"
+import math "floor"
export exp
/*
var x, fract, temp1, temp2, xsq double;
var ent int;
- if arg == 0 {
+ if arg == 0. {
return 1;
}
if arg < -maxf {
- return 0;
+ return 0.;
}
if arg > maxf {
- return sys.Inf(1);
+ panic "return sys.Inf(1)"
}
x = arg*log2e;
- ent = int(floor.floor(x));
+ ent = int(floor(x));
fract = (x-double(ent)) - 0.5;
xsq = fract*fract;
temp1 = ((p2*xsq+p1)*xsq+p0)*fract;
temp2 = ((xsq+q2)*xsq+q1)*xsq + q0;
- return sys.ldexp(sqrt2*(temp2+temp1)/(temp2-temp1), ent);
+ return sys.ldexp(ent, sqrt2*(temp2+temp1)/(temp2-temp1));
}
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package fabs
+package math
export fabs
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package floor
+package math
-import sys "sys"
export floor, ceil
/*
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package fmod
+package math
-import sys "sys"
export fmod
/*
if rfr < yfr {
rexp = rexp - 1;
}
- r = r - sys.ldexp(y, rexp-yexp);
+ r = r - sys.ldexp(rexp-yexp, y);
}
if sign {
r = -r;
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package hypot
+package math
export hypot
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package log
+package math
-import sys "sys"
export log, log10
/*
var exp int;
if arg <= 0 {
- return sys.NaN();
+ panic "return sys.NaN()";
}
exp,x = sys.frexp(arg);
{
if arg <= 0 {
- return sys.NaN();
+ panic "return sys.NaN()";
}
return log(arg) * ln10o1;
}
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package pow
+package math
-import sys "sys"
-import floor "floor"
-import sqrt "sqrt"
-import log "log"
-import exp "exp"
+import math "floor"
+import math "sqrt"
+import math "log"
+import math "exp"
export pow
/*
if arg1 <= 0 {
if(arg1 == 0) {
if arg2 <= 0 {
- return sys.NaN();
+ panic "return sys.NaN()";
}
return 0;
}
- temp = floor.floor(arg2);
+ temp = floor(arg2);
if temp != arg2 {
- return sys.NaN();
+ panic "return sys.NaN()";
}
l = long(temp);
return pow(-arg1, arg2);
}
- temp = floor.floor(arg2);
+ temp = floor(arg2);
if temp != arg2 {
if arg2-temp == .5 {
if temp == 0 {
- return sqrt.sqrt(arg1);
+ return sqrt(arg1);
}
- return pow(arg1, temp) * sqrt.sqrt(arg1);
+ return pow(arg1, temp) * sqrt(arg1);
}
- return exp.exp(arg2 * log.log(arg1));
+ return exp(arg2 * log(arg1));
}
l = long(temp);
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package pow10
+package math
export pow10
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package sin
+package math
-import sys "sys"
export sin, cos
const
} else {
k = long(x);
y = x - double(k);
- quad = (quad + k) & 3;
+ quad = (quad + int(k)) & 3;
}
if quad&1 != 0 {
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package sinh
+package math
-import exp "exp"
+import math "exp"
export sinh, cosh
/*
}
switch true {
case arg > 21:
- temp = exp.exp(arg)/2;
+ temp = exp(arg)/2;
case arg > 0.5:
- temp = (exp.exp(arg) - exp.exp(-arg))/2;
+// temp = (exp(arg) - exp(-arg))/2;
default:
argsq = arg*arg;
arg = - arg;
}
if arg > 21 {
- return exp.exp(arg)/2;
+ return exp(arg)/2;
}
- return (exp.exp(arg) + exp.exp(-arg))/2;
+// return (exp(arg) + exp(-arg))/2;
}
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package sqrt
+package math
-import sys "sys"
export sqrt
/*
var x, temp double;
var exp, i int;
+/* BUG: NO isINF
if sys.isInf(arg, 1) {
return arg;
}
-
+*/
if arg <= 0 {
if arg < 0 {
- return sys.NaN();
+ panic "return sys.NaN()"
}
return 0;
}
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package tan
+package math
-import sys "sys"
export tan
/*
if flag {
if(temp == 0) {
- return sys.NaN();
+ panic "return sys.NaN()";
}
temp = 1/temp;
}
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package tanh
+package math
-import sinh "sinh"
+import math "sinh"
export tanh
/*
if arg > 21 {
return -1;
}
- return -sinh.sinh(arg)/sinh.cosh(arg);
+ return -sinh(arg)/cosh(arg);
}
if arg > 21 {
return 1;
}
- return sinh.sinh(arg)/sinh.cosh(arg);
+ return sinh(arg)/cosh(arg);
}