Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.3.x will end 7 October 2024 (12 months).
  • Bug fixes for security issues in 4.3.x will end 21 April 2025 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.2.x is supported too.

Differences Between: [Versions 310 and 403] [Versions 311 and 403] [Versions 39 and 403] [Versions 400 and 403] [Versions 401 and 403]

   1  <?php
   2  
   3  namespace PhpOffice\PhpSpreadsheet\Calculation;
   4  
   5  /**
   6   * @deprecated 1.18.0
   7   */
   8  class MathTrig
   9  {
  10      /**
  11       * ARABIC.
  12       *
  13       * Converts a Roman numeral to an Arabic numeral.
  14       *
  15       * Excel Function:
  16       *        ARABIC(text)
  17       *
  18       * @deprecated 1.18.0
  19       *      Use the evaluate method in the MathTrig\Arabic class instead
  20       * @see MathTrig\Arabic::evaluate()
  21       *
  22       * @param array|string $roman
  23       *
  24       * @return array|int|string the arabic numberal contrived from the roman numeral
  25       */
  26      public static function ARABIC($roman)
  27      {
  28          return MathTrig\Arabic::evaluate($roman);
  29      }
  30  
  31      /**
  32       * ATAN2.
  33       *
  34       * This function calculates the arc tangent of the two variables x and y. It is similar to
  35       *        calculating the arc tangent of y รท x, except that the signs of both arguments are used
  36       *        to determine the quadrant of the result.
  37       * The arctangent is the angle from the x-axis to a line containing the origin (0, 0) and a
  38       *        point with coordinates (xCoordinate, yCoordinate). The angle is given in radians between
  39       *        -pi and pi, excluding -pi.
  40       *
  41       * Note that the Excel ATAN2() function accepts its arguments in the reverse order to the standard
  42       *        PHP atan2() function, so we need to reverse them here before calling the PHP atan() function.
  43       *
  44       * Excel Function:
  45       *        ATAN2(xCoordinate,yCoordinate)
  46       *
  47       * @deprecated 1.18.0
  48       *      Use the atan2 method in the MathTrig\Trig\Tangent class instead
  49       * @see MathTrig\Trig\Tangent::atan2()
  50       *
  51       * @param array|float $xCoordinate the x-coordinate of the point
  52       * @param array|float $yCoordinate the y-coordinate of the point
  53       *
  54       * @return array|float|string the inverse tangent of the specified x- and y-coordinates, or a string containing an error
  55       */
  56      public static function ATAN2($xCoordinate = null, $yCoordinate = null)
  57      {
  58          return MathTrig\Trig\Tangent::atan2($xCoordinate, $yCoordinate);
  59      }
  60  
  61      /**
  62       * BASE.
  63       *
  64       * Converts a number into a text representation with the given radix (base).
  65       *
  66       * Excel Function:
  67       *        BASE(Number, Radix [Min_length])
  68       *
  69       * @deprecated 1.18.0
  70       *      Use the evaluate method in the MathTrig\Base class instead
  71       * @see MathTrig\Base::evaluate()
  72       *
  73       * @param float $number
  74       * @param float $radix
  75       * @param int $minLength
  76       *
  77       * @return array|string the text representation with the given radix (base)
  78       */
  79      public static function BASE($number, $radix, $minLength = null)
  80      {
  81          return MathTrig\Base::evaluate($number, $radix, $minLength);
  82      }
  83  
  84      /**
  85       * CEILING.
  86       *
  87       * Returns number rounded up, away from zero, to the nearest multiple of significance.
  88       *        For example, if you want to avoid using pennies in your prices and your product is
  89       *        priced at $4.42, use the formula =CEILING(4.42,0.05) to round prices up to the
  90       *        nearest nickel.
  91       *
  92       * Excel Function:
  93       *        CEILING(number[,significance])
  94       *
  95       * @deprecated 1.17.0
  96       *      Use the ceiling() method in the MathTrig\Ceiling class instead
  97       * @see MathTrig\Ceiling::ceiling()
  98       *
  99       * @param float $number the number you want to round
 100       * @param float $significance the multiple to which you want to round
 101       *
 102       * @return array|float|string Rounded Number, or a string containing an error
 103       */
 104      public static function CEILING($number, $significance = null)
 105      {
 106          return MathTrig\Ceiling::ceiling($number, $significance);
 107      }
 108  
 109      /**
 110       * COMBIN.
 111       *
 112       * Returns the number of combinations for a given number of items. Use COMBIN to
 113       *        determine the total possible number of groups for a given number of items.
 114       *
 115       * Excel Function:
 116       *        COMBIN(numObjs,numInSet)
 117       *
 118       * @deprecated 1.18.0
 119       *      Use the withoutRepetition() method in the MathTrig\Combinations class instead
 120       * @see MathTrig\Combinations::withoutRepetition()
 121       *
 122       * @param array|int $numObjs Number of different objects
 123       * @param array|int $numInSet Number of objects in each combination
 124       *
 125       * @return array|float|int|string Number of combinations, or a string containing an error
 126       */
 127      public static function COMBIN($numObjs, $numInSet)
 128      {
 129          return MathTrig\Combinations::withoutRepetition($numObjs, $numInSet);
 130      }
 131  
 132      /**
 133       * EVEN.
 134       *
 135       * Returns number rounded up to the nearest even integer.
 136       * You can use this function for processing items that come in twos. For example,
 137       *        a packing crate accepts rows of one or two items. The crate is full when
 138       *        the number of items, rounded up to the nearest two, matches the crate's
 139       *        capacity.
 140       *
 141       * Excel Function:
 142       *        EVEN(number)
 143       *
 144       * @deprecated 1.18.0
 145       *      Use the even() method in the MathTrig\Round class instead
 146       * @see MathTrig\Round::even()
 147       *
 148       * @param array|float $number Number to round
 149       *
 150       * @return array|float|int|string Rounded Number, or a string containing an error
 151       */
 152      public static function EVEN($number)
 153      {
 154          return MathTrig\Round::even($number);
 155      }
 156  
 157      /**
 158       * Helper function for Even.
 159       *
 160       * @deprecated 1.18.0
 161       *      Use the evaluate() method in the MathTrig\Helpers class instead
 162       * @see MathTrig\Helpers::getEven()
 163       */
 164      public static function getEven(float $number): int
 165      {
 166          return (int) MathTrig\Helpers::getEven($number);
 167      }
 168  
 169      /**
 170       * FACT.
 171       *
 172       * Returns the factorial of a number.
 173       * The factorial of a number is equal to 1*2*3*...* number.
 174       *
 175       * Excel Function:
 176       *        FACT(factVal)
 177       *
 178       * @deprecated 1.18.0
 179       *      Use the fact() method in the MathTrig\Factorial class instead
 180       * @see MathTrig\Factorial::fact()
 181       *
 182       * @param array|float $factVal Factorial Value
 183       *
 184       * @return array|float|int|string Factorial, or a string containing an error
 185       */
 186      public static function FACT($factVal)
 187      {
 188          return MathTrig\Factorial::fact($factVal);
 189      }
 190  
 191      /**
 192       * FACTDOUBLE.
 193       *
 194       * Returns the double factorial of a number.
 195       *
 196       * Excel Function:
 197       *        FACTDOUBLE(factVal)
 198       *
 199       * @deprecated 1.18.0
 200       *      Use the factDouble() method in the MathTrig\Factorial class instead
 201       * @see MathTrig\Factorial::factDouble()
 202       *
 203       * @param array|float $factVal Factorial Value
 204       *
 205       * @return array|float|int|string Double Factorial, or a string containing an error
 206       */
 207      public static function FACTDOUBLE($factVal)
 208      {
 209          return MathTrig\Factorial::factDouble($factVal);
 210      }
 211  
 212      /**
 213       * FLOOR.
 214       *
 215       * Rounds number down, toward zero, to the nearest multiple of significance.
 216       *
 217       * Excel Function:
 218       *        FLOOR(number[,significance])
 219       *
 220       * @deprecated 1.17.0
 221       *      Use the floor() method in the MathTrig\Floor class instead
 222       * @see MathTrig\Floor::floor()
 223       *
 224       * @param float $number Number to round
 225       * @param float $significance Significance
 226       *
 227       * @return array|float|string Rounded Number, or a string containing an error
 228       */
 229      public static function FLOOR($number, $significance = null)
 230      {
 231          return MathTrig\Floor::floor($number, $significance);
 232      }
 233  
 234      /**
 235       * FLOOR.MATH.
 236       *
 237       * Round a number down to the nearest integer or to the nearest multiple of significance.
 238       *
 239       * Excel Function:
 240       *        FLOOR.MATH(number[,significance[,mode]])
 241       *
 242       * @deprecated 1.17.0
 243       *      Use the math() method in the MathTrig\Floor class instead
 244       * @see MathTrig\Floor::math()
 245       *
 246       * @param float $number Number to round
 247       * @param float $significance Significance
 248       * @param int $mode direction to round negative numbers
 249       *
 250       * @return array|float|string Rounded Number, or a string containing an error
 251       */
 252      public static function FLOORMATH($number, $significance = null, $mode = 0)
 253      {
 254          return MathTrig\Floor::math($number, $significance, $mode);
 255      }
 256  
 257      /**
 258       * FLOOR.PRECISE.
 259       *
 260       * Rounds number down, toward zero, to the nearest multiple of significance.
 261       *
 262       * Excel Function:
 263       *        FLOOR.PRECISE(number[,significance])
 264       *
 265       * @deprecated 1.17.0
 266       *      Use the precise() method in the MathTrig\Floor class instead
 267       * @see MathTrig\Floor::precise()
 268       *
 269       * @param float $number Number to round
 270       * @param float $significance Significance
 271       *
 272       * @return array|float|string Rounded Number, or a string containing an error
 273       */
 274      public static function FLOORPRECISE($number, $significance = 1)
 275      {
 276          return MathTrig\Floor::precise($number, $significance);
 277      }
 278  
 279      /**
 280       * INT.
 281       *
 282       * Casts a floating point value to an integer
 283       *
 284       * Excel Function:
 285       *        INT(number)
 286       *
 287       * @deprecated 1.17.0
 288       *      Use the evaluate() method in the MathTrig\IntClass class instead
 289       * @see MathTrig\IntClass::evaluate()
 290       *
 291       * @param array|float $number Number to cast to an integer
 292       *
 293       * @return array|int|string Integer value, or a string containing an error
 294       */
 295      public static function INT($number)
 296      {
 297          return MathTrig\IntClass::evaluate($number);
 298      }
 299  
 300      /**
 301       * GCD.
 302       *
 303       * Returns the greatest common divisor of a series of numbers.
 304       * The greatest common divisor is the largest integer that divides both
 305       *        number1 and number2 without a remainder.
 306       *
 307       * Excel Function:
 308       *        GCD(number1[,number2[, ...]])
 309       *
 310       * @deprecated 1.18.0
 311       *      Use the evaluate() method in the MathTrig\Gcd class instead
 312       * @see MathTrig\Gcd::evaluate()
 313       *
 314       * @param mixed ...$args Data values
 315       *
 316       * @return int|mixed|string Greatest Common Divisor, or a string containing an error
 317       */
 318      public static function GCD(...$args)
 319      {
 320          return MathTrig\Gcd::evaluate(...$args);
 321      }
 322  
 323      /**
 324       * LCM.
 325       *
 326       * Returns the lowest common multiplier of a series of numbers
 327       * The least common multiple is the smallest positive integer that is a multiple
 328       * of all integer arguments number1, number2, and so on. Use LCM to add fractions
 329       * with different denominators.
 330       *
 331       * Excel Function:
 332       *        LCM(number1[,number2[, ...]])
 333       *
 334       * @deprecated 1.18.0
 335       *      Use the evaluate() method in the MathTrig\Lcm class instead
 336       * @see MathTrig\Lcm::evaluate()
 337       *
 338       * @param mixed ...$args Data values
 339       *
 340       * @return int|string Lowest Common Multiplier, or a string containing an error
 341       */
 342      public static function LCM(...$args)
 343      {
 344          return MathTrig\Lcm::evaluate(...$args);
 345      }
 346  
 347      /**
 348       * LOG_BASE.
 349       *
 350       * Returns the logarithm of a number to a specified base. The default base is 10.
 351       *
 352       * Excel Function:
 353       *        LOG(number[,base])
 354       *
 355       * @deprecated 1.18.0
 356       *      Use the withBase() method in the MathTrig\Logarithms class instead
 357       * @see MathTrig\Logarithms::withBase()
 358       *
 359       * @param float $number The positive real number for which you want the logarithm
 360       * @param float $base The base of the logarithm. If base is omitted, it is assumed to be 10.
 361       *
 362       * @return array|float|string The result, or a string containing an error
 363       */
 364      public static function logBase($number, $base = 10)
 365      {
 366          return MathTrig\Logarithms::withBase($number, $base);
 367      }
 368  
 369      /**
 370       * MDETERM.
 371       *
 372       * Returns the matrix determinant of an array.
 373       *
 374       * Excel Function:
 375       *        MDETERM(array)
 376       *
 377       * @deprecated 1.18.0
 378       *      Use the determinant() method in the MathTrig\MatrixFunctions class instead
 379       * @see MathTrig\MatrixFunctions::determinant()
 380       *
 381       * @param array $matrixValues A matrix of values
 382       *
 383       * @return float|string The result, or a string containing an error
 384       */
 385      public static function MDETERM($matrixValues)
 386      {
 387          return MathTrig\MatrixFunctions::determinant($matrixValues);
 388      }
 389  
 390      /**
 391       * MINVERSE.
 392       *
 393       * Returns the inverse matrix for the matrix stored in an array.
 394       *
 395       * Excel Function:
 396       *        MINVERSE(array)
 397       *
 398       * @deprecated 1.18.0
 399       *      Use the inverse() method in the MathTrig\MatrixFunctions class instead
 400       * @see MathTrig\MatrixFunctions::inverse()
 401       *
 402       * @param array $matrixValues A matrix of values
 403       *
 404       * @return array|string The result, or a string containing an error
 405       */
 406      public static function MINVERSE($matrixValues)
 407      {
 408          return MathTrig\MatrixFunctions::inverse($matrixValues);
 409      }
 410  
 411      /**
 412       * MMULT.
 413       *
 414       * @deprecated 1.18.0
 415       *      Use the multiply() method in the MathTrig\MatrixFunctions class instead
 416       * @see MathTrig\MatrixFunctions::multiply()
 417       *
 418       * @param array $matrixData1 A matrix of values
 419       * @param array $matrixData2 A matrix of values
 420       *
 421       * @return array|string The result, or a string containing an error
 422       */
 423      public static function MMULT($matrixData1, $matrixData2)
 424      {
 425          return MathTrig\MatrixFunctions::multiply($matrixData1, $matrixData2);
 426      }
 427  
 428      /**
 429       * MOD.
 430       *
 431       * @deprecated 1.18.0
 432       *      Use the mod() method in the MathTrig\Operations class instead
 433       * @see MathTrig\Operations::mod()
 434       *
 435       * @param int $a Dividend
 436       * @param int $b Divisor
 437       *
 438       * @return array|float|int|string Remainder, or a string containing an error
 439       */
 440      public static function MOD($a = 1, $b = 1)
 441      {
 442          return MathTrig\Operations::mod($a, $b);
 443      }
 444  
 445      /**
 446       * MROUND.
 447       *
 448       * Rounds a number to the nearest multiple of a specified value
 449       *
 450       * @deprecated 1.17.0
 451       *      Use the multiple() method in the MathTrig\Mround class instead
 452       * @see MathTrig\Round::multiple()
 453       *
 454       * @param float $number Number to round
 455       * @param array|int $multiple Multiple to which you want to round $number
 456       *
 457       * @return array|float|string Rounded Number, or a string containing an error
 458       */
 459      public static function MROUND($number, $multiple)
 460      {
 461          return MathTrig\Round::multiple($number, $multiple);
 462      }
 463  
 464      /**
 465       * MULTINOMIAL.
 466       *
 467       * Returns the ratio of the factorial of a sum of values to the product of factorials.
 468       *
 469       * @deprecated 1.18.0
 470       *      Use the multinomial method in the MathTrig\Factorial class instead
 471       * @see MathTrig\Factorial::multinomial()
 472       *
 473       * @param mixed[] $args An array of mixed values for the Data Series
 474       *
 475       * @return float|string The result, or a string containing an error
 476       */
 477      public static function MULTINOMIAL(...$args)
 478      {
 479          return MathTrig\Factorial::multinomial(...$args);
 480      }
 481  
 482      /**
 483       * ODD.
 484       *
 485       * Returns number rounded up to the nearest odd integer.
 486       *
 487       * @deprecated 1.18.0
 488       *      Use the odd method in the MathTrig\Round class instead
 489       * @see MathTrig\Round::odd()
 490       *
 491       * @param array|float $number Number to round
 492       *
 493       * @return array|float|int|string Rounded Number, or a string containing an error
 494       */
 495      public static function ODD($number)
 496      {
 497          return MathTrig\Round::odd($number);
 498      }
 499  
 500      /**
 501       * POWER.
 502       *
 503       * Computes x raised to the power y.
 504       *
 505       * @deprecated 1.18.0
 506       *      Use the evaluate method in the MathTrig\Power class instead
 507       * @see MathTrig\Operations::power()
 508       *
 509       * @param float $x
 510       * @param float $y
 511       *
 512       * @return array|float|int|string The result, or a string containing an error
 513       */
 514      public static function POWER($x = 0, $y = 2)
 515      {
 516          return MathTrig\Operations::power($x, $y);
 517      }
 518  
 519      /**
 520       * PRODUCT.
 521       *
 522       * PRODUCT returns the product of all the values and cells referenced in the argument list.
 523       *
 524       * @deprecated 1.18.0
 525       *      Use the product method in the MathTrig\Operations class instead
 526       * @see MathTrig\Operations::product()
 527       *
 528       * Excel Function:
 529       *        PRODUCT(value1[,value2[, ...]])
 530       *
 531       * @param mixed ...$args Data values
 532       *
 533       * @return float|string
 534       */
 535      public static function PRODUCT(...$args)
 536      {
 537          return MathTrig\Operations::product(...$args);
 538      }
 539  
 540      /**
 541       * QUOTIENT.
 542       *
 543       * QUOTIENT function returns the integer portion of a division. Numerator is the divided number
 544       *        and denominator is the divisor.
 545       *
 546       * @deprecated 1.18.0
 547       *      Use the quotient method in the MathTrig\Operations class instead
 548       * @see MathTrig\Operations::quotient()
 549       *
 550       * Excel Function:
 551       *        QUOTIENT(value1[,value2[, ...]])
 552       *
 553       * @param mixed $numerator
 554       * @param mixed $denominator
 555       *
 556       * @return array|int|string
 557       */
 558      public static function QUOTIENT($numerator, $denominator)
 559      {
 560          return MathTrig\Operations::quotient($numerator, $denominator);
 561      }
 562  
 563      /**
 564       * RAND/RANDBETWEEN.
 565       *
 566       * @deprecated 1.18.0
 567       *      Use the randBetween or randBetween method in the MathTrig\Random class instead
 568       * @see MathTrig\Random::randBetween()
 569       *
 570       * @param int $min Minimal value
 571       * @param int $max Maximal value
 572       *
 573       * @return array|float|int|string Random number
 574       */
 575      public static function RAND($min = 0, $max = 0)
 576      {
 577          return MathTrig\Random::randBetween($min, $max);
 578      }
 579  
 580      /**
 581       * ROMAN.
 582       *
 583       * Converts a number to Roman numeral
 584       *
 585       * @deprecated 1.17.0
 586       *      Use the evaluate() method in the MathTrig\Roman class instead
 587       * @see MathTrig\Roman::evaluate()
 588       *
 589       * @param mixed $aValue Number to convert
 590       * @param mixed $style Number indicating one of five possible forms
 591       *
 592       * @return array|string Roman numeral, or a string containing an error
 593       */
 594      public static function ROMAN($aValue, $style = 0)
 595      {
 596          return MathTrig\Roman::evaluate($aValue, $style);
 597      }
 598  
 599      /**
 600       * ROUNDUP.
 601       *
 602       * Rounds a number up to a specified number of decimal places
 603       *
 604       * @deprecated 1.17.0
 605       *      Use the up() method in the MathTrig\Round class instead
 606       * @see MathTrig\Round::up()
 607       *
 608       * @param array|float $number Number to round
 609       * @param array|int $digits Number of digits to which you want to round $number
 610       *
 611       * @return array|float|string Rounded Number, or a string containing an error
 612       */
 613      public static function ROUNDUP($number, $digits)
 614      {
 615          return MathTrig\Round::up($number, $digits);
 616      }
 617  
 618      /**
 619       * ROUNDDOWN.
 620       *
 621       * Rounds a number down to a specified number of decimal places
 622       *
 623       * @deprecated 1.17.0
 624       *      Use the down() method in the MathTrig\Round class instead
 625       * @see MathTrig\Round::down()
 626       *
 627       * @param array|float $number Number to round
 628       * @param array|int $digits Number of digits to which you want to round $number
 629       *
 630       * @return array|float|string Rounded Number, or a string containing an error
 631       */
 632      public static function ROUNDDOWN($number, $digits)
 633      {
 634          return MathTrig\Round::down($number, $digits);
 635      }
 636  
 637      /**
 638       * SERIESSUM.
 639       *
 640       * Returns the sum of a power series
 641       *
 642       * @deprecated 1.18.0
 643       *      Use the evaluate method in the MathTrig\SeriesSum class instead
 644       * @see MathTrig\SeriesSum::evaluate()
 645       *
 646       * @param mixed $x Input value
 647       * @param mixed $n Initial power
 648       * @param mixed $m Step
 649       * @param mixed[] $args An array of coefficients for the Data Series
 650       *
 651       * @return array|float|string The result, or a string containing an error
 652       */
 653      public static function SERIESSUM($x, $n, $m, ...$args)
 654      {
 655          return MathTrig\SeriesSum::evaluate($x, $n, $m, ...$args);
 656      }
 657  
 658      /**
 659       * SIGN.
 660       *
 661       * Determines the sign of a number. Returns 1 if the number is positive, zero (0)
 662       *        if the number is 0, and -1 if the number is negative.
 663       *
 664       * @deprecated 1.18.0
 665       *      Use the evaluate method in the MathTrig\Sign class instead
 666       * @see MathTrig\Sign::evaluate()
 667       *
 668       * @param array|float $number Number to round
 669       *
 670       * @return array|int|string sign value, or a string containing an error
 671       */
 672      public static function SIGN($number)
 673      {
 674          return MathTrig\Sign::evaluate($number);
 675      }
 676  
 677      /**
 678       * returnSign = returns 0/-1/+1.
 679       *
 680       * @deprecated 1.18.0
 681       *      Use the returnSign method in the MathTrig\Helpers class instead
 682       * @see MathTrig\Helpers::returnSign()
 683       */
 684      public static function returnSign(float $number): int
 685      {
 686          return MathTrig\Helpers::returnSign($number);
 687      }
 688  
 689      /**
 690       * SQRTPI.
 691       *
 692       * Returns the square root of (number * pi).
 693       *
 694       * @deprecated 1.18.0
 695       *      Use the pi method in the MathTrig\Sqrt class instead
 696       * @see MathTrig\Sqrt::sqrt()
 697       *
 698       * @param array|float $number Number
 699       *
 700       * @return array|float|string Square Root of Number * Pi, or a string containing an error
 701       */
 702      public static function SQRTPI($number)
 703      {
 704          return MathTrig\Sqrt::pi($number);
 705      }
 706  
 707      /**
 708       * SUBTOTAL.
 709       *
 710       * Returns a subtotal in a list or database.
 711       *
 712       * @deprecated 1.18.0
 713       *      Use the evaluate method in the MathTrig\Subtotal class instead
 714       * @see MathTrig\Subtotal::evaluate()
 715       *
 716       * @param int $functionType
 717       *            A number 1 to 11 that specifies which function to
 718       *                    use in calculating subtotals within a range
 719       *                    list
 720       *            Numbers 101 to 111 shadow the functions of 1 to 11
 721       *                    but ignore any values in the range that are
 722       *                    in hidden rows or columns
 723       * @param mixed[] $args A mixed data series of values
 724       *
 725       * @return float|string
 726       */
 727      public static function SUBTOTAL($functionType, ...$args)
 728      {
 729          return MathTrig\Subtotal::evaluate($functionType, ...$args);
 730      }
 731  
 732      /**
 733       * SUM.
 734       *
 735       * SUM computes the sum of all the values and cells referenced in the argument list.
 736       *
 737       * @deprecated 1.18.0
 738       *      Use the sumErroringStrings method in the MathTrig\Sum class instead
 739       * @see MathTrig\Sum::sumErroringStrings()
 740       *
 741       * Excel Function:
 742       *        SUM(value1[,value2[, ...]])
 743       *
 744       * @param mixed ...$args Data values
 745       *
 746       * @return float|string
 747       */
 748      public static function SUM(...$args)
 749      {
 750          return MathTrig\Sum::sumIgnoringStrings(...$args);
 751      }
 752  
 753      /**
 754       * SUMIF.
 755       *
 756       * Totals the values of cells that contain numbers within the list of arguments
 757       *
 758       * Excel Function:
 759       *        SUMIF(range, criteria, [sum_range])
 760       *
 761       * @deprecated 1.17.0
 762       *      Use the SUMIF() method in the Statistical\Conditional class instead
 763       * @see Statistical\Conditional::SUMIF()
 764       *
 765       * @param mixed $range Data values
 766       * @param string $criteria the criteria that defines which cells will be summed
 767       * @param mixed $sumRange
 768       *
 769       * @return null|float|string
 770       */
 771      public static function SUMIF($range, $criteria, $sumRange = [])
 772      {
 773          return Statistical\Conditional::SUMIF($range, $criteria, $sumRange);
 774      }
 775  
 776      /**
 777       * SUMIFS.
 778       *
 779       *    Totals the values of cells that contain numbers within the list of arguments
 780       *
 781       *    Excel Function:
 782       *        SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
 783       *
 784       * @deprecated 1.17.0
 785       *      Use the SUMIFS() method in the Statistical\Conditional class instead
 786       * @see Statistical\Conditional::SUMIFS()
 787       *
 788       * @param mixed $args Data values
 789       *
 790       * @return null|float|string
 791       */
 792      public static function SUMIFS(...$args)
 793      {
 794          return Statistical\Conditional::SUMIFS(...$args);
 795      }
 796  
 797      /**
 798       * SUMPRODUCT.
 799       *
 800       * Excel Function:
 801       *        SUMPRODUCT(value1[,value2[, ...]])
 802       *
 803       * @deprecated 1.18.0
 804       *      Use the product method in the MathTrig\Sum class instead
 805       * @see MathTrig\Sum::product()
 806       *
 807       * @param mixed ...$args Data values
 808       *
 809       * @return float|string The result, or a string containing an error
 810       */
 811      public static function SUMPRODUCT(...$args)
 812      {
 813          return MathTrig\Sum::product(...$args);
 814      }
 815  
 816      /**
 817       * SUMSQ.
 818       *
 819       * SUMSQ returns the sum of the squares of the arguments
 820       *
 821       * @deprecated 1.18.0
 822       *      Use the sumSquare method in the MathTrig\SumSquares class instead
 823       * @see MathTrig\SumSquares::sumSquare()
 824       *
 825       * Excel Function:
 826       *        SUMSQ(value1[,value2[, ...]])
 827       *
 828       * @param mixed ...$args Data values
 829       *
 830       * @return float|string
 831       */
 832      public static function SUMSQ(...$args)
 833      {
 834          return MathTrig\SumSquares::sumSquare(...$args);
 835      }
 836  
 837      /**
 838       * SUMX2MY2.
 839       *
 840       * @deprecated 1.18.0
 841       *     Use the sumXSquaredMinusYSquared method in the MathTrig\SumSquares class instead
 842       * @see MathTrig\SumSquares::sumXSquaredMinusYSquared()
 843       *
 844       * @param mixed[] $matrixData1 Matrix #1
 845       * @param mixed[] $matrixData2 Matrix #2
 846       *
 847       * @return float|string
 848       */
 849      public static function SUMX2MY2($matrixData1, $matrixData2)
 850      {
 851          return MathTrig\SumSquares::sumXSquaredMinusYSquared($matrixData1, $matrixData2);
 852      }
 853  
 854      /**
 855       * SUMX2PY2.
 856       *
 857       * @deprecated 1.18.0
 858       *     Use the sumXSquaredPlusYSquared method in the MathTrig\SumSquares class instead
 859       * @see MathTrig\SumSquares::sumXSquaredPlusYSquared()
 860       *
 861       * @param mixed[] $matrixData1 Matrix #1
 862       * @param mixed[] $matrixData2 Matrix #2
 863       *
 864       * @return float|string
 865       */
 866      public static function SUMX2PY2($matrixData1, $matrixData2)
 867      {
 868          return MathTrig\SumSquares::sumXSquaredPlusYSquared($matrixData1, $matrixData2);
 869      }
 870  
 871      /**
 872       * SUMXMY2.
 873       *
 874       * @deprecated 1.18.0
 875       *      Use the sumXMinusYSquared method in the MathTrig\SumSquares class instead
 876       * @see MathTrig\SumSquares::sumXMinusYSquared()
 877       *
 878       * @param mixed[] $matrixData1 Matrix #1
 879       * @param mixed[] $matrixData2 Matrix #2
 880       *
 881       * @return float|string
 882       */
 883      public static function SUMXMY2($matrixData1, $matrixData2)
 884      {
 885          return MathTrig\SumSquares::sumXMinusYSquared($matrixData1, $matrixData2);
 886      }
 887  
 888      /**
 889       * TRUNC.
 890       *
 891       * Truncates value to the number of fractional digits by number_digits.
 892       *
 893       * @deprecated 1.17.0
 894       *      Use the evaluate() method in the MathTrig\Trunc class instead
 895       * @see MathTrig\Trunc::evaluate()
 896       *
 897       * @param float $value
 898       * @param int $digits
 899       *
 900       * @return array|float|string Truncated value, or a string containing an error
 901       */
 902      public static function TRUNC($value = 0, $digits = 0)
 903      {
 904          return MathTrig\Trunc::evaluate($value, $digits);
 905      }
 906  
 907      /**
 908       * SEC.
 909       *
 910       * Returns the secant of an angle.
 911       *
 912       * @deprecated 1.18.0
 913       *      Use the sec method in the MathTrig\Trig\Secant class instead
 914       * @see MathTrig\Trig\Secant::sec()
 915       *
 916       * @param array|float $angle Number
 917       *
 918       * @return array|float|string The secant of the angle
 919       */
 920      public static function SEC($angle)
 921      {
 922          return MathTrig\Trig\Secant::sec($angle);
 923      }
 924  
 925      /**
 926       * SECH.
 927       *
 928       * Returns the hyperbolic secant of an angle.
 929       *
 930       * @deprecated 1.18.0
 931       *      Use the sech method in the MathTrig\Trig\Secant class instead
 932       * @see MathTrig\Trig\Secant::sech()
 933       *
 934       * @param array|float $angle Number
 935       *
 936       * @return array|float|string The hyperbolic secant of the angle
 937       */
 938      public static function SECH($angle)
 939      {
 940          return MathTrig\Trig\Secant::sech($angle);
 941      }
 942  
 943      /**
 944       * CSC.
 945       *
 946       * Returns the cosecant of an angle.
 947       *
 948       * @deprecated 1.18.0
 949       *      Use the csc method in the MathTrig\Trig\Cosecant class instead
 950       * @see MathTrig\Trig\Cosecant::csc()
 951       *
 952       * @param array|float $angle Number
 953       *
 954       * @return array|float|string The cosecant of the angle
 955       */
 956      public static function CSC($angle)
 957      {
 958          return MathTrig\Trig\Cosecant::csc($angle);
 959      }
 960  
 961      /**
 962       * CSCH.
 963       *
 964       * Returns the hyperbolic cosecant of an angle.
 965       *
 966       * @deprecated 1.18.0
 967       *      Use the csch method in the MathTrig\Trig\Cosecant class instead
 968       * @see MathTrig\Trig\Cosecant::csch()
 969       *
 970       * @param array|float $angle Number
 971       *
 972       * @return array|float|string The hyperbolic cosecant of the angle
 973       */
 974      public static function CSCH($angle)
 975      {
 976          return MathTrig\Trig\Cosecant::csch($angle);
 977      }
 978  
 979      /**
 980       * COT.
 981       *
 982       * Returns the cotangent of an angle.
 983       *
 984       * @deprecated 1.18.0
 985       *      Use the cot method in the MathTrig\Trig\Cotangent class instead
 986       * @see MathTrig\Trig\Cotangent::cot()
 987       *
 988       * @param array|float $angle Number
 989       *
 990       * @return array|float|string The cotangent of the angle
 991       */
 992      public static function COT($angle)
 993      {
 994          return MathTrig\Trig\Cotangent::cot($angle);
 995      }
 996  
 997      /**
 998       * COTH.
 999       *
1000       * Returns the hyperbolic cotangent of an angle.
1001       *
1002       * @deprecated 1.18.0
1003       *      Use the coth method in the MathTrig\Trig\Cotangent class instead
1004       * @see MathTrig\Trig\Cotangent::coth()
1005       *
1006       * @param array|float $angle Number
1007       *
1008       * @return array|float|string The hyperbolic cotangent of the angle
1009       */
1010      public static function COTH($angle)
1011      {
1012          return MathTrig\Trig\Cotangent::coth($angle);
1013      }
1014  
1015      /**
1016       * ACOT.
1017       *
1018       * Returns the arccotangent of a number.
1019       *
1020       * @deprecated 1.18.0
1021       *      Use the acot method in the MathTrig\Trig\Cotangent class instead
1022       * @see MathTrig\Trig\Cotangent::acot()
1023       *
1024       * @param array|float $number Number
1025       *
1026       * @return array|float|string The arccotangent of the number
1027       */
1028      public static function ACOT($number)
1029      {
1030          return MathTrig\Trig\Cotangent::acot($number);
1031      }
1032  
1033      /**
1034       * Return NAN or value depending on argument.
1035       *
1036       * @deprecated 1.18.0
1037       *      Use the numberOrNan method in the MathTrig\Helpers class instead
1038       * @see MathTrig\Helpers::numberOrNan()
1039       *
1040       * @param float $result Number
1041       *
1042       * @return float|string
1043       */
1044      public static function numberOrNan($result)
1045      {
1046          return MathTrig\Helpers::numberOrNan($result);
1047      }
1048  
1049      /**
1050       * ACOTH.
1051       *
1052       * Returns the hyperbolic arccotangent of a number.
1053       *
1054       * @deprecated 1.18.0
1055       *      Use the acoth method in the MathTrig\Trig\Cotangent class instead
1056       * @see MathTrig\Trig\Cotangent::acoth()
1057       *
1058       * @param array|float $number Number
1059       *
1060       * @return array|float|string The hyperbolic arccotangent of the number
1061       */
1062      public static function ACOTH($number)
1063      {
1064          return MathTrig\Trig\Cotangent::acoth($number);
1065      }
1066  
1067      /**
1068       * ROUND.
1069       *
1070       * Returns the result of builtin function round after validating args.
1071       *
1072       * @deprecated 1.17.0
1073       *      Use the round() method in the MathTrig\Round class instead
1074       * @see MathTrig\Round::round()
1075       *
1076       * @param array|mixed $number Should be numeric
1077       * @param array|mixed $precision Should be int
1078       *
1079       * @return array|float|string Rounded number
1080       */
1081      public static function builtinROUND($number, $precision)
1082      {
1083          return MathTrig\Round::round($number, $precision);
1084      }
1085  
1086      /**
1087       * ABS.
1088       *
1089       * Returns the result of builtin function abs after validating args.
1090       *
1091       * @deprecated 1.18.0
1092       *      Use the evaluate method in the MathTrig\Absolute class instead
1093       * @see MathTrig\Absolute::evaluate()
1094       *
1095       * @param array|mixed $number Should be numeric
1096       *
1097       * @return array|float|int|string Rounded number
1098       */
1099      public static function builtinABS($number)
1100      {
1101          return MathTrig\Absolute::evaluate($number);
1102      }
1103  
1104      /**
1105       * ACOS.
1106       *
1107       * @deprecated 1.18.0
1108       *      Use the acos method in the MathTrig\Trig\Cosine class instead
1109       * @see MathTrig\Trig\Cosine::acos()
1110       *
1111       * Returns the result of builtin function acos after validating args.
1112       *
1113       * @param array|float $number Should be numeric
1114       *
1115       * @return array|float|string Rounded number
1116       */
1117      public static function builtinACOS($number)
1118      {
1119          return MathTrig\Trig\Cosine::acos($number);
1120      }
1121  
1122      /**
1123       * ACOSH.
1124       *
1125       * Returns the result of builtin function acosh after validating args.
1126       *
1127       * @deprecated 1.18.0
1128       *      Use the acosh method in the MathTrig\Trig\Cosine class instead
1129       * @see MathTrig\Trig\Cosine::acosh()
1130       *
1131       * @param array|float $number Should be numeric
1132       *
1133       * @return array|float|string Rounded number
1134       */
1135      public static function builtinACOSH($number)
1136      {
1137          return MathTrig\Trig\Cosine::acosh($number);
1138      }
1139  
1140      /**
1141       * ASIN.
1142       *
1143       * Returns the result of builtin function asin after validating args.
1144       *
1145       * @deprecated 1.18.0
1146       *      Use the asin method in the MathTrig\Trig\Sine class instead
1147       * @see MathTrig\Trig\Sine::asin()
1148       *
1149       * @param array|float $number Should be numeric
1150       *
1151       * @return array|float|string Rounded number
1152       */
1153      public static function builtinASIN($number)
1154      {
1155          return MathTrig\Trig\Sine::asin($number);
1156      }
1157  
1158      /**
1159       * ASINH.
1160       *
1161       * Returns the result of builtin function asinh after validating args.
1162       *
1163       * @deprecated 1.18.0
1164       *      Use the asinh method in the MathTrig\Trig\Sine class instead
1165       * @see MathTrig\Trig\Sine::asinh()
1166       *
1167       * @param array|float $number Should be numeric
1168       *
1169       * @return array|float|string Rounded number
1170       */
1171      public static function builtinASINH($number)
1172      {
1173          return MathTrig\Trig\Sine::asinh($number);
1174      }
1175  
1176      /**
1177       * ATAN.
1178       *
1179       * Returns the result of builtin function atan after validating args.
1180       *
1181       * @deprecated 1.18.0
1182       *      Use the atan method in the MathTrig\Trig\Tangent class instead
1183       * @see MathTrig\Trig\Tangent::atan()
1184       *
1185       * @param array|float $number Should be numeric
1186       *
1187       * @return array|float|string Rounded number
1188       */
1189      public static function builtinATAN($number)
1190      {
1191          return MathTrig\Trig\Tangent::atan($number);
1192      }
1193  
1194      /**
1195       * ATANH.
1196       *
1197       * Returns the result of builtin function atanh after validating args.
1198       *
1199       * @deprecated 1.18.0
1200       *      Use the atanh method in the MathTrig\Trig\Tangent class instead
1201       * @see MathTrig\Trig\Tangent::atanh()
1202       *
1203       * @param array|float $number Should be numeric
1204       *
1205       * @return array|float|string Rounded number
1206       */
1207      public static function builtinATANH($number)
1208      {
1209          return MathTrig\Trig\Tangent::atanh($number);
1210      }
1211  
1212      /**
1213       * COS.
1214       *
1215       * Returns the result of builtin function cos after validating args.
1216       *
1217       * @deprecated 1.18.0
1218       *      Use the cos method in the MathTrig\Trig\Cosine class instead
1219       * @see MathTrig\Trig\Cosine::cos()
1220       *
1221       * @param array|mixed $number Should be numeric
1222       *
1223       * @return array|float|string Rounded number
1224       */
1225      public static function builtinCOS($number)
1226      {
1227          return MathTrig\Trig\Cosine::cos($number);
1228      }
1229  
1230      /**
1231       * COSH.
1232       *
1233       * Returns the result of builtin function cos after validating args.
1234       *
1235       * @deprecated 1.18.0
1236       *      Use the cosh method in the MathTrig\Trig\Cosine class instead
1237       * @see MathTrig\Trig\Cosine::cosh()
1238       *
1239       * @param array|mixed $number Should be numeric
1240       *
1241       * @return array|float|string Rounded number
1242       */
1243      public static function builtinCOSH($number)
1244      {
1245          return MathTrig\Trig\Cosine::cosh($number);
1246      }
1247  
1248      /**
1249       * DEGREES.
1250       *
1251       * Returns the result of builtin function rad2deg after validating args.
1252       *
1253       * @deprecated 1.18.0
1254       *      Use the toDegrees method in the MathTrig\Angle class instead
1255       * @see MathTrig\Angle::toDegrees()
1256       *
1257       * @param array|mixed $number Should be numeric
1258       *
1259       * @return array|float|string Rounded number
1260       */
1261      public static function builtinDEGREES($number)
1262      {
1263          return MathTrig\Angle::toDegrees($number);
1264      }
1265  
1266      /**
1267       * EXP.
1268       *
1269       * Returns the result of builtin function exp after validating args.
1270       *
1271       * @deprecated 1.18.0
1272       *      Use the evaluate method in the MathTrig\Exp class instead
1273       * @see MathTrig\Exp::evaluate()
1274       *
1275       * @param array|mixed $number Should be numeric
1276       *
1277       * @return array|float|string Rounded number
1278       */
1279      public static function builtinEXP($number)
1280      {
1281          return MathTrig\Exp::evaluate($number);
1282      }
1283  
1284      /**
1285       * LN.
1286       *
1287       * Returns the result of builtin function log after validating args.
1288       *
1289       * @deprecated 1.18.0
1290       *      Use the natural method in the MathTrig\Logarithms class instead
1291       * @see MathTrig\Logarithms::natural()
1292       *
1293       * @param mixed $number Should be numeric
1294       *
1295       * @return array|float|string Rounded number
1296       */
1297      public static function builtinLN($number)
1298      {
1299          return MathTrig\Logarithms::natural($number);
1300      }
1301  
1302      /**
1303       * LOG10.
1304       *
1305       * Returns the result of builtin function log after validating args.
1306       *
1307       * @deprecated 1.18.0
1308       *      Use the natural method in the MathTrig\Logarithms class instead
1309       * @see MathTrig\Logarithms::base10()
1310       *
1311       * @param mixed $number Should be numeric
1312       *
1313       * @return array|float|string Rounded number
1314       */
1315      public static function builtinLOG10($number)
1316      {
1317          return MathTrig\Logarithms::base10($number);
1318      }
1319  
1320      /**
1321       * RADIANS.
1322       *
1323       * Returns the result of builtin function deg2rad after validating args.
1324       *
1325       * @deprecated 1.18.0
1326       *      Use the toRadians method in the MathTrig\Angle class instead
1327       * @see MathTrig\Angle::toRadians()
1328       *
1329       * @param array|mixed $number Should be numeric
1330       *
1331       * @return array|float|string Rounded number
1332       */
1333      public static function builtinRADIANS($number)
1334      {
1335          return MathTrig\Angle::toRadians($number);
1336      }
1337  
1338      /**
1339       * SIN.
1340       *
1341       * Returns the result of builtin function sin after validating args.
1342       *
1343       * @deprecated 1.18.0
1344       *      Use the sin method in the MathTrig\Trig\Sine class instead
1345       * @see MathTrig\Trig\Sine::evaluate()
1346       *
1347       * @param array|mixed $number Should be numeric
1348       *
1349       * @return array|float|string sine
1350       */
1351      public static function builtinSIN($number)
1352      {
1353          return MathTrig\Trig\Sine::sin($number);
1354      }
1355  
1356      /**
1357       * SINH.
1358       *
1359       * Returns the result of builtin function sinh after validating args.
1360       *
1361       * @deprecated 1.18.0
1362       *      Use the sinh method in the MathTrig\Trig\Sine class instead
1363       * @see MathTrig\Trig\Sine::sinh()
1364       *
1365       * @param array|mixed $number Should be numeric
1366       *
1367       * @return array|float|string Rounded number
1368       */
1369      public static function builtinSINH($number)
1370      {
1371          return MathTrig\Trig\Sine::sinh($number);
1372      }
1373  
1374      /**
1375       * SQRT.
1376       *
1377       * Returns the result of builtin function sqrt after validating args.
1378       *
1379       * @deprecated 1.18.0
1380       *      Use the sqrt method in the MathTrig\Sqrt class instead
1381       * @see MathTrig\Sqrt::sqrt()
1382       *
1383       * @param array|mixed $number Should be numeric
1384       *
1385       * @return array|float|string Rounded number
1386       */
1387      public static function builtinSQRT($number)
1388      {
1389          return MathTrig\Sqrt::sqrt($number);
1390      }
1391  
1392      /**
1393       * TAN.
1394       *
1395       * Returns the result of builtin function tan after validating args.
1396       *
1397       * @deprecated 1.18.0
1398       *      Use the tan method in the MathTrig\Trig\Tangent class instead
1399       * @see MathTrig\Trig\Tangent::tan()
1400       *
1401       * @param array|mixed $number Should be numeric
1402       *
1403       * @return array|float|string Rounded number
1404       */
1405      public static function builtinTAN($number)
1406      {
1407          return MathTrig\Trig\Tangent::tan($number);
1408      }
1409  
1410      /**
1411       * TANH.
1412       *
1413       * Returns the result of builtin function sinh after validating args.
1414       *
1415       * @deprecated 1.18.0
1416       *      Use the tanh method in the MathTrig\Trig\Tangent class instead
1417       * @see MathTrig\Trig\Tangent::tanh()
1418       *
1419       * @param array|mixed $number Should be numeric
1420       *
1421       * @return array|float|string Rounded number
1422       */
1423      public static function builtinTANH($number)
1424      {
1425          return MathTrig\Trig\Tangent::tanh($number);
1426      }
1427  
1428      /**
1429       * Many functions accept null/false/true argument treated as 0/0/1.
1430       *
1431       * @deprecated 1.18.0
1432       *      Use the validateNumericNullBool method in the MathTrig\Helpers class instead
1433       * @see MathTrig\Helpers::validateNumericNullBool()
1434       *
1435       * @param mixed $number
1436       */
1437      public static function nullFalseTrueToNumber(&$number): void
1438      {
1439          $number = Functions::flattenSingleValue($number);
1440          if ($number === null) {
1441              $number = 0;
1442          } elseif (is_bool($number)) {
1443              $number = (int) $number;
1444          }
1445      }
1446  }