pow.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. // interesting floating point limits
  6. checkNaN(NaN, NaN);
  7. checkNaN(Infinity, NaN);
  8. checkNaN(-Infinity, NaN);
  9. checkNaN(0, NaN);
  10. checkNaN(-0, NaN);
  11. checkNaN(3, NaN);
  12. checkNaN(-3, NaN);
  13. check(1, NaN, 0);
  14. check(1, Infinity, 0);
  15. check(1, -Infinity, 0);
  16. check(1, 0, 0);
  17. check(1, -0, 0);
  18. check(1, 3, 0);
  19. check(1, -3, 0);
  20. check(1, NaN, -0);
  21. check(1, Infinity, -0);
  22. check(1, -Infinity, -0);
  23. check(1, 0, -0);
  24. check(1, -0, -0);
  25. check(1, 3, -0);
  26. check(1, -3, -0);
  27. checkNaN(NaN, 3);
  28. checkNaN(NaN, Infinity);
  29. checkNaN(NaN, -Infinity);
  30. check(Infinity, +1.1, Infinity);
  31. check(Infinity, -1.1, Infinity);
  32. check(0, +1.1, -Infinity);
  33. check(0, -1.1, -Infinity);
  34. checkNaN(+1, Infinity);
  35. checkNaN(-1, Infinity);
  36. checkNaN(+1, -Infinity);
  37. checkNaN(-1, -Infinity);
  38. check(0, +0.9, Infinity);
  39. check(0, -0.9, Infinity);
  40. check(Infinity, +0.9, -Infinity);
  41. check(Infinity, -0.9, -Infinity);
  42. check(Infinity, Infinity, 0.1);
  43. check(+0, Infinity, -0.1);
  44. check(-Infinity, -Infinity, 3);
  45. check(+Infinity, -Infinity, 4);
  46. check(-0, -Infinity, -3);
  47. check(+0, -Infinity, -4);
  48. check(0, 0, 0.1);
  49. check(+Infinity, +0, -3);
  50. check(+Infinity, +0, -0.1);
  51. check(+Infinity, -0, -1.1);
  52. check(-0.0, -0, +3);
  53. check(+0.0, -0, +4);
  54. check(-Infinity, -0, -3);
  55. check(+Infinity, -0, -4);
  56. checkNaN(-3, 3.3);
  57. check(25, 5, 2);
  58. check(25, -5, 2);
  59. check(1/25, -5, -2);
  60. if(!isNaN(Math.pow()))
  61. {
  62. WScript.Echo("error: Math.pow() is not NaN");
  63. }
  64. WScript.Echo("done");
  65. function check(result, x, y) {
  66. var rs = Math.pow(x, y);
  67. if ( Math.abs(rs - result) > 0.00000000001) {
  68. WScript.Echo("pow(" + x + " , " + y + ") != " + result);
  69. WScript.Echo(" wrong result is pow(" + x + " , " + y + ") = " + rs);
  70. }
  71. }
  72. function checkNaN(x, y) {
  73. var rs = Math.pow(x, y);
  74. if (!isNaN(rs)) {
  75. WScript.Echo("pow(" + x + " , " + y + ") != NaN" );
  76. WScript.Echo(" wrong result is pow(" + x + " , " + y + ") = " + rs);
  77. }
  78. }