home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 February / PCWorld_2006-02_cd.bin / software / vyzkuste / triky / triky.exe / autoit-v3-setup.exe / Include / Math.au3 < prev    next >
Text File  |  2005-01-31  |  7KB  |  223 lines

  1. #include-once
  2.  
  3. ; ------------------------------------------------------------------------------
  4. ;
  5. ; AutoIt Version: 3.0
  6. ; Language:       English
  7. ; Description:    Functions that assist with mathematical calculations.
  8. ;
  9. ; ------------------------------------------------------------------------------
  10.  
  11.  
  12. ;=============================================================================
  13. ;
  14. ; Function Name:   _Ceil()
  15. ;
  16. ; Description:     Returns the next integer value above the specified value.
  17. ;
  18. ; Syntax:          _Ceil( $nValue )
  19. ;
  20. ; Parameter(s);    $nValue     = Number to be evaluated.
  21. ;
  22. ; Requirement(s):  External:   = None.
  23. ;                  Internal:   = None.
  24. ;
  25. ; Return Value(s): On Success: = Returns next integer value above $nValue.
  26. ;                  On Failure: = Returns 0.
  27. ;                  @ERROR:     = 0 = No error.
  28. ;                                1 = $nValue isn't a number.
  29. ;
  30. ; Author(s):       Brian Keene <brian_keene@yahoo.com>
  31. ;
  32. ; Note(s):         Any value from the integer itself up to the next integer
  33. ;                  will be returned as the next integer above it (ex. "25.3"
  34. ;                  returns "26").  But due to restrictions on the number of
  35. ;                  decimal places the Int() built-in function can handle.  A
  36. ;                  number with greater than 14 decimal places (ex.
  37. ;                  "25.999999999999999") will be considered the next integer
  38. ;                  above the integer part of the value & then 1 will be added
  39. ;                  to that (ex. _Ceil("25.999999999999999") returns "27" NOT 26
  40. ;                  because there are 15 "9"'s after the decimal point).
  41. ;
  42. ; Example(s):
  43. ;   Dim $Ans = Number( InputBox( "_Ceil() Test", "Please enter a # to test." ) )
  44. ;   MsgBox( 4096, "_Ceil() Test", "Ceil( " & $Ans & " )    = " & _Ceil( $Ans ) )
  45. ;
  46. ;=============================================================================
  47. Func _Ceil($nValue)
  48.     If (Not IsNumber($nValue)) Then
  49.         SetError(1)
  50.         Return (0)
  51.     EndIf
  52.     
  53.     SetError(0)
  54.     Return ( Int($nValue) + 1)
  55. EndFunc   ;==>_Ceil
  56.  
  57.  
  58. ;=============================================================================
  59. ;
  60. ; Function Name:   _Floor()
  61. ;
  62. ; Description:     Returns the next integer value below the specified value.
  63. ;
  64. ; Syntax:          _Floor( $nValue )
  65. ;
  66. ; Parameter(s);    $nValue     = Number to be evaluated.
  67. ;
  68. ; Requirement(s):  External:   = None.
  69. ;                  Internal:   = None.
  70. ;
  71. ; Return Value(s): On Success: = Returns next integer value above $nValue.
  72. ;                  On Failure: = Returns 0.
  73. ;                  @ERROR:     = 0 = No error.
  74. ;                                1 = $nValue isn't a number.
  75. ;
  76. ; Author(s):       David Nuttall <danuttall at autoit3 com>
  77. ;
  78. ; Note(s):         Due to restrictions on the number of decimal places the Int()
  79. ;                  built-in function can handle. A number with greater than 14
  80. ;                  decimal places (ex. "25.999999999999999") will be considered
  81. ;                  the next integer above the integer part of the value (ex.
  82. ;                  _Floor("25.999999999999999") returns "26" NOT 25 because
  83. ;                  there are 15 "9"'s after the decimal point).
  84. ;
  85. ; Example(s):
  86. ;   Dim $Ans = Number( InputBox( "_Floor() Test", "Please enter a # to test." ) )
  87. ;   MsgBox( 4096, "_Floor() Test", "Floor( " & $Ans & " )    = " & _Floor( $Ans ) )
  88. ;
  89. ;=============================================================================
  90. Func _Floor($value)
  91.   If IsInt($value) Then
  92.      Return $value
  93.   ElseIf $value < 0 Then
  94.      Return  Int($value - 1)
  95.   Else
  96.      Return Int($value)
  97.   EndIf
  98. EndFunc ;==>Floor
  99.  
  100.  
  101. ;===============================================================================
  102. ;
  103. ; Function Name:    _MathCheckDiv()
  104. ; Description:      Checks to see if numberA is divisable by numberB
  105. ; Parameter(s):     $i_NumA   - Dividend
  106. ;                   $i_NumB   - Divisor
  107. ; Requirement(s):   None.
  108. ; Return Value(s):  On Success - 1 if not evenly divisable
  109. ;                              - 2 if evenly divisable
  110. ;                   On Failure - -1 and @error = 1
  111. ; Author(s):        Wes Wolfe-Wolvereness <Weswolf@aol.com>
  112. ;
  113. ;===============================================================================
  114. Func _MathCheckDiv($i_NumA, $i_NumB = 2)
  115.     If Number($i_NumA) = 0 Or Number($i_NumB) = 0 Or Int($i_NumA) <> $i_NumA Or Int($i_NumB) <> $i_NumB Then
  116.         Return -1
  117.         SetError(1)
  118.     ElseIf Int($i_NumA / $i_NumB) <> $i_NumA / $i_NumB Then
  119.         Return 1
  120.     Else
  121.         Return 2
  122.     EndIf
  123. EndFunc   ;==>_MathCheckDiv
  124.  
  125.  
  126. ;===============================================================================
  127. ;
  128. ; Function Name:   _Max()
  129. ;
  130. ; Description:     Evaluates which of the two numbers is higher.
  131. ;
  132. ; Syntax:          _Max( $nNum1, $nNum2 )
  133. ;
  134. ; Parameter(s):    $nNum1      = First number
  135. ;                  $nNum2      = Second number
  136. ;
  137. ; Requirement(s):  External:   = None.
  138. ;                  Internal:   = None.
  139. ;
  140. ; Return Value(s): On Success: = Returns the higher of the two numbers
  141. ;                  On Failure: = Returns 0.
  142. ;                  @ERROR:     = 0 = No error.
  143. ;                                1 = $nNum1 isn't a number.
  144. ;                                2 = $nNum2 isn't a number.
  145. ;
  146. ; Author(s):       Jeremy Landes <jlandes@landeserve.com>
  147. ;
  148. ; Note(s):         Works with floats as well as integers
  149. ;
  150. ; Example(s):
  151. ;   #Include <Math.au3>
  152. ;   MsgBox( 4096, "_Max() - Test", "_Max( 3.5, 10 )    = " & _Max( 3.5, 10 ) )
  153. ;   Exit
  154. ;
  155. ;===============================================================================
  156. Func _Max($nNum1, $nNum2)
  157.     ; Check to see if the parameters are indeed numbers of some sort.
  158.     If (Not IsNumber($nNum1)) Then
  159.         SetError(1)
  160.         Return (0)
  161.     EndIf
  162.     If (Not IsNumber($nNum2)) Then
  163.         SetError(2)
  164.         Return (0)
  165.     EndIf
  166.     
  167.     If $nNum1 > $nNum2 Then
  168.         Return $nNum1
  169.     Else
  170.         Return $nNum2
  171.     EndIf
  172. EndFunc   ;==>_Max
  173. ;===============================================================================
  174.  
  175.  
  176. ;===============================================================================
  177. ;
  178. ; Function Name:   _Min()
  179. ;
  180. ; Description:     Evaluates which of the two numbers is lower.
  181. ;
  182. ; Syntax:          _Min( $nNum1, $nNum2 )
  183. ;
  184. ; Parameter(s):    $nNum1      = First number
  185. ;                  $nNum2      = Second number
  186. ;
  187. ; Requirement(s):  External:   = None.
  188. ;                  Internal:   = None.
  189. ;
  190. ; Return Value(s): On Success: = Returns the higher of the two numbers
  191. ;                  On Failure: = Returns 0.
  192. ;                  @ERROR:     = 0 = No error.
  193. ;                                1 = $nNum1 isn't a number.
  194. ;                                2 = $nNum2 isn't a number.
  195. ;
  196. ; Author(s):       Jeremy Landes <jlandes@landeserve.com>
  197. ;
  198. ; Note(s):         Works with floats as well as integers
  199. ;
  200. ; Example(s):
  201. ;   #Include <Math.au3>
  202. ;   MsgBox( 4096, "_Min() - Test", "_Min( 3.5, 10 )    = " & _Min( 3.5, 10 ) )
  203. ;   Exit
  204. ;
  205. ;===============================================================================
  206. Func _Min($nNum1, $nNum2)
  207.     ; Check to see if the parameters are indeed numbers of some sort.
  208.     If (Not IsNumber($nNum1)) Then
  209.         SetError(1)
  210.         Return (0)
  211.     EndIf
  212.     If (Not IsNumber($nNum2)) Then
  213.         SetError(2)
  214.         Return (0)
  215.     EndIf
  216.     
  217.     If $nNum1 > $nNum2 Then
  218.         Return $nNum2
  219.     Else
  220.         Return $nNum1
  221.     EndIf
  222. EndFunc   ;==>_Min
  223.