2011-09-07 08:35:18 +02:00
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
2014-07-22 01:09:02 +02:00
/ * - - -
info : Tangent is a periodic function with period PI
2014-07-25 00:41:42 +02:00
es5id : 15.8 . 2.18 _A6
2014-07-22 01:09:02 +02:00
description : >
Checking if Math . tan ( x ) equals to Math . tan ( x + n * Math . PI ) with
precision 0.000000000003 , where n is an integer from 1 to 100 and
x is one of 10 float point values from 0 to Math . PI
-- - * /
2011-09-07 08:35:18 +02:00
// CHECK#1
2015-04-29 17:40:30 +02:00
var prec = 0.00000000003 ;
2011-09-07 08:35:18 +02:00
//prec = 0.000000000000001;
2015-04-29 17:40:30 +02:00
var period = Math . PI ;
var pernum = 100 ;
2011-09-07 08:35:18 +02:00
2015-04-29 17:40:30 +02:00
var a = - pernum * period + period / 2 ;
var b = pernum * period - period / 2 ;
var snum = 9 ;
var step = period / ( snum + 2 ) ;
var x = new Array ( ) ;
for ( var i = 0 ; i <= snum ; i ++ ) //// We exlude special points
2011-09-07 08:35:18 +02:00
{ //// in this cycle.
x [ i ] = a + ( i + 1 ) * step ; ////
} ////
var curval ;
var curx ;
var j ;
for ( i = 0 ; i < snum ; i ++ )
{
curval = Math . tan ( x [ i ] ) ;
curx = x [ i ] + period ;
2015-04-29 17:40:30 +02:00
var j = 0 ;
2011-09-07 08:35:18 +02:00
while ( curx <= b )
{
curx += period ;
j ++ ;
if ( Math . abs ( Math . tan ( curx ) - curval ) >= prec )
{
2015-06-09 18:08:02 +02:00
$ERROR ( "#1: tan is found out to not be periodic:\n Math.abs(Math.tan(" + x [ i ] + ") - Math.tan(" + x [ i ] + " + 2*Math.PI*" + j + ")) >= " + prec + "\n Math.tan(" + x [ i ] + ") === " + curval + "\n Math.tan(" + curx + ") === " + Math . tan ( curx ) ) ;
2011-09-07 08:35:18 +02:00
}
}
}