2008-09-19 12:55:46 -06:00
|
|
|
// Copyright 2009 The Go Authors. All rights reserved.
|
2008-03-28 14:56:47 -06:00
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
2008-11-13 14:42:26 -07:00
|
|
|
// $G $F.go && $L $F.$A && (./$A.out || echo BUG: math fails)
|
2008-03-28 14:56:47 -06:00
|
|
|
|
|
|
|
package main
|
|
|
|
|
2008-11-13 14:42:26 -07:00
|
|
|
import (
|
|
|
|
"fmt";
|
|
|
|
"math";
|
|
|
|
)
|
2008-03-28 14:56:47 -06:00
|
|
|
|
2008-07-08 21:48:41 -06:00
|
|
|
const length = 10;
|
2008-03-28 14:56:47 -06:00
|
|
|
|
|
|
|
var
|
|
|
|
(
|
2008-07-08 21:48:41 -06:00
|
|
|
vf [length]float64;
|
|
|
|
asin [length]float64;
|
|
|
|
atan [length]float64;
|
|
|
|
exp [length]float64;
|
|
|
|
floor [length]float64;
|
|
|
|
log [length]float64;
|
|
|
|
pow [length]float64;
|
|
|
|
sin [length]float64;
|
|
|
|
sinh [length]float64;
|
|
|
|
sqrt [length]float64;
|
|
|
|
tan [length]float64;
|
|
|
|
tanh [length]float64;
|
2008-03-28 14:56:47 -06:00
|
|
|
)
|
|
|
|
|
2008-07-08 21:48:41 -06:00
|
|
|
func ck(a,b float64);
|
2008-03-28 14:56:47 -06:00
|
|
|
|
|
|
|
func
|
|
|
|
main()
|
|
|
|
{
|
2008-09-19 12:55:46 -06:00
|
|
|
for i:=0; i<length; i++ {
|
2008-03-28 14:56:47 -06:00
|
|
|
f := vf[i];
|
|
|
|
|
|
|
|
ck(asin[i], math.asin(f/10));
|
|
|
|
ck(atan[i], math.atan(f));
|
|
|
|
ck(exp[i], math.exp(f));
|
|
|
|
ck(floor[i], math.floor(f));
|
|
|
|
ck(log[i], math.log(math.fabs(f)));
|
|
|
|
ck(pow[i], math.pow(10, f));
|
|
|
|
ck(sin[i], math.sin(f));
|
|
|
|
ck(sinh[i], math.sinh(f));
|
|
|
|
ck(sqrt[i], math.sqrt(math.fabs(f)));
|
|
|
|
ck(tan[i], math.tan(f));
|
|
|
|
ck(tanh[i], math.tanh(f));
|
2008-07-08 18:26:10 -06:00
|
|
|
ck(math.fabs(tanh[i]*math.sqrt(2)),
|
|
|
|
math.hypot(tanh[i], tanh[i]));
|
2008-03-28 14:56:47 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func
|
2008-07-08 21:48:41 -06:00
|
|
|
ck(a,b float64)
|
2008-03-28 14:56:47 -06:00
|
|
|
{
|
|
|
|
d := a-b;
|
|
|
|
if d < 0 {
|
|
|
|
d = -d;
|
|
|
|
}
|
|
|
|
|
2008-11-13 14:42:26 -07:00
|
|
|
e := float64(1e-13);
|
2008-03-28 14:56:47 -06:00
|
|
|
if a != 0 {
|
|
|
|
e = e*a;
|
|
|
|
if e < 0 {
|
|
|
|
e = -e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if d > e {
|
2008-11-13 14:42:26 -07:00
|
|
|
panic(fmt.sprintf("%.17g %.17g", a, b));
|
2008-03-28 14:56:47 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func
|
|
|
|
init()
|
|
|
|
{
|
|
|
|
vf[0] = 4.9790119248836735e+00;
|
|
|
|
vf[1] = 7.7388724745781045e+00;
|
|
|
|
vf[2] = -2.7688005719200159e-01;
|
|
|
|
vf[3] = -5.0106036182710749e+00;
|
|
|
|
vf[4] = 9.6362937071984173e+00;
|
|
|
|
vf[5] = 2.9263772392439646e+00;
|
|
|
|
vf[6] = 5.2290834314593066e+00;
|
|
|
|
vf[7] = 2.7279399104360102e+00;
|
|
|
|
vf[8] = 1.8253080916808550e+00;
|
|
|
|
vf[9] = -8.6859247685756013e+00;
|
|
|
|
|
|
|
|
asin[0] = 5.2117697218417440e-01;
|
|
|
|
asin[1] = 8.8495619865825236e-01;
|
|
|
|
asin[2] = -2.7691544662819413e-02;
|
|
|
|
asin[3] = -5.2482360935268932e-01;
|
|
|
|
asin[4] = 1.3002662421166553e+00;
|
|
|
|
asin[5] = 2.9698415875871901e-01;
|
|
|
|
asin[6] = 5.5025938468083364e-01;
|
|
|
|
asin[7] = 2.7629597861677200e-01;
|
|
|
|
asin[8] = 1.8355989225745148e-01;
|
|
|
|
asin[9] = -1.0523547536021498e+00;
|
|
|
|
|
|
|
|
atan[0] = 1.3725902621296217e+00;
|
|
|
|
atan[1] = 1.4422906096452980e+00;
|
|
|
|
atan[2] = -2.7011324359471755e-01;
|
|
|
|
atan[3] = -1.3738077684543379e+00;
|
|
|
|
atan[4] = 1.4673921193587666e+00;
|
|
|
|
atan[5] = 1.2415173565870167e+00;
|
|
|
|
atan[6] = 1.3818396865615167e+00;
|
|
|
|
atan[7] = 1.2194305844639670e+00;
|
|
|
|
atan[8] = 1.0696031952318783e+00;
|
|
|
|
atan[9] = -1.4561721938838085e+00;
|
|
|
|
|
|
|
|
exp[0] = 1.4533071302642137e+02;
|
|
|
|
exp[1] = 2.2958822575694450e+03;
|
|
|
|
exp[2] = 7.5814542574851664e-01;
|
|
|
|
exp[3] = 6.6668778421791010e-03;
|
|
|
|
exp[4] = 1.5310493273896035e+04;
|
|
|
|
exp[5] = 1.8659907517999329e+01;
|
|
|
|
exp[6] = 1.8662167355098713e+02;
|
|
|
|
exp[7] = 1.5301332413189379e+01;
|
|
|
|
exp[8] = 6.2047063430646876e+00;
|
|
|
|
exp[9] = 1.6894712385826522e-04;
|
|
|
|
|
|
|
|
floor[0] = 4.0000000000000000e+00;
|
|
|
|
floor[1] = 7.0000000000000000e+00;
|
|
|
|
floor[2] = -1.0000000000000000e+00;
|
|
|
|
floor[3] = -6.0000000000000000e+00;
|
|
|
|
floor[4] = 9.0000000000000000e+00;
|
|
|
|
floor[5] = 2.0000000000000000e+00;
|
|
|
|
floor[6] = 5.0000000000000000e+00;
|
|
|
|
floor[7] = 2.0000000000000000e+00;
|
|
|
|
floor[8] = 1.0000000000000000e+00;
|
|
|
|
floor[9] = -9.0000000000000000e+00;
|
|
|
|
|
|
|
|
log[0] = 1.6052314626930630e+00;
|
|
|
|
log[1] = 2.0462560018708768e+00;
|
|
|
|
log[2] = -1.2841708730962657e+00;
|
|
|
|
log[3] = 1.6115563905281544e+00;
|
|
|
|
log[4] = 2.2655365644872018e+00;
|
|
|
|
log[5] = 1.0737652208918380e+00;
|
|
|
|
log[6] = 1.6542360106073545e+00;
|
|
|
|
log[7] = 1.0035467127723465e+00;
|
|
|
|
log[8] = 6.0174879014578053e-01;
|
|
|
|
log[9] = 2.1617038728473527e+00;
|
|
|
|
|
|
|
|
pow[0] = 9.5282232631648415e+04;
|
|
|
|
pow[1] = 5.4811599352999900e+07;
|
|
|
|
pow[2] = 5.2859121715894400e-01;
|
|
|
|
pow[3] = 9.7587991957286472e-06;
|
|
|
|
pow[4] = 4.3280643293460450e+09;
|
|
|
|
pow[5] = 8.4406761805034551e+02;
|
|
|
|
pow[6] = 1.6946633276191194e+05;
|
|
|
|
pow[7] = 5.3449040147551940e+02;
|
|
|
|
pow[8] = 6.6881821384514159e+01;
|
|
|
|
pow[9] = 2.0609869004248744e-09;
|
|
|
|
|
|
|
|
sin[0] = -9.6466616586009283e-01;
|
|
|
|
sin[1] = 9.9338225271646543e-01;
|
|
|
|
sin[2] = -2.7335587039794395e-01;
|
|
|
|
sin[3] = 9.5586257685042800e-01;
|
|
|
|
sin[4] = -2.0994210667799692e-01;
|
|
|
|
sin[5] = 2.1355787807998605e-01;
|
|
|
|
sin[6] = -8.6945689711673619e-01;
|
|
|
|
sin[7] = 4.0195666811555783e-01;
|
|
|
|
sin[8] = 9.6778633541688000e-01;
|
|
|
|
sin[9] = -6.7344058690503452e-01;
|
|
|
|
|
|
|
|
sinh[0] = 7.2661916084208533e+01;
|
|
|
|
sinh[1] = 1.1479409110035194e+03;
|
|
|
|
sinh[2] = -2.8043136512812520e-01;
|
|
|
|
sinh[3] = -7.4994290911815868e+01;
|
|
|
|
sinh[4] = 7.6552466042906761e+03;
|
|
|
|
sinh[5] = 9.3031583421672010e+00;
|
|
|
|
sinh[6] = 9.3308157558281088e+01;
|
|
|
|
sinh[7] = 7.6179893137269143e+00;
|
|
|
|
sinh[8] = 3.0217691805496156e+00;
|
|
|
|
sinh[9] = -2.9595057572444951e+03;
|
|
|
|
|
|
|
|
sqrt[0] = 2.2313699659365484e+00;
|
|
|
|
sqrt[1] = 2.7818829009464263e+00;
|
|
|
|
sqrt[2] = 5.2619393496314792e-01;
|
|
|
|
sqrt[3] = 2.2384377628763938e+00;
|
|
|
|
sqrt[4] = 3.1042380236055380e+00;
|
|
|
|
sqrt[5] = 1.7106657298385224e+00;
|
|
|
|
sqrt[6] = 2.2867189227054791e+00;
|
|
|
|
sqrt[7] = 1.6516476350711160e+00;
|
|
|
|
sqrt[8] = 1.3510396336454586e+00;
|
|
|
|
sqrt[9] = 2.9471892997524950e+00;
|
|
|
|
|
|
|
|
tan[0] = -3.6613165650402277e+00;
|
|
|
|
tan[1] = 8.6490023264859754e+00;
|
|
|
|
tan[2] = -2.8417941955033615e-01;
|
|
|
|
tan[3] = 3.2532901859747287e+00;
|
|
|
|
tan[4] = 2.1472756403802937e-01;
|
|
|
|
tan[5] = -2.1860091071106700e-01;
|
|
|
|
tan[6] = -1.7600028178723679e+00;
|
|
|
|
tan[7] = -4.3898089147528178e-01;
|
|
|
|
tan[8] = -3.8438855602011305e+00;
|
|
|
|
tan[9] = 9.1098879337768517e-01;
|
|
|
|
|
|
|
|
tanh[0] = 9.9990531206936328e-01;
|
|
|
|
tanh[1] = 9.9999962057085307e-01;
|
|
|
|
tanh[2] = -2.7001505097318680e-01;
|
|
|
|
tanh[3] = -9.9991110943061700e-01;
|
|
|
|
tanh[4] = 9.9999999146798441e-01;
|
|
|
|
tanh[5] = 9.9427249436125233e-01;
|
|
|
|
tanh[6] = 9.9994257600983156e-01;
|
|
|
|
tanh[7] = 9.9149409509772863e-01;
|
|
|
|
tanh[8] = 9.4936501296239700e-01;
|
|
|
|
tanh[9] = -9.9999994291374019e-01;
|
|
|
|
}
|