pow.phpt 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. --TEST--
  2. Various pow() tests
  3. --FILE--
  4. <?php // $Id$
  5. define('LONG_MAX', is_int(5000000000)? 9223372036854775807 : 0x7FFFFFFF);
  6. define('LONG_MIN', -LONG_MAX - 1);
  7. printf("%d,%d,%d,%d\n",is_int(LONG_MIN ),is_int(LONG_MAX ),
  8. is_int(LONG_MIN-1),is_int(LONG_MAX+1));
  9. $tests = <<<TESTS
  10. 0.25 === pow(-2,-2)
  11. -0.5 === pow(-2,-1)
  12. 1 === pow(-2, 0)
  13. -2 === pow(-2, 1)
  14. 4 === pow(-2, 2)
  15. 1.0 === pow(-1,-2)
  16. -1.0 === pow(-1,-1)
  17. 1 === pow(-1, 0)
  18. -1 === pow(-1, 1)
  19. 1 === pow(-1, 2)
  20. TRUE === is_infinite(pow(0,-2))
  21. TRUE === is_infinite(pow(0,-1))
  22. 1 === pow( 0, 0)
  23. 0 === pow( 0, 1)
  24. 0 === pow( 0, 2)
  25. 1.0 === pow( 1,-2)
  26. 1.0 === pow( 1,-1)
  27. 1 === pow( 1, 0)
  28. 1 === pow( 1, 1)
  29. 1 === pow( 1, 2)
  30. 0.25 === pow( 2,-2)
  31. 0.5 === pow( 2,-1)
  32. 1 === pow( 2, 0)
  33. 2 === pow( 2, 1)
  34. 4 === pow( 2, 2)
  35. 0.25 === pow(-2,-2.0)
  36. -0.5 === pow(-2,-1.0)
  37. 1.0 === pow(-2, 0.0)
  38. -2.0 === pow(-2, 1.0)
  39. 4.0 === pow(-2, 2.0)
  40. 1.0 === pow(-1,-2.0)
  41. -1.0 === pow(-1,-1.0)
  42. 1.0 === pow(-1, 0.0)
  43. -1.0 === pow(-1, 1.0)
  44. 1.0 === pow(-1, 2.0)
  45. TRUE === is_infinite(pow(0,-2.0))
  46. TRUE === is_infinite(pow(0,-1.0))
  47. 1.0 === pow( 0, 0.0)
  48. 0.0 === pow( 0, 1.0)
  49. 0.0 === pow( 0, 2.0)
  50. 1.0 === pow( 1,-2.0)
  51. 1.0 === pow( 1,-1.0)
  52. 1.0 === pow( 1, 0.0)
  53. 1.0 === pow( 1, 1.0)
  54. 1.0 === pow( 1, 2.0)
  55. 0.25 === pow( 2,-2.0)
  56. 0.5 === pow( 2,-1.0)
  57. 1.0 === pow( 2, 0.0)
  58. 2.0 === pow( 2, 1.0)
  59. 4.0 === pow( 2, 2.0)
  60. 2147483648 === pow(2,31)
  61. -2147483648 ~== pow(-2,31)
  62. 1000000000 === pow(10,9)
  63. 100000000 === pow(-10,8)
  64. 1 === pow(-1,1443279822)
  65. -1 === pow(-1,1443279821)
  66. sqrt(2) ~== pow(2,1/2)
  67. 0.25 === pow(-2.0,-2.0)
  68. -0.5 === pow(-2.0,-1.0)
  69. 1.0 === pow(-2.0, 0.0)
  70. -2.0 === pow(-2.0, 1.0)
  71. 4.0 === pow(-2.0, 2.0)
  72. 1.0 === pow(-1.0,-2.0)
  73. -1.0 === pow(-1.0,-1.0)
  74. 1.0 === pow(-1.0, 0.0)
  75. -1.0 === pow(-1.0, 1.0)
  76. 1.0 === pow(-1.0, 2.0)
  77. TRUE === is_infinite(pow(0.0,-2.0))
  78. TRUE === is_infinite(pow(0.0,-1.0))
  79. 1.0 === pow( 0.0, 0.0)
  80. 0.0 === pow( 0.0, 1.0)
  81. 0.0 === pow( 0.0, 2.0)
  82. 1.0 === pow( 1.0,-2.0)
  83. 1.0 === pow( 1.0,-1.0)
  84. 1.0 === pow( 1.0, 0.0)
  85. 1.0 === pow( 1.0, 1.0)
  86. 1.0 === pow( 1.0, 2.0)
  87. 0.25 === pow( 2.0,-2.0)
  88. 0.5 === pow( 2.0,-1.0)
  89. 1.0 === pow( 2.0, 0.0)
  90. 2.0 === pow( 2.0, 1.0)
  91. 4.0 === pow( 2.0, 2.0)
  92. 0.25 === pow(-2.0,-2)
  93. -0.5 === pow(-2.0,-1)
  94. 1.0 === pow(-2.0, 0)
  95. -2.0 === pow(-2.0, 1)
  96. 4.0 === pow(-2.0, 2)
  97. 1.0 === pow(-1.0,-2)
  98. -1.0 === pow(-1.0,-1)
  99. 1.0 === pow(-1.0, 0)
  100. -1.0 === pow(-1.0, 1)
  101. 1.0 === pow(-1.0, 2)
  102. TRUE === is_infinite(pow( 0.0,-2))
  103. TRUE === is_infinite(pow( 0.0,-1))
  104. 1.0 === pow( 0.0, 0)
  105. 0.0 === pow( 0.0, 1)
  106. 0.0 === pow( 0.0, 2)
  107. 1.0 === pow( 1.0,-2)
  108. 1.0 === pow( 1.0,-1)
  109. 1.0 === pow( 1.0, 0)
  110. 1.0 === pow( 1.0, 1)
  111. 1.0 === pow( 1.0, 2)
  112. 0.25 === pow( 2.0,-2)
  113. 0.5 === pow( 2.0,-1)
  114. 1.0 === pow( 2.0, 0)
  115. 2.0 === pow( 2.0, 1)
  116. 4.0 === pow( 2.0, 2)
  117. 2.0 === pow( 4, 0.5)
  118. 2.0 === pow( 4.0, 0.5)
  119. 3.0 === pow( 27, 1/3)
  120. 3.0 === pow(27.0, 1/3)
  121. 0.5 === pow( 4, -0.5)
  122. 0.5 === pow( 4.0, -0.5)
  123. LONG_MAX-1 === pow(LONG_MAX-1,1)
  124. LONG_MIN+1 === pow(LONG_MIN+1,1)
  125. (LONG_MAX-1)*(LONG_MAX-1) ~== pow(LONG_MAX-1,2)
  126. (LONG_MIN+1)*(LONG_MIN+1) ~== pow(LONG_MIN+1,2)
  127. (float)(LONG_MAX-1) === pow(LONG_MAX-1,1.0)
  128. (float)(LONG_MIN+1) === pow(LONG_MIN+1,1.0)
  129. (LONG_MAX-1)*(LONG_MAX-1) ~== pow(LONG_MAX-1,2.0)
  130. (LONG_MIN+1)*(LONG_MIN+1) ~== pow(LONG_MIN+1,2.0)
  131. LONG_MAX === pow(LONG_MAX,1)
  132. LONG_MIN === pow(LONG_MIN,1)
  133. LONG_MAX*LONG_MAX ~== pow(LONG_MAX,2)
  134. LONG_MIN*LONG_MIN ~== pow(LONG_MIN,2)
  135. (float)LONG_MAX === pow(LONG_MAX,1.0)
  136. (float)LONG_MIN === pow(LONG_MIN,1.0)
  137. LONG_MAX*LONG_MAX ~== pow(LONG_MAX,2.0)
  138. LONG_MIN*LONG_MIN ~== pow(LONG_MIN,2.0)
  139. TESTS;
  140. echo "On failure, please mail result to php-dev@lists.php.net\n";
  141. include(dirname(__FILE__) . '/../../../../tests/quicktester.inc');
  142. --EXPECT--
  143. 1,1,0,0
  144. On failure, please mail result to php-dev@lists.php.net
  145. OK