Source for file trendClass.php
Documentation is available at trendClass.php 
require_once PHPEXCEL_ROOT .  'PHPExcel/Shared/trend/linearBestFitClass.php';  
require_once PHPEXCEL_ROOT .  'PHPExcel/Shared/trend/logarithmicBestFitClass.php';  
require_once PHPEXCEL_ROOT .  'PHPExcel/Shared/trend/exponentialBestFitClass.php';  
require_once PHPEXCEL_ROOT .  'PHPExcel/Shared/trend/powerBestFitClass.php';  
require_once PHPEXCEL_ROOT .  'PHPExcel/Shared/trend/polynomialBestFitClass.php';  
    const TREND_LINEAR                =  'Linear';  
    const TREND_LOGARITHMIC            =  'Logarithmic';  
    const TREND_EXPONENTIAL            =  'Exponential';  
    const TREND_POWER                =  'Power';  
    const TREND_POLYNOMIAL_2        =  'Polynomial_2';  
    const TREND_POLYNOMIAL_3        =  'Polynomial_3';  
    const TREND_POLYNOMIAL_4        =  'Polynomial_4';  
    const TREND_POLYNOMIAL_5        =  'Polynomial_5';  
    const TREND_POLYNOMIAL_6        =  'Polynomial_6';  
    const TREND_BEST_FIT            =  'Bestfit';  
    const TREND_BEST_FIT_NO_POLY    =  'Bestfit_no_Polynomials';  
    private static $_trendTypes =  array( self::TREND_LINEAR,  
    private static $_trendTypePolyOrders =  array( self::TREND_POLYNOMIAL_2,  
                                                  self::TREND_POLYNOMIAL_3,  
                                                  self::TREND_POLYNOMIAL_4,  
                                                  self::TREND_POLYNOMIAL_5,  
    private static $_trendCache =  array();  
    public static function calculate($trendType= self::TREND_BEST_FIT, $yValues, $xValues= array(), $const= True) {  
        //    Calculate number of points in each dataset  
        //    Define X Values if necessary  
            //    Ensure both arrays of points are the same size  
            trigger_error("trend(): Number of elements in coordinate arrays do not match.", E_USER_ERROR);  
        //    Determine which trend method has been requested  
            //    Instantiate and return the class for the requested trend method  
            case self::TREND_LINEAR :   
            case self::TREND_LOGARITHMIC :   
            case self::TREND_EXPONENTIAL :   
                if (!isset (self::$_trendCache[$key])) {  
                    $className =  'PHPExcel_'. $trendType. '_Best_Fit';  
                    self::$_trendCache[$key] =  new $className($yValues,$xValues,$const);  
                return self::$_trendCache[$key];  
            case self::TREND_POLYNOMIAL_2    :   
            case self::TREND_POLYNOMIAL_3    :   
            case self::TREND_POLYNOMIAL_4    :   
            case self::TREND_POLYNOMIAL_5    :   
            case self::TREND_POLYNOMIAL_6    :   
                if (!isset (self::$_trendCache[$key])) {  
                    $order =  substr($trendType,- 1);  
                    self::$_trendCache[$key] =  new PHPExcel_Polynomial_Best_Fit($order,$yValues,$xValues,$const);  
                return self::$_trendCache[$key];  
            case self::TREND_BEST_FIT            :   
            case self::TREND_BEST_FIT_NO_POLY    :   
                //    If the request is to determine the best fit regression, then we test each trend line in turn  
                //    Start by generating an instance of each available trend method  
                foreach(self::$_trendTypes as $trendMethod) {  
                    $className =  'PHPExcel_'. $trendMethod. 'BestFit';  
                    $bestFit[$trendMethod] =  new $className($yValues,$xValues,$const);  
                    $bestFitValue[$trendMethod] =  $bestFit[$trendMethod]->getGoodnessOfFit();  
                if ($trendType !=  self::TREND_BEST_FIT_NO_POLY) {  
                    foreach(self::$_trendTypePolyOrders as $trendMethod) {  
                        $order =  substr($trendMethod,- 1);  
                        if ($bestFit[$trendMethod]->getError()) {  
                            unset ($bestFit[$trendMethod]); 
                            $bestFitValue[$trendMethod] =  $bestFit[$trendMethod]->getGoodnessOfFit();  
                //    Determine which of our trend lines is the best fit, and then we return the instance of that trend class  
                $bestFitType =  key($bestFitValue);  
                return $bestFit[$bestFitType];  
    }    //    function calculate()  
 
 
        
       |