forked from xuos/xiuos
				
			
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| // Copyright JS Foundation and other contributors, http://js.foundation
 | |
| //
 | |
| // Licensed under the Apache License, Version 2.0 (the "License");
 | |
| // you may not use this file except in compliance with the License.
 | |
| // You may obtain a copy of the License at
 | |
| //
 | |
| //     http://www.apache.org/licenses/LICENSE-2.0
 | |
| //
 | |
| // Unless required by applicable law or agreed to in writing, software
 | |
| // distributed under the License is distributed on an "AS IS" BASIS
 | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| // See the License for the specific language governing permissions and
 | |
| // limitations under the License.
 | |
| 
 | |
| var delta = 0.0001;
 | |
| var mod_m = 1.0 - delta;
 | |
| var mod_p = 1.0 + delta;
 | |
| 
 | |
| assert (isNaN (Math.cos (NaN)));
 | |
| assert ((Math.cos (+0.0)) == 1.0);
 | |
| assert ((Math.cos (-0.0)) == 1.0);
 | |
| assert (isNaN (Math.cos (Infinity)));
 | |
| assert (isNaN (Math.cos (-Infinity)));
 | |
| 
 | |
| assert (Math.cos (Math.PI) > -1.0 * mod_p);
 | |
| assert (Math.cos (Math.PI) < -1.0 * mod_m);
 | |
| 
 | |
| assert (Math.cos (Math.PI / 2) > -delta);
 | |
| assert (Math.cos (Math.PI / 2) < +delta);
 | |
| assert (Math.cos (-Math.PI / 2) > -delta);
 | |
| assert (Math.cos (-Math.PI / 2) < +delta);
 | |
| 
 | |
| assert (Math.cos (Math.PI / 4) > mod_m * Math.SQRT2 / 2);
 | |
| assert (Math.cos (Math.PI / 4) < mod_p * Math.SQRT2 / 2);
 | |
| 
 | |
| assert (Math.cos (-Math.PI / 4) > mod_m * Math.SQRT2 / 2);
 | |
| assert (Math.cos (-Math.PI / 4) < mod_p * Math.SQRT2 / 2);
 | |
| 
 | |
| assert (isNaN (Math.sin (NaN)));
 | |
| assert (1.0 / Math.sin (0.0) == Infinity);
 | |
| assert (1.0 / Math.sin (-0.0) == -Infinity);
 | |
| assert (isNaN (Math.sin (Infinity)));
 | |
| assert (isNaN (Math.sin (-Infinity)));
 | |
| 
 | |
| assert (Math.sin (Math.PI) > -delta);
 | |
| assert (Math.sin (Math.PI) < +delta);
 | |
| 
 | |
| assert (Math.sin (Math.PI / 2) > 1.0 * mod_m);
 | |
| assert (Math.sin (Math.PI / 2) < 1.0 * mod_p);
 | |
| 
 | |
| assert (Math.sin (-Math.PI / 2) > -1.0 * mod_p);
 | |
| assert (Math.sin (-Math.PI / 2) < -1.0 * mod_m);
 | |
| 
 | |
| assert (Math.sin (Math.PI / 4) > mod_m * Math.SQRT2 / 2);
 | |
| assert (Math.sin (Math.PI / 4) < mod_p * Math.SQRT2 / 2);
 | |
| 
 | |
| assert (Math.sin (-Math.PI / 4) > -mod_p * Math.SQRT2 / 2);
 | |
| assert (Math.sin (-Math.PI / 4) < -mod_m * Math.SQRT2 / 2);
 | |
| 
 | |
| var step = 0.01;
 | |
| 
 | |
| for (var x = -2 * Math.PI; x <= 2 * Math.PI; x += step)
 | |
| {
 | |
|   var s = Math.sin (x);
 | |
|   var c = Math.cos (x);
 | |
|   var sqr_s = s * s;
 | |
|   var sqr_c = c * c;
 | |
| 
 | |
|   assert (sqr_s + sqr_c > mod_m);
 | |
|   assert (sqr_s + sqr_c < mod_p);
 | |
| }
 |