You are here

public static function PHPExcel_Calculation_Engineering::BESSELJ in Loft Data Grids 6.2

Same name and namespace in other branches
  1. 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Engineering.php \PHPExcel_Calculation_Engineering::BESSELJ()

* BESSELJ * * Returns the Bessel function * * Excel Function: * BESSELJ(x,ord) * * @access public * @category Engineering Functions *

Parameters

float $x The value at which to evaluate the function.: * If x is nonnumeric, BESSELJ returns the #VALUE! error value. * @param integer $ord The order of the Bessel function. If n is not an integer, it is truncated. * If $ord is nonnumeric, BESSELJ returns the #VALUE! error value. * If $ord < 0, BESSELJ returns the #NUM! error value. * @return float *

2 calls to PHPExcel_Calculation_Engineering::BESSELJ()
PHPExcel_Calculation_Engineering::_Bessely0 in vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Engineering.php
PHPExcel_Calculation_Engineering::_Bessely1 in vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Engineering.php

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Engineering.php, line 848

Class

PHPExcel_Calculation_Engineering
PHPExcel_Calculation_Engineering

Code

public static function BESSELJ($x, $ord) {
  $x = is_null($x) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($x);
  $ord = is_null($ord) ? 0.0 : PHPExcel_Calculation_Functions::flattenSingleValue($ord);
  if (is_numeric($x) && is_numeric($ord)) {
    $ord = floor($ord);
    if ($ord < 0) {
      return PHPExcel_Calculation_Functions::NaN();
    }
    $fResult = 0;
    if (abs($x) <= 30) {
      $fResult = $fTerm = pow($x / 2, $ord) / PHPExcel_Calculation_MathTrig::FACT($ord);
      $ordK = 1;
      $fSqrX = $x * $x / -4;
      do {
        $fTerm *= $fSqrX;
        $fTerm /= $ordK * ($ordK + $ord);
        $fResult += $fTerm;
      } while (abs($fTerm) > 1.0E-12 && ++$ordK < 100);
    }
    else {
      $f_PI_DIV_2 = M_PI / 2;
      $f_PI_DIV_4 = M_PI / 4;
      $fXAbs = abs($x);
      $fResult = sqrt(M_2DIVPI / $fXAbs) * cos($fXAbs - $ord * $f_PI_DIV_2 - $f_PI_DIV_4);
      if ($ord & 1 && $x < 0) {
        $fResult = -$fResult;
      }
    }
    return is_nan($fResult) ? PHPExcel_Calculation_Functions::NaN() : $fResult;
  }
  return PHPExcel_Calculation_Functions::VALUE();
}